Delphi cxgrid中回车键光标移到下列


本文整理自网络,侵删。

 
在cxgrid中,如何获取当前列的索引号,按回车键光标移到下列 (50分)

yepemig (2006-05-30 11:19:26)



你的问题好简单,只是设一个属性的事情.

OptionsBehaviOr->GoToNextCellOnEnter:=True;



我再帮你完善一下.可以在焦点到了最后一列再回车时有下一行则移到下一行的第一列,没有下一行则新增记录并移到第一列

procedure TCUSTOMQRYFRM.MstGridDBTableViewEditKeyDown(

Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;

AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState);

begin

inherited;

if Key=VK_RETURN then begin

  if MstGridDBTableView.Controller.FocusedColumnIndex=MstGridDBTableView.VisibleColumnCount-1 then begin

    with MstGridDBTableView.DataController do begin

      if IsEof  then begin   // or (RecNo=RecordCount)

        MstGridDBTableView.DataController.Append;

      end else begin

        MstGridDBTableView.DataController.MoveBy(1);

      end;

      MstGridDBTableView.Controller.FocusedItemIndex:=-1;

    end;

  end;

end;

end;





yepemig (2006-05-30 11:41:06)



其实还可以更完善一点的.但我到现在还实现不了.

1. 如果焦到移到了某列.如果此列有下拉框之类的.就自动下拉,用户选择并回车后焦点移到下一列.

2.由于一般我们是自已设定列的properties为有下拉控件的.这时我可以用代码判断这列的properties是否有下拉进而实现第一点的工能.但是如果这个列的properties的下拉控件是运行时cxGrid自已默认设定的下拉控件(如字段是fkLookup类型的.cxGrid会自动在这列上设为下拉的).这时我就无法用代码判断这列的properties是不是有下拉了(我现在的能力不能做到).这就导致我不能实现第一点的功能.



在w1229的这个贴里希望抛砖引玉,能引起高手对改善cxGrid的录入操作问题的讨论.



w1229 (2006-06-01 12:03:36)



yepemig你好!把50分全部送给你.

非常感谢你对我的问题的回答,回答cxgrid控件的高手很少.

我看过一些软件,也想这样做:

当某个单元格获得焦点时,如果该列有固定选项(如:性别,男/女),就显示一个列表框之类的控件(男/女),只输入代码1/2,也可以输入男/女.

我认为需要在单元格获得焦点和失去焦点事件时分别处理.我不知道有没有单元格获得焦点和失去焦点的事件.

相关阅读 >>

Delphi 调用wmi信息判断系统师傅安装杀毒软件

Delphi 改变位图图片大小

Delphi 用 tbytesstream 类实现的读文件为十六进制字符的函数

Delphi setfileattributes 功能:修改文件属性

Delphi api: setwindowpos改变窗口的位置与状态

Delphi adoquery 运用

Delphi 隐藏任务栏程序,取消自动对齐和网格对齐

Delphi 转换一批.bmp 文件为 .jpg

Delphi 字符串加密解密(不支持中文)

Delphi xe10 手机端错误提示:detected problems with api compatibility (visit g.co/dev/appcompat for more info

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...