StringGridのEdit部分のExitイベントを取るには?

解決


たか  2003-09-13 07:57:42  No: 4811

StringGridを使用して入力チェックを行っているのですが、
次の行に移動するときにチェックを行うにはどうすればよいのでしょうか?

InplaceEditのOnExitって取れるのでしょうか?


Halbow  URL  2003-09-13 14:57:13  No: 4812

Halbow です。

>InplaceEditのOnExitって取れるのでしょうか?

InplaceEdit は StringGrid の子コントロールとして作られる Edit です。
Edit コントロールは、フォーカスを失うとき親コントロールに WM_COMMAND
メッセージを送ります。これを捕まえる事ができます。

以下のようにしてうまくいっています。

  public
    OriginalProc:TWndMethod;
    procedure SubClassProc(var Message:TMessage);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  OriginalProc := StringGrid1.WindowProc;
  StringGrid1.WindowProc := SubClassProc;
end;

procedure TForm1.SubClassProc(var Message: TMessage);
begin
  OriginalProc(Message);
  if (Message.Msg = WM_COMMAND) and (Message.WParamHi = EN_KILLFOCUS) then
    with StringGrid1 do
      Label1.Caption := Format('InplaceEdit OnExit at (%d,%d)',[Col,Row]);
end;


たか  2003-09-17 03:35:39  No: 4813

Halbow様
ありがとうございました。

このロジックでうまくいけそうです。

また、なにかありましたら、よろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加