当前位置:主页>仓库管理软件> 列表

cxGrid中如何把鼠标锁定在一行上,不能让它上下移动? 找商品进销存管理系统

记账软件版1楼: cxGrid中如何把鼠标锁定在一行上,不能让它上下移动?
我想实现的是,在浏览状态下用户可以上下移动记录,但执行"修改"后就把鼠标锁定在当前修改的记录上,直接执行"保存"后才解除锁定.

2楼: ADOQuery1.DisableControls; // 鎖定
...................
ADOQuery1.EnableControls; // 解鎖 如商品进销存管理系统

3楼: 不是这个意思,是要控制cxgrid在编辑状态下不能上下移动记录直到退出编辑状态

4楼: 自己寫代碼啊
在boforepost事件裡寫
if ADOQuery1.State in [dsedit] then
begin
//這個說明在修改。自己寫代碼
end
else
~~~~
大概就是這樣

5楼: 假设cxGrid对应的数据集是ADOQuery1,那么在ADOQuery1.BeforeScroll事件中添加代码可以实现控制,如:
if FormInEdit then
Abort;
其中FormInEdit是cxGrid所在窗体的私有变量,当“修改”数据时,设置为True,“保存”时,先设置此变量为False,然后提交。“取消”同理。

6楼: 非常感谢amao123,我试试看

记账软件版7楼: 我试了,amao123的方法在某些时候是可以的,不过会引发cxgrid的recordindex out of range的错误.

8楼: 在amao123的提示下,找到了解决方法了.


在TcxGridDBTableView的OnCanFocusRecord事件中写代码就行了.如下:
procedure TFrmBillType.tvBillTypesCanFocusRecord(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
var AAllow: Boolean);
begin
inherited;
if bUInEdit then
AAllow := false;
end;

9楼: 结贴

10楼: ~~~

11楼: 多人接受答案了。