我在网格的第一列中的那些复选框布局手动选择问题,其中全部都是在类对象中创建的。
我可以在第一行选择成功,但点击第二行时不会显示。
整列中的复选框似乎在随机挑选中失败,并且无法为每一行选择相同的内容。
编码:
define class chk_sel as checkbox
name = "chk_sel"
procedure init
this.value = 0
this.caption = ""
this.readonly = .f.
this.tabstop = .f.
endproc
enddefine
Define class frmpurc As Form
procedure init
For frm in _screen.Forms
if frm.name == "MyForm"
select "" as pick,supcode,item_desc,inv_no,po_no,line,acc_qty, ;
taxcode,acc_amt,net_tax,gros_amt from purc ;
into cursor tmpcur ;
where alltrim(inv_no) = alltrim(this.txt_search.value)
If NOT USED('tmpcur_')
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_
else
USE IN 'tmpcur_'
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_
endif
sele tmpcur_
frm.grid_list.recordsource = SPACE(0)
frm.grid_list.recordsource = "tmpcur_"
frm.grid_list.deletemark = .f.
frm.grid_list.readonly = .f.
frm.grid_list.column1.width = 25
frm.grid_list.column1.bound = .f.
frm.grid_list.column1.controlsource = "tmpcur_.pick"
frm.grid_list.column1.readonly = .f.
frm.grid_list.column1.text1.visible = .t.
frm.grid_list.column1.removeobject("text1")
frm.grid_list.column1.addobject("pick","chk_sel")
frm.grid_list.column1.currentcontrol = "pick"
frm.grid_list.column1.pick.visible = .t.
frm.grid_list.column1.pick.readonly = .f.
frm.grid_list.column1.pick.tabstop = .t.
frm.grid_list.column1.sparse = .f.
endif
endfor
endpro
enddefine
谢谢任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
对你的调整很少...你的for循环应该是FOR FOR EACH,否则,我有一个编译错误。
For EACH frm in _screen.Forms
将表打开为可编辑的另一个快捷方式是READWRITE子句...您可以确保在使用快捷语法查询之前关闭游标
* /由于SELECT(“someAlias”)将返回打开的工作区域 * /或如果未使用别名则为零,USE IN表示关闭表/别名 * /在给定的工作区域内。
use in select( "tmpcur" ) && pre-close your read-only cursor result
use in select( "tmpcur_" ) && pre-close your read-write version of cursor
* /现在,查询...首先,将“PICK”列更改为LOGICAL * /绑定到复选框控件的基础,而不是空格字符...... * /然后改变INTO条款......
select ;
.f. as pick,;
AllOtherFields ;
from ;
purc ;
where ;
alltrim(inv_no) = alltrim(this.txt_search.value) ;
into ;
cursor tmpcur
* /现在,只需在预先关闭时再次打开结果 * /如果在查询之前已经打开
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_
现在,你所缺少的是你的复选框控件的绑定。改变你的
frm.grid_list.column1.bound = .T.
通过设置为TRUE,表明您希望它绑定到每个单独的记录。
答案 1 :(得分:0)
非常感谢您的帮助,我能够解决它。检查最终绑定到单独的行。
我的最终代码中只进行了2次修改:
If NOT USED('tmpcur_')
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_
else
USE IN select('tmpcur_') /*Change*/
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_
endif
frm.grid_list.column1.bound = .t. /*It is bound to .f. in before */
对于最后提到的事情,我无法在我的光标后面放置readwrite子句,因为我使用的是迄今为止不支持它的Visual foxpro 6.0。