2015-05-28 34 views
0

我已經手動爲網格第一列中的複選框佈局挑選問題,其中所有這些都是在類對象中創建的。無法在網格中正確選取複選框

我能夠在第一排採摘成功,但它不會出現當第二排點擊。在整列

複選框似乎隨手拈,無法在相同的挑選各行要失敗。

編碼:

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

你一些調整...您的循環,應該是一個For Each,否則,我有一個編譯錯誤。

For EACH frm in _screen.Forms 

上打開表爲可編輯爲您的另一種快捷方式是READWRITE條款等,並可以保證鼠標與快捷語法查詢之前關閉

*/SELECT以來(「someAlias」)將返回它在 * /或零打開,如果不使用別名的工作區域,使用的國家,關閉表/別名 * /在給定的工作區。

use in select("tmpcur") && pre-close your read-only cursor result 
use in select("tmpcur_") && pre-close your read-write version of cursor 

* /現在,查詢......第一,「匹克」欄更改爲一個符合邏輯,因爲這是 * /對的,而不是一個空格字符綁定到CheckBox控件的基礎... * /然後改變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,您表示您希望它綁定到每個單獨的記錄。

+0

非常感謝您的幫助,我可以修復它。 – koklimabc

+0

對於最後提到的事情,我無法將readwrite子句放在我的光標後面,因爲我使用的是迄今爲止不支持它的Visual FoxPro 6.0。 – koklimabc

+0

@koklimabc,VFP 6實施的修訂代碼...仍然爲您簡化代碼。另外,點擊頂部的鏈接以獲取幫助 - >遊覽網站禮儀。不要根據提供的答案來回答問題,但請勾選幫助您解決問題的答案......答案的評論,如...... Bound = .T。修好了......謝謝。與發佈的全新回答相比較。 – DRapp

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 */ 

對於最後提到的事情,我無法把讀寫條款在我的光標的後面,因爲我使用的Visual FoxPro 6.0這使遠不支持它。

相關問題