我使用ADVStringGrid控件,比如有5列,其中第3列是不显示给界面上的,所以我设置了宽度为0,并且不能编辑。而且切换回车会自动跳到下一个单元格,直接进入编辑状态。
现在的问题是,我从第2列按下回车,会自动跳转到地4列,但是在OnCellChanging事件的参数中,OldCol,NewCol两个数值,不是我想要的OldCol=1,NewCol=3,而是OldCol=2,NewCol=3!!!
我的程序就是根据OldCol做判断的,这样的话,我的判断就错位了!我设置第3列为fixCol也不行,也不是我想要的2,这是为什么?如何才能获取正确的OldCol?
现在的问题是,我从第2列按下回车,会自动跳转到地4列,但是在OnCellChanging事件的参数中,OldCol,NewCol两个数值,不是我想要的OldCol=1,NewCol=3,而是OldCol=2,NewCol=3!!!
我的程序就是根据OldCol做判断的,这样的话,我的判断就错位了!我设置第3列为fixCol也不行,也不是我想要的2,这是为什么?如何才能获取正确的OldCol?
解决方案 »
- 让非主窗体最小化相当于程序最小化
- 传送AT指令给siemens TC35 TERMINATER有错,why???
- 怎样用delphi实现给paradox表加密码?急!!!
- 一个奇怪的问题,在一个窗体改变不能改变另外一个窗体里控件的内容??
- 请问如何程序操纵打印机在预览时或者打印时就是横向的?--在线等待!
- 应用程序服务器组件与其他MTS组件作为一个程序来开发好不好?
- 大家有谁知道DBChart的打印预览如何用代码在运行中调用?请帮小弟一把啊,谢谢啦!!
- 新年快乐!随机赠送100分!
- 请教各位一个简单的问题,怎样在Delphi应用中调用Exe文件
- 人民群众相信你的力量,关于如何彻底去除一个DCOM服务服
- 如何分割这个字符串?
- 希腊字母使ppRichEdit对齐失效
advstringAGrid我不了解,隐藏栏位是不是有其他更正确的方法,而不是设定width;比较笨的办法是,在此控件keydown事件中自己去控制cell焦点移动,比如可以判断,当焦点在第二列,且key=vk_return,则直接focus到第四列。——或者使用此法有其他问题?
如果使用hide方法,则col的索引就不正确了,
如果控制enter的话,同一行没问题,如果跨行就有问题了,因要设置grid.col和grid.row,所以执行了两次changing事件,不是一次的结果
——是不是隱藏的col沒有進入索引范圍?若一定要知道隱藏的col,或可通過其他標志判斷(比如設置tag)
"如果控制enter的话,同一行没问题,如果跨行就有问题了,因要设置grid.col和grid.row,所以执行了两次changing事件,不是一次的结果"
——1、先設置grid.col,然后再設置grid.row;
2、聲明一個全局變量如CurrColIndex,在OncellChanging中用于記錄NewCol,判斷兩個值不一樣時,則進入判斷體內執行,如:
if CurrColIndex<>NewCol then
begin
CurrColIndex := NewCol;
...
end;
這樣可避免OncellChanging里面計算動作被執行兩次。
不知這樣是否可以滿足你的要求?