H hyxic Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-17 #1 DBGrid在有数据的时候,点击是指响应OnClick事件,而不响应OnMuseDown,我想在点击数据的时候触发OnMuseDown事件,应该怎么做!谢谢了,只有这么多分了,都送上了!
K kaida Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-17 #2 DBGrid 本身就有 OnMuseDown, 没有 OnClick 啊。
K kaida Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-17 #4 点击DBGrid时先相应OnMuseDown,鼠标左键放开时才响应OnCellClick。
H hyxic Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-17 #5 有数据时点击数据区不响应OnMouseDown事件,只有点击空白处才响应,我现在是想点击数据区也相应OnMouseDown事件,应该怎么做,急急急急!
K kaida Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-17 #6 估计是 DBGrid 的 bug,换成 DBGridEh 即可。
M moyiying Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-17 #7 发送消息:sendmessage(DBGrid.handle,WM_MBUTTONDOWN,0,0)
H hyxic Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-18 #8 to moyiying:请问如何发送,在什么情况下发送?谢谢!
A ANiDelphi Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-18 #9 拦截WM_LBUTTONDOWN private SaveDBGridWndProc: TWnMethod; procedure NewDBGridWndProc(var Message: TMessage); procedure TForm1.FormCreate(Sender: TObject); begin SaveDBGridWndProc := DBGrid1.WindowProc; //保存原来的消息处理过程 DBGrid1.WindowProc := NewDBGridWndProc; //设定新的消息处理过程 end; procedure TForm1.NewDBGridWndProc(var Message: TMessage); begin if Message.Msg = WM_LBUTTONDOWN then //如果是左键按下,处理 begin end; SaveDBGridWndProc(Message); //调用原来的消息处理过程处理消息 end;
拦截WM_LBUTTONDOWN private SaveDBGridWndProc: TWnMethod; procedure NewDBGridWndProc(var Message: TMessage); procedure TForm1.FormCreate(Sender: TObject); begin SaveDBGridWndProc := DBGrid1.WindowProc; //保存原来的消息处理过程 DBGrid1.WindowProc := NewDBGridWndProc; //设定新的消息处理过程 end; procedure TForm1.NewDBGridWndProc(var Message: TMessage); begin if Message.Msg = WM_LBUTTONDOWN then //如果是左键按下,处理 begin end; SaveDBGridWndProc(Message); //调用原来的消息处理过程处理消息 end;
H hyxic Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-18 #10 感谢ANiDelphi,问题还没彻底解决(无论在什么地方按下都会相应,我只要求在DBGrid里有效)
D deardai Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-18 #11 oneditbutton事件下寫吧 if Uppercase(TDBGrid(Sender).SelectedField.FieldName)='P1' then GetP1data
A ANiDelphi Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-18 #12 只有DBGrid时会响应的,是不是在处理中打开了新窗口 改成下面就不会了。 procedure TForm1.NewDBGridWndProc(var Message: TMessage); begin SaveDBGridWndProc(Message); //调用原来的消息处理过程处理消息 if Message.Msg = WM_LBUTTONDOWN then //如果是左键按下,处理 begin ShowMessage(Format('鼠标在%d.%d按下', [Message.LParamLo, Message.LParamHi])); end; end;
只有DBGrid时会响应的,是不是在处理中打开了新窗口 改成下面就不会了。 procedure TForm1.NewDBGridWndProc(var Message: TMessage); begin SaveDBGridWndProc(Message); //调用原来的消息处理过程处理消息 if Message.Msg = WM_LBUTTONDOWN then //如果是左键按下,处理 begin ShowMessage(Format('鼠标在%d.%d按下', [Message.LParamLo, Message.LParamHi])); end; end;
H hyxic Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-19 #13 非常感谢ANiDelphi高手终于出现了,就是你,给你散分了!!!谢谢!