DxDbGrid ,最后一列按 ‘回车’时添加一行,焦点在新行行首,在线等待(50分)

  • 主题发起人 主题发起人 蒸发密令
  • 开始时间 开始时间

蒸发密令

Unregistered / Unconfirmed
GUEST, unregistred user!
[h1]DxDbGrid ,最后一列按 ‘回车’时添加一行,焦点在新行行首 [/h1],
 
关注,我也一直没找到方法,如何得到网格中的焦点
 
问题解决了
dxdbgrid 中的optionsbehavior 中 edgover...=true;
 
if DbGrid1.SelectedField 是最后一列 then
Dbgrid1.SelectedField 赋值为第一列
 
全面的解决方法
定义一个类的指针
TNewDbgrid=Class(dxDbgrid);
通过该类的指针访问dxDbgrid的保护属性
var
canvisible:boolean;
begin
canvisible:=true;
if (dxdbgrid1.FocusedColumn+1=dxdbgrid1.ColumnCount) and key=#13 then
TNewdbgrid(dxdbgrid1).SetFocusedNode(dxdbgrid1.FocusedNode.GetNext,0,canvisible);
end;

end;
 
按我这样肯定没问题,在每一列按回车时自动跳到下一列,
在最后一列回车则添加一行,焦点在新行第一列。

procedure TFormXxlr.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then //如果是一个Enter键盘
begin
with DBGrid1 do
begin
if selectedindex < (fieldcount -1) then //如果不是最后一个字段
selectedindex := selectedindex +1
else
begin
dbgrid1.DataSource.DataSet.Append;
selectedindex := 1;
end;
end;
end;
end;
 
多人接受答案了。
 
后退
顶部