在dbgrid中的onclick的事件不管双击dbgrid的什么位置都能激发事件,我现在想仅当双击dbgrid某一行时激发事件,怎么做???谢谢~~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    一个很挫的办法,判断
    if DBGrid1.DataSource.DataSet.Active=False then Exit;
    if DBGrid1.DataSource.DataSet.RecordCount<1 then Exit;
    不知道行不行,呵呵
      

  2.   

    可能是我没说明白啊,我先给dbgrid1创建一个ondbclick事件,ondbclick事件是双击dbgrid1中任何区域都能激发这个事件,比如双击列的名字或者双击dbgrid1的空白区域都能激发事件,我现在想双击数据行激发事件,怎么判断我双击的是dbgrid的哪个区域??
    to:konhon(优华)~~~~~
    能说的详细些吗????如何判断???
      

  3.   

    源代码示范如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, DB, ADODB;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        procedure DBGrid1DblClick(Sender: TObject);
        procedure DBGrid1TitleClick(Column: TColumn);
        procedure DBGrid1CellClick(Column: TColumn);
      private
        FClickCell:Boolean;  //判断点击的是格子里的数据还是标题
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
      if FClickCell then            //如果是格子
        ShowMessage('格子')
      else ShowMessage('不是格子'); //如果不是格子
      FClickCell:=False;            //执行完后将FClickCell初始为False
    end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
      FClickCell:=False;            //点击标题时
    end;procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      FClickCell:=True;             //点击格子时
    end;end.要写DBGrid中的3个事件:
    OnCellClick
    OnDblClick
    OnTitleClick
      

  4.   

    其实OnTitleClick这个事件可以省略。unit Unit1;interfaceuses
      Forms,Messages,Dialogs,Windows, DB, ADODB, Classes, Controls, Grids, DBGrids;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        procedure DBGrid1DblClick(Sender: TObject);
        procedure DBGrid1CellClick(Column: TColumn);
      private
        FClickCell:Boolean;  //判断点击的是格子里的数据还是标题
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
      if FClickCell then            //如果是格子
        ShowMessage('格子')
      else ShowMessage('不是格子'); //如果不是格子
      FClickCell:=False;            //执行完后将FClickCell初始为False
    end;procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      FClickCell:=True;             //点击格子时
    end;end.要写DBGrid中的2个事件:
    OnCellClick
    OnDblClick
      

  5.   

    在DBGridDblClick中加上条件判断就可以了