掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ウィンドウをドラッグしたいのですが (ID:1743)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
子クラスを作りたくないのであれば、WindowProcプロパティに、同様のプロシージャを代入してやればOKです。 type TForm1 = class(TForm) private OldWndProc: TWndMethod; procedure ComboBoxWindowMessage(var Msg: TMessage); end; procedure TForm1.FormCreate(Sender: TObject); begin OldWndProc := ComboBox1.WindowProc; ComboBox1.WindowProc := ComboBoxWindowMessage; end; procedure TForm1.ComboBoxWindowMessage(var Msg: TMessage); begin if Msg.Message = WM_MOUSEDOWN then begin { WM_MOUSEDOWNの処理を書く } end else begin OldWndProc(Message); { デフォルトの処理 } end; end; ただし、上の例の場合、ComboBox1に対してWindowProcを保存しているので、ComboBox2も同じように設定するには、ComboBox1.WindowProcとComboBox2.WindowProcをどう保存するか考えないといけません。 継承したクラスならば、WindowProcの初期値がWndProcなので、保存する必要はありません。継承していない場合は、WndProcがProtectedな関数なため、アクセスできないので保存する必要があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.