|
論文導(dǎo)讀:很多VFP初學(xué)者采取使用BROWSE命令或在文件夾下雙擊數(shù)據(jù)表文件的方法對數(shù)據(jù)表進(jìn)行瀏覽、查詢和修改數(shù)據(jù),但BROWSE命令操作界面呆板、不能脫離VFP的主窗口執(zhí)行、容易出錯(比如操作時不小心按了空格鍵,光標(biāo)所在處的內(nèi)容就被空格代替了)。設(shè)置表格的數(shù)據(jù)源類型recordsourcetype屬性為1(別名),數(shù)據(jù)源recordsource屬性為xsb,列數(shù)columncount屬性為xsb表的字段數(shù)16,刪除標(biāo)記deletemark屬性為.f.(不顯示刪除標(biāo)記),只讀屬性readonly為.t.(不允許用戶在表格中修改數(shù)據(jù)),并將列標(biāo)題用漢字描述(即表1中備注內(nèi)容),如column1.header1.caption值為“報到情況”等。 關(guān)鍵詞:VFP,Grid控件,屬性,設(shè)置技巧
很多VFP初學(xué)者采取使用BROWSE命令或在文件夾下雙擊數(shù)據(jù)表文件的方法對數(shù)據(jù)表進(jìn)行瀏覽、查詢和修改數(shù)據(jù),但BROWSE命令操作界面呆板、不能脫離VFP的主窗口執(zhí)行、容易出錯(比如操作時不小心按了空格鍵,光標(biāo)所在處的內(nèi)容就被空格代替了)。Grid表格控件是VFP表單的常用控件之一,能夠進(jìn)行再次編程,不僅操作界面美觀,而且方便靈活、效率高。本文以新生報到管理為例,介紹幾則Grid表格控件使用技巧。 設(shè)有學(xué)生表(xsb.dbf),表結(jié)構(gòu)如表1所示,建立表單文件,主要包括以下控件:1個表格控件(Grid1)、1個文本框、3個命令按鈕(查詢、報到、退出)等。發(fā)表論文。 1.設(shè)置表格基本屬性 設(shè)置表格的數(shù)據(jù)源類型recordsourcetype屬性為1(別名),數(shù)據(jù)源recordsource屬性為xsb,列數(shù)columncount屬性為xsb表的字段數(shù)16,刪除標(biāo)記deletemark屬性為.f.(不顯示刪除標(biāo)記),只讀屬性readonly為.t.(不允許用戶在表格中修改數(shù)據(jù)),并將列標(biāo)題用漢字描述(即表1中備注內(nèi)容),如column1.header1.caption值為“報到情況”等。 2.設(shè)置表格顯示顏色 為表格的行、列等內(nèi)容設(shè)置不同顏色,清晰、直觀,減少了操作失誤。 2.1設(shè)置表格列顯示顏色 為了區(qū)分不同列或重要列,方便用戶查看數(shù)據(jù),可以對不同列設(shè)置不同顏色以示區(qū)分。例如,對表格(grid1)的第1列、第6列進(jìn)行不同顏色區(qū)分,可在表格的初始化事件(init)中設(shè)置如下代碼: thisform.grid1.column1.backcolor=rgb(128,128,128) thisform.grid1.column1.forecolor=rgb(255,255,255) thisform.grid1.column6.backcolor=rgb(255,0,0) thisform.grid1.column6.forecolor=rgb(255,255,255) 2.2設(shè)置表格行顯示顏色 根據(jù)記錄的奇偶性,設(shè)置記錄隔行顯示顏色,在表單的初始化事件(init)事件中設(shè)置如下代碼: thisform.grid1.setall("DynamicBackColor","iif(mod(recn(),2)=0,rgb(255,255,0),rgb(255,255,255))") thisform.grid1.setall("DynamicForeColor","iif(mod(recn(),2)=0,rgb(255,0,0),rgb(0,0,0))") 2.3設(shè)置選定記錄顏色 對表格中選定數(shù)據(jù)設(shè)置不同背景顏色和前景顏色,以區(qū)分選中的記錄和非選中記錄。在表格的afterrowcolchange事件中設(shè)置如下代碼: a1=allt(str(recn())) this.setall("DynamicBackColor","iif(recn()=&a1,rgb(255,255,0),rgb(255,255,255))") this.setall("DynamicForeColor","iif(recn()=&a1,rgb(255,0,0),rgb(0,0,0))") thisform.refresh 3.改變表格顯示順序 由于已經(jīng)向xsb.dbf設(shè)置索引,故分別在表格控件相應(yīng)的列標(biāo)題中添加單擊(click)代碼,代碼內(nèi)容為改變xsb的索引文件,可以實(shí)現(xiàn)按指定標(biāo)題排序。以表格的考生號列為例,其列表題單擊事件(click)代碼如下: set orde to ksh thisform.refresh 4.拆分顯示表格 有時為了固定顯示表格中的一列或多列,可以拆分顯示表格,表格的partition屬性能實(shí)現(xiàn)這一功能。發(fā)表論文。當(dāng)partition的值為0時,即表格不拆分,當(dāng)partition大于0或指定具體值(如partition=150)時,表格拆分為左右兩個面板,左面板寬度為設(shè)定值。發(fā)表論文。 5、用程序代碼改變表的數(shù)據(jù) 本例采用用程序代碼來實(shí)現(xiàn)登記學(xué)生報到情況和報到時間兩項(xiàng)數(shù)據(jù)(即報到命令按鈕的單擊事件)。報到命令按鈕單擊事件(click)代碼如下: if bdqk='已報到' =messagebox('此生已登記報到!',48,'警告') else if messagebox('考生號:'+ksh+' 姓名:'+xm+' 性別:'+xbdm+chr(13)+chr(13); +'省市:'+ss+' 畢業(yè)學(xué)校:'+zxmc+' 錄取專業(yè):'+lqzymc+chr(13)+chr(13); +'是否登記此生報到?',36,'詢問')=6 repl bdqk with '已報到',bdsj with datetime() endi endi thisform.grid1.setfocus thisform.refresh 以上程序在VFP6.0中運(yùn)行通過。
|