cxGrid的焦点应用的问题!请高手不吝赐教!

grjs2004 2006-07-29 11:20:57
就是打开数据源后,cxGrid正常显示数据后,想焦点在指定某的一列的第一行,回车后就在同一列往下一行移动。

不知道这要怎么做!
请高手不吝赐教!
谢谢!
...全文
560 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
grjs2004 2006-08-03
  • 打赏
  • 举报
回复
有一点没有达到要求,就是在刚打开表时默认在某个字段的第一行!
zxkid 2006-08-03
  • 打赏
  • 举报
回复
TableView.Controller.FocusedItem := TableView.VisibleItems[1];
//TableView.Controller.FocusedItem := TableView.GetColumnByFieldName("字段名");
zxkid 2006-08-01
  • 打赏
  • 举报
回复
对了还要把GoToNextCellOnEnter设为false
TableView.OptionBehavior.GoToNextCellOnEnter := false;
zxkid 2006-08-01
  • 打赏
  • 举报
回复
处理一下EditKeyDown(显示内置编辑器时)和KeyDown(未显示内置编辑器时)事件,
没什么特别难的地方

procedure TFormItemList.tvResultEditKeyDown(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
begin
if not Sender.DataController.IsEOF then
begin
Sender.DataController.GotoNext;
Sender.Controller.EditingController.ShowEdit();
end;
Key := 0;
end;
end;

procedure TFormItemList.tvResultKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
begin
if not (Sender as TcxGridSite).GridView.DataController.IsEOF then
(Sender as TcxGridSite).GridView.DataController.GotoNext;
Key := 0;
end;
end;

//判断当前cxGrid是否有焦点
function IsGridFocused: Boolean;
var
AContainer: TcxCustomEdit;
begin
Result := Screen.ActiveControl is TcxGridSite;
if not Result then
begin
AContainer := nil;
if Screen.ActiveControl is TcxCustomEdit then
begin
AContainer := TcxCustomEdit(Screen.ActiveControl);
Result := True;
end
else
if (Screen.ActiveControl.Parent <> nil) and
(Screen.ActiveControl.Parent is TcxCustomEdit) then
begin
AContainer := TcxCustomEdit(Screen.ActiveControl.Parent);
Result := True;
end;
Result := Result and (AContainer.Parent is TcxGridSite);
end;
end;
grjs2004 2006-08-01
  • 打赏
  • 举报
回复
谢谢!
grjs2004 2006-07-31
  • 打赏
  • 举报
回复
就是焦点默认在某个字段的第一个记录,不一定是第一个字段,也就是不一定是第一列!

zxkid 2006-07-31
  • 打赏
  • 举报
回复
这个应该很容易啊 明天我帮你看看
wudi_1982 2006-07-31
  • 打赏
  • 举报
回复
没有用过这个东西啊!!!!
yz_34212248 2006-07-31
  • 打赏
  • 举报
回复
接分。。
cncharles 2006-07-30
  • 打赏
  • 举报
回复
某一列的第一行 是什么意思: 某一行的第1列吧.

把TableView

procedure TForm1.cxGrid1DBTableView1EditKeyDown(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word;
Shift: TShiftState);
begin
if Sender.DataController.IsEOF then
Sender.DataController.GotoFirst;
if Key = VK_Return then begin
Key := VK_Down;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
cxGrid1DBTableView1.DataController.FocusedRowIndex := 1;
cxGrid1DBTableView1.OptionsBehavior.AlwaysShowEditor := true;
end;

mdejtod 2006-07-30
  • 打赏
  • 举报
回复
dbgrideh有写过,在OnKeyDown里面写事件可以实现,楼主用的没用过~~~嘿嘿
zxc_zxczxc123 2006-07-29
  • 打赏
  • 举报
回复
创意、自由、灵活,独特的双数据源连接,全功能的表格组件,
超强的报表功能,适用于所有开发工具。

http://www.anylib.com
cncharles 2006-07-29
  • 打赏
  • 举报
回复
在TableView Object Inspector中, 把OptionBehavior的
FocusCellOnCycle, FocusCellOnTab, FocusFirstCellOnNewRecord,
GoToNextCellOnEnter都设为True. 如果要位用
DBTableView.DataController.FocusedRowIndex,
DBTableView.DataController.FocusedRecordIndex.
grjs2004 2006-07-29
  • 打赏
  • 举报
回复
想焦点在指定某一列的第一行,回车后就在同一列往下一行移动

还是没有解决!

希望知道的不吝赐教!

5,392

社区成员

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

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