一个表单上有GRID1,想一次同时选中多条记录如何编码。
1、如何表示这条记录被选中?
2、连续选中多条记录?
---------------------------------------------------------------
请参考:
一、如果GRID1表中记录不是太多(事实上,根据C-S模式,GRID1中一般不会有多少数据)
1、可以先创建一个临时表,这个临时表比原表多一个逻辑型字段FLDlSelected。
2、在GRID中增加类型为CHECKBOX的列COLUMN1,它的数据源就是字段FLDlSelected。
3、COLUMN1的属性SPARSE=.F.,COLUMN1下的CHECKBOX1的属性BACKSTYLE=0(透明)。
4、根据FLDlSelected的值可以判断用户选择了哪些数据。
二、在外部建立临时表,记录GRID1中所选择的记录号RECN(),根据临时表来判断用户所选择的数据。
当然在GRID1中必须在BeforeRowColChange、AfterRowColChange中写代码来突出效果。
---------------------------------------------------------------
要达到这种目的也不复杂,为表增加一个字段:SEL,逻辑型,在表格初始化时:
repl all sel with .f.
设置表格所有的列中的文本框的CLICK事件为:
repl sel with !sel
设置表格所有的列的dynamicbackcolor属性为:
iif(sel,高亮颜色对,正常颜色对)
设两个按钮,
全选:repl all sel with .t.
全消:repl all sel with .f.
以上操作没有考虑工作区,要保证所要操作的表在当前工作区
要想获得所选的记录:
sele 源表
copy to 目标表 for sel
---------------------------------------------------------------
还有一种方法,不过不太建议使用,用DELE命令,易造成数据意外损坏
设置表格的DELETEMARK为.t.
表格初始化:
reca all
set dele off
设置表格所有的列的dynamicbackcolor属性为:
iif(deleted(),高亮颜色对,正常颜色对)
设两个按钮,
全选:dele all
全消:reca all
以上操作没有考虑工作区,要保证所要操作的表在当前工作区
要想获得所选的记录:
sele 源表
copy to 目标表 for deleted()
清理代码:
reca all
为保证数据安全,在主程序启动时:
use 源表
reca all
use