TComboBox
テキストを入力するか、 Text プロパティを手動で設定すると、OnChange
イベントがトリガーされるように変更したいと思います。
現在のように、実行してもイベントComboBox.Text := 'blah'
は発生せずOnChange
、ボックスに入力しても発生しません。
私は子孫を作成しようとしましたがTComboBox
、これは正しいアプローチだと思いますが、イベントをトリガーするものを変更する方法がよくわかりません。
私の知る限りでは、コンボ ボックスに入力するとOnChange
イベントが発生します。しかし、text プロパティを変更しても変わらないのは事実です。
OnChange
コンボ ボックスを起動する方法は、メッセージを処理することですCM_TEXTCHANGED
。このハンドラはChange
メソッドを呼び出す必要があり、このメソッドOnChange
は割り当てられている場合は を呼び出します。
簡単な例として、インターポーザー クラスの実装を次に示します。
type
TComboBox = class(StdCtrls.TComboBox)
protected
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
end;
procedure TComboBox.CMTextChanged(var Message: TMessage);
begin
inherited;
Change;
end;