掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
StringGridのCellの値を変更した場合、変更があったことを知りたい。 (ID:8347)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
StringGrid をサブクラス化して、インプレースエディタのフォーカスの出入り を監視し、そのときのテキストを変更を検出できます。 新規で StringGrid1 と Memo1 を置いて以下のようにします。 type TForm1 = class(TForm) StringGrid1: TStringGrid; Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private 宣言 } public revCellStr:string; revCol,revRow:integer; OldProc:TWndMethod; procedure SubClassProc(var Msg: TMessage); end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin OldProc := StringGrid1.WindowProc; StringGrid1.WindowProc := SubClassProc; end; procedure TForm1.SubClassProc(var Msg: TMessage); begin OldProc(Msg); if Msg.Msg = WM_COMMAND then with StringGrid1 do case Msg.WParamHi of EN_SETFOCUS:begin revCol := Col; revRow := Row; revCellStr := Cells[revCol,revRow];// 変更前のテキストを保存 end; EN_KILLFOCUS:begin Memo1.Lines.Add(Format('before : %s After : %s', [revCellStr,Cells[revCol,revRow]])); end; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.