如何获得dbgrid的只是双击行的事件,双击dbgrid其它的区域不激发事件???

hudingchen 2005-11-07 05:32:28
在dbgrid中的onclick的事件不管双击dbgrid的什么位置都能激发事件,我现在想仅当双击dbgrid某一行时激发事件,怎么做???谢谢~~~~~~~~~~~~~~~~~~~~~~
...全文
274 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr-Chen 2005-11-14
  • 打赏
  • 举报
回复
在DBGridDblClick中加上条件判断就可以了
mastersky 2005-11-08
  • 打赏
  • 举报
回复
其实OnTitleClick这个事件可以省略。

unit Unit1;

interface

uses
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
mastersky 2005-11-08
  • 打赏
  • 举报
回复
源代码示范如下:

unit Unit1;

interface

uses
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
hudingchen 2005-11-08
  • 打赏
  • 举报
回复
可能是我没说明白啊,我先给dbgrid1创建一个ondbclick事件,ondbclick事件是双击dbgrid1中任何区域都能激发这个事件,比如双击列的名字或者双击dbgrid1的空白区域都能激发事件,我现在想双击数据行激发事件,怎么判断我双击的是dbgrid的哪个区域??
to:konhon(优华)~~~~~
能说的详细些吗????如何判断???
konhon 2005-11-08
  • 打赏
  • 举报
回复
加個判斷就行啦.
你先判斷當前行是否是需要觸發雙擊事件的行就行啦.
hmzgz81 2005-11-07
  • 打赏
  • 举报
回复
楼主是说在某行有 特殊数据(和别行区分的数据 )时才相应双击事件吗?
seekmydoom 2005-11-07
  • 打赏
  • 举报
回复
一个很挫的办法,判断
if DBGrid1.DataSource.DataSet.Active=False then Exit;
if DBGrid1.DataSource.DataSet.RecordCount<1 then Exit;
不知道行不行,呵呵

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧