冰
冰冷的雨
Unregistered / Unconfirmed
GUEST, unregistred user!
cxGrid中按向下箭头可以在末尾增加一行空记录。
我在窗口的btnAppend按钮btnAppendClick事件中写代码如下:
var
AKey: Word;
begin
gtvBaseCode.Controller.GoToLast(False);
//把焦点移动到Grid的最后
AKey := 40;
//向下键
SendMessage(gtvBaseCode.Control.Handle,WM_KEYDOWN,AKey,[]);
//模拟输入向下键
。。。
结果什么都没发生,在gtvBaseCodeKeyDown事件里设置断点进行调试,根本没触发该事件。
直接调用OnKeyDown方法,向下键是捕获了,新行还是没增加:
SendMessage(gtvBaseCode.Control.Handle,WM_KEYDOWN,AKey,[]);
//模拟输入向下键
改为:
gtvBaseCode.OnKeyDown(nil,AKey,[]);
看来是GoToLast的问题。可cxGrid帮助里是这样说的:
TcxCustomGridTableController.GoToLast
Moves focus to the last record (grouping row or data record) within the view
或者还有什么好办法实现按下按钮后在从表记录末增加一条空记录(不想在用户点击“保
存”之前把空记录添加到数据库中,所以不要用AddNew等操作底层数据的方法)?
我在窗口的btnAppend按钮btnAppendClick事件中写代码如下:
var
AKey: Word;
begin
gtvBaseCode.Controller.GoToLast(False);
//把焦点移动到Grid的最后
AKey := 40;
//向下键
SendMessage(gtvBaseCode.Control.Handle,WM_KEYDOWN,AKey,[]);
//模拟输入向下键
。。。
结果什么都没发生,在gtvBaseCodeKeyDown事件里设置断点进行调试,根本没触发该事件。
直接调用OnKeyDown方法,向下键是捕获了,新行还是没增加:
SendMessage(gtvBaseCode.Control.Handle,WM_KEYDOWN,AKey,[]);
//模拟输入向下键
改为:
gtvBaseCode.OnKeyDown(nil,AKey,[]);
看来是GoToLast的问题。可cxGrid帮助里是这样说的:
TcxCustomGridTableController.GoToLast
Moves focus to the last record (grouping row or data record) within the view
或者还有什么好办法实现按下按钮后在从表记录末增加一条空记录(不想在用户点击“保
存”之前把空记录添加到数据库中,所以不要用AddNew等操作底层数据的方法)?