過去レスを参考にDBGrid内をEnterで進めようとフォームにDBGridEXを配置しました。
実行時に「DBGRIDEX.ColumnAllの読込み中のエラー:プロパティColumnAllは存在しません」のエラーがでます。
対処方法を教えて下さい。
情報不足で回答不能...
そもそも ColumnAll なんて DBGrid にも無いんだけど?追加したのかな?
DBGridEx を配置してから DBGridEx のプロパティを ColumnAll をDBGridExのソースから削除して、DBGridExを再構築すると
DBGRIDEX.ColumnAllの読込み中のエラー:プロパティColumnAllは存在しません
出るんだけどね
(フォームには ColumnAllの情報が残ってるんだけどコンポーネントには存在しなくなる為)
フォームをエディタで表示してプロパティ ColumnAll を削除すれば出なくなるはず
そのフォームを読み直すと フォーム読み込み中のエラー が表示され
プロパティ ColumnAll は存在しません と表示されるはずだけど
[無視]すれば問題なし(プロパティが消える)
KHE00221さんありがとうございます。
入手したDBGridExにカスタマイズがかかっているみたいです。
フォームをエディタで表示してプロパティ ColumnAll を削除すればOKでした。
ですが、イベントうぃ変えたりすると復活してエラーになります。
正常なDBGridExに入替えた方がよさそうです。
とこれでDBGridExを配置して↓のアドバイスを参考にしてEnterで処理できるようにました。
https://www.petitmonte.com/bbs/answers?question_id=5320
項目編集中の場合に同じ場所にフォーカスがあたり、
再度Enterで先に進むみたいですが、一度のEnterで進めることができませんでしょうか。
DBGridを使用せずにDBGridExだけを使用したことが問題でしょうか。
>入手したDBGridExにカスタマイズがかかっているみたいです。
KHE00221さんのDBGridExコンポに誰かが ColumnAllプロパティを追加して、それを使ってるってコトなのかな?
そういう情報は最初に言わなきゃダメだよ。その誰かさんに聞いた方が早いんじゃないの?
>再度Enterで先に進むみたいですが、一度のEnterで進めることができませんでしょうか。
先に進むENTER は DBGrid 上の ENTER で
編集中のENTERは InplaceEditor 上でのENTER だから別物
InplaceEditor 上でのENTER を感知して先に進むようにすれば
出来ると思うけど
>再度Enterで先に進むみたいですが、一度のEnterで進めることができませんでしょうか。
先に進むENTER は DBGrid 上の ENTER で
編集中のENTERは InplaceEditor 上でのENTER だから別物
InplaceEditor 上でのENTER を感知して先に進むようにすれば
出来ると思うけど
厳しいご意見ですが、前に人から提供されたコンポーネントにDBGridExが含まれていました。
ですので仕様がよくわからず使用していました。
もう誰かさんとは連絡もとれません。
>InplaceEditor 上でのENTER を感知して先に進むようにすれば出来ると思うけど
とは?調べましたが難しいですね。
またDelphi上のコーディングでEnterを自動的に発生できるのでしょうか。
>先に進むENTER は DBGrid 上の ENTER で
>編集中のENTERは InplaceEditor 上でのENTER だから別物
>InplaceEditor 上でのENTER を感知して先に進むようにすれば
これは DBGridEx のイベント上では同じだね。
これでいいかな?
procedure TForm1.DBGridEx1KeyPress(Sender: TObject; var Key: Char);
begin
if Assigned(DBGridEx1.InplaceEditor) = True then
begin
if DBGridEx1.InplaceEditor.Visible = False then
begin
if Key=Char(13) then Key := Char(9);
end
else
begin
if Key=Char(13) then
begin
PostMessage(DBGridEx1.Handle,WM_KEYDOWN,9,0);
PostMessage(DBGridEx1.Handle,WM_KEYUP,9,0);
end;
end;
end
else
begin
if Key=Char(13) then Key := Char(9);
end;
end;
SnedMessageにすると次に移動と同時に入力状態になる
お好きな方をどうぞ
KHE00221さん、ありがとう・・・
本当に初心者には助かります。
ツイート | ![]() |