名前 題名 ▼ Mr.XRAYさん > ▼ OK牧場さん > > > TEditのヘルプを見て下さい.このプロパティにWindowProcというのがあります. > > これで,TEditがメッセージを処理する関数を指定しています.この関数の処理 > > ということなので,以下のコードの方がわかりやすいかも知れません. > これなら,Edit1SubClassProcはクラスメソッドとなりますので, > EditFlag,OriginalProcをクラス変数(Private等の)にできます. > EditFlagは,必要な処理をこのメソッド内で行えば不要でしょう. > > var > EditFlag: Boolean; > OriginalProc: TWndMethod; > > //==================================================================== > // Edit1のサブクラス化関数 > //==================================================================== > procedure TForm1.Edit1SubClassProc(var Message: TMessage); > begin > OriginalProc(Message); > case Message.Msg of > WM_SETTEXT: > begin > EditFlag:=False; > Panel1.Caption:='WM_SETTEXT'; > //他からEditに文字列が入力された時の処理 > end; > WM_KEYDOWN: > begin > EditFlag:=True; > Panel1.Caption:='KeyDown'; > //Edit1にキーボードからタイプした時の処理 > end; > end; > end; > //==================================================================== > // 送る側でEdit1を判定しやすい様にID=1000とする > //==================================================================== > procedure TForm1.FormCreate(Sender: TObject); > begin > SetWindowLong(Edit1.Handle,GWL_ID,1000); > //Edit1のサブクラス化 > OriginalProc:=Edit1.WindowProc; > Edit1.WindowProc:=Edit1SubClassProc; > end; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link