请问,如何进入dbgrid某一列后,光标直接显示闪动状态??

lantianhf25 2013-05-07 12:21:21
请问,如何进入dbgrid某一列后,光标直接显示闪动状态,其它效果一概不要,即选哪个单元格,鼠标在哪,光标直接在那闪动就行,请问该如何设置。
...全文
78 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
feiba7288 2013-05-08
引用 1 楼 feiba7288 的回复:
设置dgAlwaysShowEditor为True,鼠标点击进去即为编辑状态: DBGrid1.Options := DBGrid1.Options + [dgAlwaysShowEditor];
这个依然要这么设置!!!!
回复
feiba7288 2013-05-08
引用 2 楼 lantianhf25 的回复:
feiba7288的方法还是不行,点进单元格后,单元格的文本还是处于被选择状态,不是鼠标点哪,就直接停哪的那种
下面的代码可以,但一定要放在OnMouseUp事件里面才会响应!!!

procedure TfmMain.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  hEdit: THandle;
begin
  hEdit := FindWindowEx(DBGrid1.Handle, 0, 'TDBGridInplaceEdit', nil);
  if hEdit <> 0 then
  begin
    //SendMessage(hEdit, EM_SETSEL, 0, 0);//将光标移到最前
    SendMessage(hEdit, EM_SETSEL, $7FFFFFFF, Longint($FFFFFFFF));//将光标移到末尾
  end;
end;
回复
sololie 2013-05-08
dbgrid就只能是这样的,要想更细的设置,还是用第三方的grid吧,例如 cxDbGrid。 或者使用俺这种方式模拟 首先还是要设置 dbgrid1.Options := dbgrid1.Options + [dgAlwaysShowEditor]; 然后在dbgrid1的OnCellClick事件中用按键模拟:

procedure TForm1.dbgrid1CellClick(Column: TColumn);
begin
  keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0);
  keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0);
  keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), 0, 0);
  keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), KEYEVENTF_KEYUP, 0);
end;
回复
lantianhf25 2013-05-08
feiba7288的方法还是不行,点进单元格后,单元格的文本还是处于被选择状态,不是鼠标点哪,就直接停哪的那种
回复
feiba7288 2013-05-07
设置dgAlwaysShowEditor为True,鼠标点击进去即为编辑状态: DBGrid1.Options := DBGrid1.Options + [dgAlwaysShowEditor];
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4926

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2013-05-07 12:21
社区公告
暂无公告