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

lantianhf25 2013-05-07 12:21:21
请问,如何进入dbgrid某一列后,光标直接显示闪动状态,其它效果一概不要,即选哪个单元格,鼠标在哪,光标直接在那闪动就行,请问该如何设置。
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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];

5,388

社区成员

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

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