再讨论个小问题 DBGrid cbsEllipsis 不释放鼠标捕获(0分)

  • 主题发起人 主题发起人 太空鼠
  • 开始时间 开始时间

太空鼠

Unregistered / Unconfirmed
GUEST, unregistred user!
主要设置
edt1
TabOrder = 0
DBGrid1
TabOrder = 1
DataSource.DataSet.Active = True;//数据随便
Options.dgAlwaysShowEditor = True
Columns[0].ButtonStyle = cbsEllipsis
procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
Showmessage('a');
edt1.SetFocus;
end;

运行程序
1.鼠标点DBGrid1
触发DBGrid1Enter 关闭对话框 关闭窗体 正常
2.鼠标直接点DBGrid1.Columns[0] 里边的btnEllipsis
触发DBGrid1Enter 关闭对话框 关闭窗体 !!!!!这时又触发了DBGrid1Enter一次 再次关闭对话框 关闭窗体 正常了
可以再试试,第二种情况第一次关闭对话框后 btnEllipsis没有释放鼠标捕获(鼠标移到btnEllipsis上,不点左键时btnEllipsis的状态也是按下)
程序中偶尔会遇见这个巧合,提示对话框弹出两次,我调试的时候都烦了,就是一直没当回事
今天专门测试了一下,才知道还得强制释放鼠标捕获
 
再深的研究不进去了,试了几种方法,这样写没问题。
procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
Showmessage('a');
edt1.SetFocus;
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
 
后退
顶部