我想实现这样一个功能,分别有两个控件,比如是Grid1和CheckBox1控件
CheckBox1本身已经写好了OnClick事件
现在的功能是当我触发Grid1.oncell.Click事件后便停止CheckBox1.OnClick的事件。
然后单独点击CheckBox1时又触发CheckBox1.OnClick得事件。

解决方案 »

  1.   


    procedure TForm1.GridCellClick(sender : Tobject);
    begin
      CheckBox1.OnClick := nil;
    end;
    procedure TForm1.CheckBoxClick(sender : Tobject);
    begin
      CheckBox1.Onclick := _OnClick;  //_OnClick为你自己写的CheckBox事件
    end;
      

  2.   

    还有种方法:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, RzGrids, StdCtrls;type
      TForm1 = class(TForm)
        CheckBox1: TCheckBox;
        RzStringGrid1: TRzStringGrid;
        procedure RzStringGrid1Click(Sender: TObject);
        procedure CheckBox1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    var
      CanClick : Boolean = True;
    {$R *.dfm}procedure TForm1.RzStringGrid1Click(Sender: TObject);
    begin
      if not CanClick then Exit;
      ShowMessage('Click');
    end;procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
      CanClick := False;
    end;end.
      

  3.   

    不行啊!用了CheckBox1.OnClick := nil;后CheckBox1.Onclick就失效了。
      

  4.   

    在Grid的OnMouseLeave事件中写的话我没有办法执行GridCellClick了,主要是GridCellClick里还有别的要执行的代码。
      

  5.   

    你给CheckBox1准备两个OnClick,一个是原来的。
    另一个procedure TForm1.GridCellClick(sender : Tobject);
    begin
      CheckBox1.OnClick := XXX;
    end;
    procedure TForm1.XXX(sender : Tobject);
    begin
      CheckBox1.Onclick := CheckBoxClick;
    end;