如何禁止ComboBox的OnChange,然后再恢复?

解决方案 »

  1.   

    ComboBox1.onchange := nil;
    但我不能恢复了.
      

  2.   

    在form建立的事件中设置Comboxbox1.OnChange:=nil;这就可以了
      

  3.   


    恢复的话:自定一个参数和Combobox1.onchange事件相同的过程,如myonchange;声明:
      procedure myonchange(Sender:tobject);设置事件:
    Combobox1.onchange:=myonchange;
      

  4.   

    下面是我刚写的代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        ComboBox1: TComboBox;
        Button1: TButton;//禁止onchange;
        Button2: TButton;//启用onchange;
        procedure ComboBox1Change(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      showmessage('this is ok!');
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ComboBox1.OnChange := nil;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      ComboBox1.OnChange := ComboBox1Change;
    end;
      

  5.   

    编译通过,没按button1就行,按了就不行,按button2也没用.没报任何错误,只是没有期待的结果.
      

  6.   

    onchange事件的功能:在你改变combobox中的内容时它被触发。
    当你点击完第一按钮时,你在combobox中输入字符时会没有提示,说明onchange事件被屏蔽掉了.
    当你点击完第二按钮时,你在combobox中输入字符时会出现提示:'this is ok!';