1

TComboBoxテキストを入力するか、 Text プロパティを手動で設定すると、OnChangeイベントがトリガーされるように変更したいと思います。

現在のように、実行してもイベントComboBox.Text := 'blah'は発生せずOnChange、ボックスに入力しても発生しません。

私は子孫を作成しようとしましたがTComboBox、これは正しいアプローチだと思いますが、イベントをトリガーするものを変更する方法がよくわかりません。

4

1 に答える 1

6

私の知る限りでは、コンボ ボックスに入力すると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;
于 2013-03-27T17:54:34.557 に答える