怎么DBGRID的点两次ONTitleBtnClick事件,会触发ONDBClick事件??我是点标题排序,不过点快一点就触发了双击事件了,有没办法使双击标题也不能触发ONDBClick事件?只能点里面的内容才触发?
--------------------
回复人: yleiou(yl) ( ) 信誉:100 2004-7-2 11:16:08 得分: 0
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
ShowMessage('sadf');
end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.OnDblClick := nil;
ShowMessage('asdfasdfasd');
DBGrid1.OnDblClick := Form1.DBGrid1DblClick;
end;我这里实现
------------------------上面是人家帮我解答的
我刚试了一下行,不过试多几次又不行~
我的标题按钮事件是这样:procedure TfrmJ_edit.DBGridEh3TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
var sortstring:string; //排序列begin
dbgrideh3.OnDblClick:=nil;
……
……
……
dbgrideh3.OnDblClick:=DBGridEh3.onDblClick;
end;
-----------
双击事件是这样:
procedure TfrmJ_edit.DBGridEh3DblClick(Sender: TObject);
begin
suibutton8.OnClick(sender);
end;
--------------------
回复人: yleiou(yl) ( ) 信誉:100 2004-7-2 11:16:08 得分: 0
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
ShowMessage('sadf');
end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.OnDblClick := nil;
ShowMessage('asdfasdfasd');
DBGrid1.OnDblClick := Form1.DBGrid1DblClick;
end;我这里实现
------------------------上面是人家帮我解答的
我刚试了一下行,不过试多几次又不行~
我的标题按钮事件是这样:procedure TfrmJ_edit.DBGridEh3TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
var sortstring:string; //排序列begin
dbgrideh3.OnDblClick:=nil;
……
……
……
dbgrideh3.OnDblClick:=DBGridEh3.onDblClick;
end;
-----------
双击事件是这样:
procedure TfrmJ_edit.DBGridEh3DblClick(Sender: TObject);
begin
suibutton8.OnClick(sender);
end;
解决方案 »
- (急)DBGrid显示问题
- 需要一套设备管理系统的源代码,请帮忙。
- 双击DBGrid的滚动条会对数据源进行什么操作?
- @@为什么我的程序在关闭delphi的时候出错:Access violation at address 0083B551 in module ‘VCL70.BPL’.Read of address FFFFFFFF.
- 如何用Dephi实现 “断点续传” 的功能,具体一点好吗
- 关于dll和bpl的调用
- 关于dbgrid和datetimepicker的问题(在线等)
- 急急急!!!系统开发完了,打包时怎么定制BDE,我只要FOXBASE的数据库引擎!!
- 重写一个tpanel,如何能caption属性置为空?
- 请教!关于数据转换问题!
- 哪位大哥帮我看看这段代码为什么?通不过!!!!!(dll部分)
- 请问一下,如果没有了相关的的*.文件该如何解决
不过有一个窗体 双击标题按钮 会触发 DblClick事件另一个窗体,只要点击了标题按纽,DblClick事件就没了,再点下面的也不能触发了不知道什么原因
http://community.csdn.net/Expert/topic/3139/3139828.xml?temp=.8476068
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
ShowMessage('sadf');
end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.OnDblClick := nil;
ShowMessage('asdfasdfasd');
DBGrid1.OnDblClick := Form1.DBGrid1DblClick;
end;我这里实现
-------------
上面的测试之所以可以的原因是 点标题TitleClick的时候
是ShowMessage('asdfasdfasd');
焦点转到ShowMessage上来了,所以就没有双击标题栏的概念
--------
不信,你把程序改成这样试一下,
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.OnDblClick := nil;
// ShowMessage('asdfasdfasd'); //把这一段注释掉,或者执行别的,只要不让焦点从DBGrid1转移开来就行
DBGrid1.OnDblClick := Form1.DBGrid1DblClick;
end;
---
这样的话就双击标题按钮,也执行OnDblClick
begin
SHOwmessage('双击了DBGRIDEH');
end;procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
var a:integer;
begin
dbgrideh1.OnDblClick:=nil;
a:=a+1;
dbgrideh1.OnDblClick:=form1.DBGridEh1DblClick;
end;
双击标题的时候,还是会执行DblClick
private//Form类里添加
OldGridWnd : TWndMethod;
procedure NewGridWnd (var Message : TMessage);
public
——————procedure TForm1.NewGridWnd(var Message : TMessage);
begin
if Message.Msg = WM_LBUTTONDBLCLK then
Message.Msg := 0
else
OldGridWnd(Message);
end;procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
DBGrid1.WindowProc := OldGridWnd;
end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.WindowProc := NewGridWnd;
ADODataSet1.Sort := Column.FieldName + ' DESC';
end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldGridWnd := DBGrid1.WindowProc;
end;有个失误就是想使用双击时必须添加DBGrid1.WindowProc := OldGridWnd; 你先看看 共同探讨
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.WindowProc := NewGridWnd;
end;之后procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
DBGrid1.WindowProc := OldGridWnd;
SHOwmessage('双击了DBGRID');
end;
就没放应了
中判断如果是标题行双击就不执行代码不行吗?