是否有替代Delphi中任何操作引发的OnChange事件?

Ada*_*dam 7 delphi controls combobox delphi-xe

从Delphi XE文档: -

注意:OnChange仅在响应用户操作时发生.以编程方式更改Text属性不会触发OnChange事件.

当发生任何更改(用户或以编程方式)时,是否还有其他可用于TComboBox的事件?更改TComboBox的ItemIndex属性时,不会引发任何事件.

Dav*_*nan 8

组合框控件CM_TEXTCHANGED在文本被修改时发送.VCL控件选择不在此处显示事件,但您可以.有很多方法可以做到这一点.在这里,我将介绍快速和脏的插入器类:

TComboBox = class(Vcl.StdCtrls.TComboBox)
  procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
end;

procedure TComboBox.CMTextChanged(var Message: TMessage);
begin
  inherited;
  Beep;
end;
Run Code Online (Sandbox Code Playgroud)

当然,您希望在生产代码中以较少的方式执行此操作.

  • 如果您想将消息传递给后代进行默认处理,请不要忘记调用`inherited`.这当然取决于你的意图. (2认同)