版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章控件12.1輸出顯示類控件12.2輸入類控件12.3控制類對(duì)象12.4容器類對(duì)象12.5嵌入與鏈接類控件練習(xí)十二12.1輸出顯示類控件
12.1.1標(biāo)簽(Label)控件
標(biāo)簽控件是一種能在表單上顯示文本信息的輸出控件,常用作其它控件的提示或說(shuō)明,也用于顯示在程序運(yùn)行中的文本輸出信息。兩者不同之處在于:作為其它控件的提示或說(shuō)明時(shí),其顯示在表單運(yùn)行期間信息不變;作為程序運(yùn)行中的輸出文本信息時(shí),其顯示在表單運(yùn)行期間則是可變的。例如第11章的快速表單中各字段前的說(shuō)明,就一律用的是標(biāo)簽控件。
標(biāo)簽控件的常用屬性如表12.1所示。需要指出的是,表12.1中所列出的屬性,許多在其它控件中也常用到。關(guān)于Height、Left、Top、Width的單位,由ScaleMode確定,缺省為像素。
標(biāo)簽控件在表單運(yùn)行中是不能獲得焦點(diǎn)的,因此它顯示的內(nèi)容,即Caption屬性的值在表單運(yùn)行期間無(wú)法進(jìn)行交互式編輯。關(guān)于標(biāo)簽控件屬性的設(shè)置,可參考第11章中的幾個(gè)例子進(jìn)行學(xué)習(xí)和理解。12.1.2圖像(Image)控件
圖像控件是一個(gè)可顯示圖片的控件。VFP9.0支持多種類型的圖像文件,諸如?.bmp、.ico、.gif、.jpg、.cur、.ani、.tiff、
.png、.wmf、.emf等類文件。除高度、寬度、左邊界、頂邊界、背景樣式等通用屬性外,圖像控件還有Picture、Stretch和BorderStyle三個(gè)常用屬性,如表12.2所示。
例12.1
設(shè)計(jì)一個(gè)表單“ImageForm.scx”,含有一個(gè)圖像控件和一個(gè)按鈕。在設(shè)計(jì)階段,圖像控件的Picture屬性置為空,BorderStyle屬性置為1,Stretch屬性置為2,其它屬性適當(dāng)。按鈕控件的作用是保證表單能不斷顯示不同的照片。照片文件的名字為“照片n.jpg”(n=20,21,22,…,40)。
S1:CREATEFORMImageForm
S2:添加一個(gè)圖像控件Image1到表單中,并用屬性對(duì)話框設(shè)置其Picture為空、BorderStyle為1、Stretch為2、位置尺寸適當(dāng)。
S3:在表單右下角添加一個(gè)按鈕控件,標(biāo)題為“下一張照片”,其它屬性任意。
S4:編寫事件代碼。
S4-1:THISFORM.Load事件代碼:
PUBLICphoto &&照片計(jì)數(shù)器
Photo=20 &&第一張照片的編號(hào)
S4-2:THISFORM.Init事件代碼:
THISFORM.Image1.Picture="照片"+
ALLTRIM(STR(photo))+".jpg"
THISFORM.Caption="照片"+ALLTRIM(STR(photo))
S4-3:THISFORM.Command1.Click事件代碼:
Photo=photo+1
IFphoto<=40
THISFORM.Caption="顯示照片"+
ALLTRIM(STR(photo))
THISFORM.Image1.Picture="照片"+
ALLTRIM(STR(photo))+".jpg"
THISFORM.Refresh
ELSE
THISFORM.RELEASE
ENDIF
S5:DOFORMImageForm結(jié)果會(huì)在表單中依次顯示出名為“照片20.jpg”~“照片40.jpg”的照片。圖12.1給出了其中的三張照片的顯示結(jié)果。圖12.1Image屬性使用的實(shí)例結(jié)果12.1.3線條(Line)控件
線條控件是一個(gè)圖形控件。與圖像控件不同,圖形控件操作的對(duì)象是“形”,在表單運(yùn)行中通過(guò)該類控件可現(xiàn)場(chǎng)制作所需要的圖形,如畫線、畫幾何圖形等。
使用線條控件,可在表單的任意兩點(diǎn)畫出一條直線或一個(gè)矩形。
線條控件的常用屬性如表12.3所示。12.1.4形狀(Shape)控件
形狀控件也是一個(gè)圖形控件。使用它,可在表單上畫矩形、正方形、橢圓、圓等幾何圖形。形狀控件的常用屬性如表12.4所示。例12.2將“FormProperty.scx”復(fù)制成“ShapeForm.scx”,在它上面添加一條橫線和一個(gè)圓。
S1:COPYFILEFormProperty.*TOShapeForm.*
S2:MODIFYFORMShapeForm
S3:向表單添加一個(gè)線條控件“Line1”和一個(gè)形狀控件“Shape1”,控件位置通過(guò)鼠標(biāo)調(diào)整。
Line1.BorderColor=RGB(0,255,0),Line1.Height=0,其它屬性值適當(dāng)。
Shape1的主要屬性由表12.5給出,其它屬性值適當(dāng)。設(shè)計(jì)結(jié)果如圖12.2所示。圖12.2添加了線條和形狀控件的表單
12.2輸?入?類?控?件
12.2.1文本框(TextBox)控件
文本框控件是表單中最常用的控件之一。其作用是用來(lái)顯示或供用戶輸入文本信息。使用文本框控件,可以編輯內(nèi)存變量、數(shù)組或表的字段數(shù)據(jù)。它具有標(biāo)準(zhǔn)編輯功能,例如文本的剪切、復(fù)制、粘貼等。
1.文本框控件的屬性
除諸如邊界位置、大小尺寸等通用屬性外,文本框控件的常用屬性如表12.6所示。
2.文本框生成器
文本框生成器如圖12.3所示。利用它可以在VFP9.0的引導(dǎo)下方便地設(shè)置文本框的常用屬性。其使用步驟如下:
S1:打開文本框生成器。右擊文本框→“生成器”↓
文本框生成器,如圖12.3所示。
文本框生成器中有三個(gè)選項(xiàng)卡:“格式”、“樣式”和“值”。圖12.3顯示的是“格式”選項(xiàng)卡中的各選項(xiàng)。圖12.3文本框生成器“格式”選項(xiàng)卡
1)“格式”選項(xiàng)卡
格式選項(xiàng)卡包括:數(shù)據(jù)類型列表框、復(fù)選框、輸入掩碼列表框等。它們各自的作用如下:
●數(shù)據(jù)類型:用于設(shè)置Value屬性允許的數(shù)據(jù)類型:N、C、D、L。不同的數(shù)據(jù)類型,對(duì)于“格式”選項(xiàng)卡中的復(fù)選框選項(xiàng)不同。
●復(fù)選框:其各項(xiàng)的功能如表12.7所示。
●輸入掩碼:該列表框列出了各種輸入掩碼及其組合供用戶選擇,用于設(shè)置InputMark屬性。
2)“樣式”和“值”選項(xiàng)卡
圖12.4、圖12.5分別給出了“樣式”、“值”選項(xiàng)卡中的各選項(xiàng)?!皹邮健币脖蛔g為“風(fēng)格”。圖12.4文本框生成器的“風(fēng)格”選項(xiàng)卡圖12.5文本框生成器的“值”選項(xiàng)卡在“樣式”選項(xiàng)卡中可以設(shè)置特殊效果、邊框、字符對(duì)齊方式。其中:
●“特殊效果”單選按鈕:用于設(shè)置特定效果“SpecialEffect”屬性,選“三維”將該屬性設(shè)置為“3D”,選“平面”將該屬性設(shè)置為“Plain”。
●“邊框”單選項(xiàng)按鈕:用來(lái)設(shè)置邊界樣式BorderStyle屬性。
●“字符對(duì)齊”列表框:用來(lái)設(shè)置文本對(duì)齊方式Alignment屬性。
在“值”選項(xiàng)卡中,“字段名”列表框用來(lái)設(shè)置文本框控件的數(shù)據(jù)源ControlSource屬性。
注意:其它所有控件設(shè)計(jì)器均相似,其作用都是指導(dǎo)用戶設(shè)置其屬性,以后如無(wú)特殊需要將一掠而過(guò)不再詳解。
3.文本控件的常用方法程序
文本控件最常用的方法程序是設(shè)置焦點(diǎn)。當(dāng)一個(gè)對(duì)象被選定時(shí),則稱該對(duì)象獲得了焦點(diǎn)。文本框獲得焦點(diǎn)的標(biāo)志是在文本框內(nèi)出現(xiàn)了閃爍的光標(biāo);而命令控件獲得焦點(diǎn)的標(biāo)志則是命令按鈕上出現(xiàn)了虛線的方框。
對(duì)于控件對(duì)象,設(shè)置焦點(diǎn)的方法有三種。一是使用Tab鍵,將焦點(diǎn)逐步移動(dòng)到需要的文本框上;二是單擊控件對(duì)象;三是使用在程序代碼中調(diào)用設(shè)置焦點(diǎn)的方法程序SetFocus。調(diào)用SetFocus方法程序的格式為:
Object.SetFocus說(shuō)明:
①如果控件對(duì)象的Enabled或Visible屬性為?.F.,或者控件對(duì)象的When事件返回值為?.F.,則對(duì)象不能設(shè)置焦點(diǎn)。因此要為它設(shè)置焦點(diǎn),則事先必須設(shè)置它們?yōu)?.T.。
②對(duì)象一旦獲得焦點(diǎn),則任何操作都是針對(duì)該控件進(jìn)行的。
例如:
THISFORM.Text1.SetFocus
其功能是為當(dāng)前表單中的文本框Text1設(shè)置焦點(diǎn)。
4.文本框的常用事件
文本框的常用事件如表12.8所示。
例12.3
設(shè)計(jì)一個(gè)表單“TextForm.scx”,要求:
(1)當(dāng)單擊表單“TextForm.scx”任意處時(shí)被激活。
(2)“TextForm.scx”的標(biāo)題為“文本框功能演示”,它包含三個(gè)標(biāo)簽框、兩個(gè)文本框及一個(gè)命令按鈕。前兩個(gè)標(biāo)簽框的作用是對(duì)文本框的作用進(jìn)行注釋,后一個(gè)標(biāo)簽框的作用是顯示輸入操作員姓名和密碼后系統(tǒng)判斷是否正確的信息。
(3)編寫必要的事件代碼,使得操作員姓名和密碼最多輸入三次。如正確,則在標(biāo)簽3中顯示“您是一個(gè)合法用戶,歡迎使用本系統(tǒng)!”。如連輸三次姓名或密碼不正確,則在標(biāo)簽3中顯示“您是一個(gè)非法用戶,謝絕使用本系統(tǒng)”。三次之內(nèi),也應(yīng)在標(biāo)簽3中給出出錯(cuò)提示信息,允許重新輸入。
S1:CREATEFORMTextForm
S2:按題目要求為之添加三個(gè)標(biāo)簽控件、兩個(gè)文本框控件及一個(gè)命令按鈕控件??丶恢眠m當(dāng),主要屬性由表12.9給出,并將表單本身的“Caption”屬性設(shè)置為“學(xué)生成績(jī)管理系統(tǒng)”,“Name”屬性設(shè)置為“TextForm”。設(shè)計(jì)結(jié)果如圖12.6所示。圖12.6TextForm.scx設(shè)計(jì)結(jié)果
S3:為“TextForm.scx”添加代碼。
S3-1:Thisform.Load事件:
PUBLICc,opname,oppass,user,keyword
*c為輸入次數(shù)計(jì)數(shù)器,opname為操作員姓名,oppass為操作員密碼
*user為由文本框1要輸入的用戶姓名,keyword為由文本框2要輸入的用戶密碼
c=0
opname="student"&&假設(shè)機(jī)內(nèi)存儲(chǔ)的操作員姓名"student"
oppass="text"&&假設(shè)機(jī)內(nèi)存儲(chǔ)的操作員密碼為text
user=""
keyword=""
S3-2:ThisForm.Init事件:
thisform.text1.setfocus
thisform.text1.Value=user
thisform.text2.Value=keyword
S3-3:ThisForm.Text1.lostFocus事件:
user=This.value
S3-4:ThisForm.Text2.lostFocus事件:
keyword=This.value
S3-5:ThisForm.Command1.Click事件:
c=c+1
IFuser==opnameANDkeyword==oppass
ThisForm.label3.Caption="您是一個(gè)合法用戶,歡迎使用本系統(tǒng)!"
INKEY(2)&&暫停2秒,再繼續(xù)執(zhí)行下面的程序
ThisForm.Release
ELSE
IFc=3
ThisForm.label3.Caption="您是一個(gè)非法用戶,謝絕
使用本系統(tǒng)!"
INKEY(2)
ThisForm.Release
ELSE
ThisForm.Release
TextForm.Enabled=.T.
DOCASE
CASEuser#opnameANDkeyword==oppass
ThisForm.label3.Caption="操作員姓名有錯(cuò)誤,請(qǐng)另輸!"
INKEY(2)
ThisForm.text1.Value=""
ThisForm.label3.Caption=""
ThisForm.text1.SetFocus
CASEkeyword#oppassANDuser==opname
ThisForm.label3.Caption="操作員密碼有錯(cuò)誤,請(qǐng)另輸!"
INKEY(2)
ThisForm.text2.Value=""
ThisForm.label3.Caption=""
ThisForm.text2.SetFocus
CASEkeyword#oppassANDuser#opname
ThisForm.label3.Caption="操作員姓名和密碼都有錯(cuò)誤,請(qǐng)另輸!"
INKEY(2)
ThisForm.text1.Value=""
ThisForm.text2.Value=""
ThisForm.label3.Caption=""
ThisForm.text1.SetFocusENDCASE
ENDIF
ENDIF
S4:存盤并運(yùn)行表單。
在程序中,已假設(shè)給出的Opname為“student”,oppass為“text”。如果操作員姓名輸入正確,而操作員密碼輸入錯(cuò)誤,則運(yùn)行結(jié)果如圖12.7所示圖12.7TextForm.scx運(yùn)行結(jié)果之一12.2.2編輯框(EditBox)控件
編輯框是一個(gè)功能較齊全的文本編輯器。它不但可以像文本框一樣對(duì)數(shù)據(jù)進(jìn)行剪切、復(fù)制、粘貼,而且可帶有豎直滾動(dòng)條。它可以用來(lái)編輯字符型的數(shù)據(jù),包括字符型內(nèi)存變量、數(shù)據(jù)元素、字段或備注型字段。它和文本框的主要區(qū)別在于:
(1)編輯框只能用于輸入和編輯字符型數(shù)據(jù),而文本框卻可用于字符型、數(shù)值型、日期型和邏輯型四種數(shù)據(jù)。
(2)編輯框可輸入和編輯多段數(shù)據(jù),按回車鍵只能引起換行而不能終止輸入和編輯的進(jìn)行;而在文本框中只能輸入和編輯一段字符,按回車鍵將終止對(duì)文本框的操作。
(3)編輯框允許使用PageUp、PageDown鍵及豎直滾動(dòng)條來(lái)瀏覽文本,文本框則沒(méi)有此功能。
(4)在編輯框中,文本可根據(jù)編輯框的寬度而自動(dòng)換行。
編輯框的常用屬性如表12.10所示。
例12.4
設(shè)計(jì)一個(gè)表單“EditForm.scx”,為其添加2個(gè)編輯框和3個(gè)命令按鈕。命令按鈕1的作用是打開編輯框1,并在其中顯示一個(gè)文本文件的內(nèi)容,然后在其中選中某一部分。命令按鈕2的作用是將編輯框1中選定的文本內(nèi)容復(fù)制到編輯框2中并顯示和編輯文本。命令按鈕3的作用是退出表單。問(wèn)題分析:編輯框不能直接編輯文本文件。要編輯一個(gè)文本文件,應(yīng)借助于一個(gè)臨時(shí)表文件來(lái)進(jìn)行。該臨時(shí)表文件應(yīng)包含有備注型字段,首先將文本文件的內(nèi)容復(fù)制到備注字段中,然后將備注字段與編輯框綁定。這樣方可進(jìn)行文本內(nèi)容的編輯。編輯結(jié)束后將被指定字段的內(nèi)容存儲(chǔ)到文本文件中,則可以實(shí)現(xiàn)利用編輯框?qū)ξ谋疚募木庉?;如果將編輯的?nèi)容存入另一個(gè)備注字段,并將另一個(gè)編輯框與該字段綁定,則將在另一個(gè)編輯框中顯示復(fù)制的內(nèi)容?,F(xiàn)設(shè)一個(gè)臨時(shí)表“TempTable”,它有三個(gè)字段:C型字段“Filename”,用來(lái)存放文本文件的文件名;M型字段“Content”,用來(lái)存放文本文件的內(nèi)容;M型字段“CopyContent”,用來(lái)存放復(fù)制的文本內(nèi)容。設(shè)計(jì)表單:
S1:CREATEFORMEditForm
將“EidtForm.scx”的“Caption”屬性設(shè)置為“編輯框功能演示”,“Name”屬性設(shè)置為“EditForm”。
S2:添加2個(gè)編輯框和3個(gè)命令按鈕,按鈕標(biāo)題分別設(shè)為“打開”、“復(fù)制”、“退出”。
S3:編寫代碼。
S3-1Thisform.Load
RELEASEALLEXTENDED
PUBLICSelectContent
S3-2ThisForm.Init
ThisForm.Command2.enabled=.F.
ThisForm.Command3.enabled=.T.
ThisForm.Command1.enabled=.T.
S3-3ThisForm.Command1.Click
CREATECURSORTempTable(Filenamec(160),Contentm,CopyContentm)
APPENDBLANK
REPLACEtemptable.filenameWITHGETFILE(“txt”)
*打開“打開”對(duì)話框,選擇一個(gè)事先準(zhǔn)備好的文本文件,例如“編輯框控件特點(diǎn).txt”
APPENDMEMOtemptable.contentFROM
ALLTRIM(temptable.filename);
OVERWRITE&&將文件內(nèi)容寫入備注字段
ThisForm.Edit1.ControlSource="temptable.content"
*將Edit1與備注字段綁定,用來(lái)顯示選定的文件內(nèi)容
ThisForm.Edit1.setfocus
ThisForm.Refresh
ThisFmand2.Enabled=.T.
S3-4ThisForm.Text1.LostFocus
selectcontent=thisform.text1.SelText
S3-5ThisForm.Command2.Click
ThisForm.edit1.lostfocus
REPLACEtemptable.copycontentWITHselectcontent
&&將選中的內(nèi)容寫入備注字段
ThisForm.edit2.setfocus
ThisForm.edit2.Fontsize=12
ThisForm.edit2.backColor=RGB(0,0,255)
ThisForm.edit2.ForeColor=RGB(255,0,0)
ThisForm.Edit2.ControlSource="temptable.copycontent"
*將Edit2與備注字段綁定,用來(lái)顯示復(fù)制到Edit2的內(nèi)容
ThisForm.Refresh
S3-6ThisForm.Command3.Click
ThisForm.Release
S4:存盤并運(yùn)行表單。
S5:?jiǎn)螕簟敬蜷_】按鈕,選中文本文件“編輯框控件特點(diǎn).txt”,并選中要復(fù)制到文本框2中的內(nèi)容,結(jié)果如圖12.8所示。圖12.8文本框1中內(nèi)容被選定情況
S6:?jiǎn)螕簟緩?fù)制】按鈕,結(jié)果如圖12.9所示。
事實(shí)上,用戶可對(duì)圖12.9中的兩個(gè)文本框的內(nèi)容做任意修改,只不過(guò)文本框1修改后可復(fù)制到文本框2中,但反之不可。要正常退出該表單只要單擊【退出】按鈕即可。圖12.9將選定內(nèi)容復(fù)制到文本框2中12.2.3列表框(ListBox)控件
列表框提供了一個(gè)列表,一般情況下,列表框會(huì)顯示出若干條目,用戶可以通過(guò)滾動(dòng)條來(lái)瀏覽其它條目,然后選中所需要的條目。列表框的常用屬性如表12.11所示。
不過(guò),列表框有一個(gè)弱點(diǎn),就是只能選擇已有的條目而不能修改或輸入新的條目。在列表框中,最重要的屬性是選項(xiàng)條目的數(shù)據(jù)源類型“RowSuorceType”,它決定了條目數(shù)據(jù)源的屬性選擇。關(guān)于RowSourceType取值的詳細(xì)說(shuō)明,由表12.12給出。
例12.5
以表單“TextForm.scx”為基礎(chǔ)創(chuàng)建“ListForm.scx”,將其文本框“Text1”改為列表框“List1”,用于列表顯示操作員的姓名。該姓名來(lái)自于表文件Operator(Opnamec(8),Oppassc(6)),它有四條記錄。表單的功能是只要用戶選中四個(gè)操作員中的一個(gè),就應(yīng)正確地輸入其對(duì)應(yīng)的密碼,從而才能進(jìn)入系統(tǒng)。
S1:創(chuàng)建Operator.dbf。
CREATETABLEoperator(opnamec(8),oppassc(6))
INSERTINTOoperatorVALUES(“張學(xué)軍”,“123456”)
INSERTINTOoperatorVALUES(“王國(guó)勝”,“246135”)
INSERTINTOoperatorVALUES(“李富強(qiáng)”,“135246”)
INSERTINTOoperatorVALUES(“趙愛(ài)國(guó)”,“654321”)
S2:COPYFILETextForm.*TOListForm.*
S3:MODIFYFORMListForm在ListForm.scx中,將“Caption”屬性改為“列表框演示”,“Name”屬性改為“ListForm”,刪去文本框“Text1”,添加列表框“List1”。
S4:設(shè)置數(shù)據(jù)環(huán)境為“operator.dbf”。
S5:設(shè)置List1的屬性如下:
RowSourceType=2
&&數(shù)據(jù)源類型為表
RowSource="operator.dbf"&&數(shù)據(jù)源為表operator.dbf
ColumnCount=0
&&選第一個(gè)字段作為數(shù)據(jù)源
S6:編寫、修改代碼。
S6-1:ThisForm.Load代碼:
PUBLICc,keyword
C=0
keyword=""
S6-2:ThisForm.Init代碼:
ThisForm.text2.Value=keyword
S6-3:ThisForm.Text2.LostFocus代碼:
keyword=This.Value
S6-4:ThisForm.Command1.Click代碼:
c=c+1
IFkeyword==operator.oppass
ThisForm.label3.Caption="您是一個(gè)合法用戶,歡迎使用本系統(tǒng)!"
INKEY(2)
ThisForm.Release
ELSE
IFc=3
ThisForm.label3.Caption="您是一個(gè)非法用戶,謝絕使用本系統(tǒng)!"
INKEY(2)
ThisForm.Release
ELSE
ThisForm.label3.Caption="操作員密碼有錯(cuò)誤,請(qǐng)另輸!"
INKEY(2)
ThisForm.text2.Value=“”
ThisForm.label3.Caption=“”
ThisForm.Text2.SetFocus
ENDIF
ENDIF
S7:存盤并運(yùn)行。如在列表框中選“張學(xué)軍”,在文本框中輸入其密碼“123456”,會(huì)有如圖12.10所示的畫面出現(xiàn)。圖12.10列表框演示結(jié)果12.2.4組合框(ComboBox)控件
組合框是為克服列表框“只讀”的弱點(diǎn)而設(shè)計(jì)的另一種數(shù)據(jù)輸入控件。它是由列表框和文本框組合而成的一種新控件,既具有列表框的“只讀”功能,又兼?zhèn)湮谋究虻摹翱蓪憽惫δ堋?/p>
除無(wú)多條目選擇屬性“MultiSelect”外,上節(jié)介紹的列表框的其它各項(xiàng)屬性,組合框均具有。但組合框和列表框又有明顯的區(qū)別,主要表現(xiàn)如下:
(1)列表框任何時(shí)候都可以顯示多個(gè)條目,而組合框通常只有一個(gè)條目是可見的。用戶可以單擊組合框上的向下箭頭按鈕打開條目列表,以便從中選擇。
(2)組合框不提供多重選擇功能。
(3)組合框具有下拉式組合框和下拉式列表框兩種形式,可通過(guò)設(shè)置樣式屬性“Style”來(lái)選定。
●?Style=0:下拉式組合框。既可從列表中選擇,也可在編輯區(qū)內(nèi)輸入,輸入的內(nèi)容從“Text”屬性中獲得。
●?Style=2:下拉式列表框。僅能從列表框中選擇,即具有類似于列表框的功能。
例12.6
以表單“ListForm.scx”為基礎(chǔ)創(chuàng)建“ComboForm.scx”,將其列表框“List1”改為組合框“Combo1”,用于列表顯示操作員的姓名。表單的功能不變。
S1:COPYFILEListForm.*TOComboForm.*
S2:MODIFYFORMComboForm
在“ComboForm.scx”中,將“Caption”屬性改為“組合框功能演示”,“Name”屬性改為“ComboForm”,刪去列表框“List1”,添加組合框“Combo1”。
S3:設(shè)置“Combo1”的屬性如下:
Style=0&&下拉式組合框
RowSourceType=2
&&數(shù)據(jù)源類型為表
RowSource="Operator"&&數(shù)據(jù)源為表:Operator.dbf
ColumnCount=0
&&選第1個(gè)字段作為數(shù)據(jù)源
S4:修改代碼。將ThisForm.Combo1.LostFocus的代碼
寫為:
User=This.Value
其它代碼均不變。
S5:存盤并運(yùn)行,會(huì)產(chǎn)生與例12.5相類似的結(jié)果,只是此時(shí)列表框已被組合框代替。
12.2.5微調(diào)(Spinner)控件
微調(diào)控件主要用來(lái)接收一定范圍的數(shù)據(jù)。它既允許由鍵盤輸入數(shù)據(jù),也允許通過(guò)使用微調(diào)控件所具有的向上/向下箭頭對(duì)微調(diào)控件中的當(dāng)前值進(jìn)行增減操作。
微調(diào)控件的主要屬性如表12.13所示。微調(diào)控件的常用事件有兩個(gè),即“DownClick”和“UpClick”。DownClick在單擊向下箭頭按鈕時(shí)觸發(fā);UpClick在單擊向上箭頭按鈕時(shí)觸發(fā)。
例12.7
創(chuàng)建一個(gè)“SpinnerForm.scx”,用來(lái)顯示從-180°到180°之間各個(gè)角度的正弦值。
S1:CREATEFORMSpinnerForm
S2:向SpinnerForm.scx中添加一個(gè)標(biāo)簽框和一個(gè)微調(diào)框。微調(diào)框的位置位于標(biāo)簽框的右側(cè),高度以能完整顯示出兩個(gè)上/下箭頭按鈕為宜,寬度以可顯示出角度數(shù)值為宜。標(biāo)簽框和微調(diào)框高度一致。設(shè)置微調(diào)框的屬性如下:
KeyBoardHighValue=180
KeyBoardLowValue=-180
SpinnerHighValue=180
SpinnerLowValue=-180
Increment=1
S3:編寫代碼。
S3-1:Thisform.Init
ThisForm.Caption="微調(diào)控件功能演示"
WITHTHISFORM.Label1
.Caption=""
.AutoSize=.T.
.Fontname=“楷體”
.FontSize=18
ENDWITH
ThisForm.Spinner1.Value=0
Thisform.Label1.Caption="Sin("+STR(0,1)
+"°)=
"+STR(0,10,7)
S3-2:Thisform.Spinner1.UpClick
v=Thisform.Spinner1.Value
Sinv=sin(v*pi()/180)
Thisform.Label1.Caption="Sin("+ALLTRIM(STR(V))
+"°)="+STR(sinv,10,7)
Thisform.Refresh
S3-3:Thisform.Spinner1.DownClick
V=Thisform.Spinner1.Value
Sinv=sin(v*pi()/180)
Thisform.Label1.Caption=“Sin(”+ALLTRIM(STR(V))
+“°)=”+STR(sinv,10,7)
Thisform.Refresh
S4:存盤并運(yùn)行,會(huì)得到不同角度的正弦值。這里給出當(dāng)Spinner1.Value通過(guò)微調(diào)框分別調(diào)至30°、120°、-45°時(shí)的運(yùn)行結(jié)果,如圖12.11所示。圖12.11微調(diào)框功能演示結(jié)果12.2.6復(fù)選框(CheckBox)控件
復(fù)選框控件用于標(biāo)識(shí)一個(gè)變量的兩種狀態(tài),為.T.時(shí)表示選中,為.F.時(shí)表示未選中。當(dāng)處于選中狀態(tài)時(shí),復(fù)選框內(nèi)顯示“”,未選中則復(fù)選框?yàn)榭瞻住?/p>
復(fù)選框控件屬于綁定型控件,常用來(lái)顯示或保存表中的邏輯型字段。將復(fù)選框與表的某邏輯型字段綁定后,將會(huì)有三種狀態(tài),其含義如下:
●?0(默認(rèn)值):未選中。表示記錄的該邏輯型字段的值為假(.F.)。
●?1:選中。表示記錄的該邏輯型字段的值為真(.T.)。
●?2:灰色。表示記錄的該邏輯型字段的值為空(.NULL.),僅在代碼中使用。常用的復(fù)選框?qū)傩杂蠧aption、AutoSize、BackStyle、ControlSource、Enabled等。
例12.8
創(chuàng)建“CkeckForm.scx”,用來(lái)改變標(biāo)簽框“Caption”屬性的顯示。
S1:CREATEFORMCheckForm
將其“Caption”屬性設(shè)為“復(fù)選框功能演示”。
S2:添加一個(gè)標(biāo)簽框,Caption=“喜迎奧運(yùn)盛會(huì),構(gòu)建和諧世界!”。
S3:添加四個(gè)復(fù)選框,標(biāo)題Caption分別為“華文新魏”、“斜體”、“粗體”、“下劃線”。
S4:添加一個(gè)微調(diào)框,用來(lái)改變字的大小。Caption=“字號(hào)調(diào)整”。
S5:編寫代碼。
S5-1:ThisForm.Init
WithThisForm.Spinner1
.KeyBoardHighValue=24
.KeyBoardLowValue=4
.SpinnerHighValue=24
.SpinnerLowValue=4
.Increment=1
.Value=9
ENDWITH
S5-2:Thisform.Check1.Click
IfThis.Value=1
Thisform.Label1.FontName="華文新魏"
Else
Thisform.Label1.FontName="宋體"
Endif
S5-3:Thisform.Check2.Click
IfThis.Value=1
Thisform.Label1.FontItalic=.T.
Else
Thisform.Label1.FontItalic=.F.
Endif
S5-4:Thisform.Check3.Click
IfThis.Value=1
Thisform.Label1.FontBold=.T.
Else
Thisform.Label1.FontBold=.F.
Endif
S5-5:Thisform.Check4.Click
IfThis.Value=1
Thisform.Label1.FontUnderline=.T.
Else
Thisform.Label1.FontUnderline=.F.
Endif
S5-6:Thisform.Spinner1.UpClick
Thisform.Label1.Fontsize=Thisform.Spinner1.Value
Thisform.Refsheh
S5-7:Thisform.Spinner1.DownClick
Thisform.Label1.Fontsize=Thisform.Spinner1.Value
S6:存盤并運(yùn)行。圖12.12給出了僅選兩項(xiàng)和四項(xiàng)全選且Spinner1.Value=24時(shí)的結(jié)果。
這里之所以不稱為控制類控件而稱為控制類對(duì)象,其原因是命令按鈕組內(nèi)可以包含若干個(gè)命令按鈕,因此它不是控件而是容器,但不管是控件還是容器,它們都是對(duì)象。VFP的控制類對(duì)象主要有命令按鈕、命令按鈕組、選項(xiàng)組和定時(shí)器。圖12.12復(fù)選框功能演示結(jié)果12.3控制類對(duì)象
12.3.1命令按鈕(CommandButton)控件
命令按鈕控件是VFP中最常用的一種控件。其功能是當(dāng)用戶單擊、雙擊或右擊該類控件時(shí)將觸發(fā)對(duì)應(yīng)的事件完成特定的任務(wù),前面已接觸了許多使用它的例子。
1.命令按鈕控件的常用屬性
命令按鈕控件的屬性除基本屬性AutoSize、Enabled、FontSize、FontColor、Visible等外,常用的其它屬性如表12.14所示。
2.命令按鈕控件的常用事件
命令按鈕控件的常用事件如表12.15所示。
例12.9
創(chuàng)建“CommandForm.scx”,用來(lái)逐條顯示“xsjbqkb.dbf”的記錄。
S1:CREATEFORMCommandForm
將其“Caption”屬性設(shè)為“命令按鈕功能演示”。
S2:添加一個(gè)標(biāo)簽控件,Caption=“學(xué)生基本情況”,Autosize=.T.,F(xiàn)ontSize=24,其余屬性值適當(dāng)。
S3:設(shè)置數(shù)據(jù)環(huán)境為“xsjbqkb.dbf”。
S4:按住數(shù)據(jù)環(huán)境中表“xsjbqkb”的“字段”圖標(biāo),將其拖入表單后釋放。適當(dāng)調(diào)整各控件的位置及大小。
S5:為表單添加五個(gè)按鈕,標(biāo)題分別為:“第一條”、“下一條”、“上一條”、“最后一條”、“退出”。表單的設(shè)計(jì)結(jié)果如圖12.13所示。圖12.13命令按鈕功能演示表單設(shè)計(jì)結(jié)果
S6:編寫代碼。
S6-1:Thisform.Command1.Click
GOTOP
This.Enabled=.F.
Thisform.Command2.Enabled=.T.
Thisform.Command3.Enabled=.F.
Thisform.Command4.Enabled=.T.
Thisform.Refresh
S6-2:Thisform.Command2.Click
IFRECNO()<RECCOUNT()
SKIP
Thisform.Refresh
ELSE
This.Enabled=.F.
Thisform.Command4.Enabled=.F.
ENDIF
Thisform.Command1.Enabled=.T.
Thisform.Command3.Enabled=.T.
S6-3:Thisform.Command3.Click
IFRECNO()>1
SKIP-1
Thisform.Refresh
ELSE
This.Enabled=.F.
Thisform.Command1.Enabled=.F.
ENDIF
Thisform.Command2.Enabled=.T.
Thisform.Command4.Enabled=.T.
S6-4:Thisform.Command4.Click
GOBOTTOM
Thisform.Refresh
This.Enabled=.F.
Thisform.Command1.Enabled=.T.
Thisform.Command2.Enabled=.F.
Thisform.Command3.Enabled=.T.
S6-5:Thisform.Command5.Click
Thisform.Release
S6-6:Thisform.Init
Thisform.Command1.Enabled=.T.
Thisform.Command2.Enabled=.F.
Thisform.Command3.Enabled=.F.
Thisform.Command4.Enabled=.F.
S7:存盤并運(yùn)行,結(jié)果之一如圖12.14所示。此時(shí)它再也不像快速表單那樣只能顯示一條記錄,而是通過(guò)按鈕可以顯示需要的任何一條記錄或退出表單。圖12.14命令按鈕功能演示表單運(yùn)行結(jié)果12.3.2命令按鈕組(CommandGroup)
命令按鈕組是一種容器類對(duì)象,它可以包含多個(gè)按鈕,并對(duì)這些按鈕進(jìn)行有效管理。命令按鈕組和其中的各按鈕都有各自的屬性、方法程序及事件,因而既可以單獨(dú)操作各命令按鈕,又可以作為一個(gè)組來(lái)統(tǒng)一操作。
例如:
Thisform.CommandGroup1.Visible=.F.
表示該命令按鈕組不可見。
命令按鈕組對(duì)象的常用屬性有AutoSize、ButtonCount、BackStyle、Height、Width等,其中最重要的是ButtonCount,用它可以設(shè)定命令按鈕組中所包含的按鈕的個(gè)數(shù),其缺省值為2。
例12.10
以“CommandForm.scx”為基礎(chǔ)創(chuàng)建CommGroupForm.scx,將原來(lái)的五個(gè)命令按鈕包含到一個(gè)命令按鈕組中。兩個(gè)表單功能相同。
S1:COPYFILECommandForm.*TOCommGroupForm.*
S2:MODIFYFORMCommGroupForm
S2-1:將其標(biāo)題屬性“Caption”設(shè)為“按鈕組功能演示”。
S2-2:刪除五個(gè)按鈕。添加一個(gè)命令按鈕組控件,將其按鈕數(shù)目屬性“ButtonCount”設(shè)為5,其它屬性視其情況選取。
S2-3:為各按鈕標(biāo)題分別命名為“首條”、“下一條”、“上一條”、“末條”、“退出”。
S3:編寫一個(gè)按鈕事件代碼,代碼與例12.9相同,但應(yīng)將所有涉及到按鈕命令的前綴關(guān)鍵字ThisForm改為ThisForm.CommandGroup1。例如,上例中的
ThisForm.Command1.Enabled=.T.
語(yǔ)句在本例中應(yīng)改為:
ThisForm.CommandGroup1.Command1.Enabled=.T.
S4:存盤并運(yùn)行,會(huì)得到與上例類似的結(jié)果。12.3.3選項(xiàng)組(OptionGroup)
和復(fù)選框控件不同,復(fù)選框是控件,它獨(dú)立存在于表單中,而選項(xiàng)組對(duì)象是一個(gè)容器類對(duì)象,它里面可以包含多個(gè)選項(xiàng),但一次只允許選擇其中的一項(xiàng),被選中的選項(xiàng)將以“”的形式顯示,其它各未選的項(xiàng)均以“○”顯示。
選項(xiàng)組對(duì)象最重要的兩個(gè)屬性是ButtonCount和Value。
●?ButtonCount:用來(lái)設(shè)置選項(xiàng)組中按鈕的數(shù)目,其缺省值為2。
●?Value:用來(lái)標(biāo)識(shí)用戶選中了選項(xiàng)組中的某個(gè)選項(xiàng)按鈕。如果是數(shù)值,則表示選中的選項(xiàng)按鈕的標(biāo)記號(hào),編號(hào)從1開始。例如,如果選中了第3個(gè)按鈕選項(xiàng),則Value屬性為3。如果選項(xiàng)組的ControlSource屬性是表的一個(gè)字符型字段,或者在運(yùn)行表單前將Value設(shè)置成了一個(gè)字符型數(shù)據(jù)值,則運(yùn)行中Value的值就是被選中的選項(xiàng)按鈕的標(biāo)題。
在表單運(yùn)行中還可使用Buttons屬性數(shù)組,來(lái)設(shè)置選項(xiàng)按鈕的屬性。例如:
ThisForm.OptionGroup1.Value=0
&&選項(xiàng)按鈕組中的所有按鈕全部未選中
ThisForm.OptionGroup1.Option1.Value=1
&&選項(xiàng)按鈕組的第1個(gè)按鈕被選中
ThisForm.OptionGroup1.Buttons(2).Value=1
&&選項(xiàng)按鈕組的第2個(gè)按鈕被選中
例12.11
以“CommGroupForm.scx”為基礎(chǔ)創(chuàng)建“OptionGroupForm.scx”,在其中添加一個(gè)含有五個(gè)選項(xiàng)按鈕的選項(xiàng)組對(duì)象,五個(gè)選項(xiàng)按鈕各自的標(biāo)題是“漢族”、“滿族”、“回族”、“藏族”、“維吾爾族”。表單的作用是為“xsjbqkb3.dbf”錄入學(xué)生的民族(xsjbqkb3.dbf與xsjbqkb.dbf結(jié)構(gòu)相似,僅多一個(gè)字符型字段“民族”)。
S1:COPYFILExsjbqkb.*TOxsjbqkb3.*
S2:ALTERTABLExsjbqkb3ADD民族VARCHAR(10)
S3:COPYFILECommGroupForm.*TOOptionGroupForm.*
S4:MODIFYFORMOptionGroupForm
S4-1:令表單標(biāo)題屬性Caption=“選項(xiàng)組控件功能演示”。
S4-2:將表單的數(shù)據(jù)環(huán)境設(shè)為“xsjbqkb3.dbf”。
S4-3:添加一個(gè)選項(xiàng)按鈕組,令其選項(xiàng)數(shù)目屬性ButtonCount=5,將數(shù)據(jù)源屬性ControlSource設(shè)置為“xsjbqkb3.民族”,其它屬性視其情況選取。
S4-4:為各選項(xiàng)按鈕命名,標(biāo)題分別為“漢族”、“滿族”、“回族”、“藏族”、“維吾爾族”。
S4-5:增加一個(gè)標(biāo)簽框,令其Caption=“民族”。
S4-6:將表單中所有文本框的Controlsource屬性一律由xsjbqkb.fieldname改為xsjbqkb3.fieldname(fieldname表示各字、段名)。
S5:存盤并運(yùn)行,通過(guò)選項(xiàng)按鈕組控件為各條記錄錄入民族字段,結(jié)果如圖12.15所示。圖12.15選項(xiàng)按鈕組功能演示結(jié)果12.3.4定時(shí)器(Timer)控件
定時(shí)器控件是以用戶給定的時(shí)間間隔觸發(fā)Timer事件來(lái)反復(fù)執(zhí)行某種操作的。它與用戶的操作是相互獨(dú)立的,在表單運(yùn)行期間本身并不可見。
定時(shí)器控件最主要的屬性是“Interval”。它用來(lái)設(shè)置定時(shí)器的時(shí)間間隔,單位為毫秒(ms),取值范圍為0~2147483647(約合596.6小時(shí),24.8天)。由于系統(tǒng)時(shí)鐘每秒中產(chǎn)生18次時(shí)鐘跳動(dòng),因此“Interval”屬性的真正精確度不超過(guò)1/18秒。
定時(shí)器控件最重要的事件有兩個(gè),它們是:
●?Timer:周期性被激發(fā)。●?Rest:重新設(shè)置定時(shí)器控制,使其從0開始。
例12.12
設(shè)計(jì)一個(gè)迎接奧運(yùn)會(huì)的倒計(jì)時(shí)牌表單“TimerForm.scx”。
S1:CREATEFORMTimerForm
S2:設(shè)計(jì)表單。
S2-1:令表單的Caption=“定時(shí)器功能演示”。
S2-2:添加三個(gè)標(biāo)簽控件。其中標(biāo)簽Label3的Caption=“和諧中國(guó)喜事多,舉國(guó)上下迎奧運(yùn)!”,Label1、Label2的標(biāo)題不變。三個(gè)標(biāo)簽位置適當(dāng),前景色為紅色,AutoSize設(shè)置為.T.。字體字號(hào)自定,本例中Label3.FontName=“華文行楷”;Label1.FontName與Label2.FontName相同,設(shè)置為華文新魏,F(xiàn)ontSize均為24。
S2-3:添加一個(gè)定時(shí)器控件Timer1,令它的時(shí)間間隔屬性Interval=1000。
設(shè)計(jì)結(jié)果如圖12.16所示。
S3:編寫Timer1的Timer事件代碼:
Thisform.Label1.Caption="現(xiàn)在是:"
+STR(YEAR(DATETIME()),4)+"年"+;
+STR(Month(DATETIME()),2)+"月"
+STR(Day(DATETIME()),2)+"日";
+STR(Hour(DATETIME()),2)
+"時(shí)"+STR(minute(DATETIME()),4)+"分";
+STR(sec(DATETIME()),2)+“秒”
Thisform.Label2.Caption=“離2008年奧運(yùn)會(huì)開幕還有:”;
+STR({^2008/08/08}-DATE(),3)+“天”
Thisform.Refresh
S4:存盤并運(yùn)行,2007年11月1日14時(shí)40分53秒運(yùn)行的結(jié)果如圖12.17所示。圖12.16定時(shí)器功能演示表單設(shè)計(jì)結(jié)果圖12.17定時(shí)器功能演示表單運(yùn)行結(jié)果之一12.4容?器?類?對(duì)?象
VFP的容器類對(duì)象主要包括命令按鈕組、選項(xiàng)按鈕組、表格、頁(yè)框和容器控件等。其中命令按鈕組控件和選項(xiàng)按鈕組又屬于控制類對(duì)象,這在上一節(jié)中已經(jīng)介紹過(guò)了,本節(jié)將介紹表格、頁(yè)框和容器三種容器類對(duì)象。
12.4.1表格(Grid)
表格由若干個(gè)列對(duì)象組成,每一個(gè)列對(duì)象又含有一個(gè)標(biāo)頭對(duì)象和一些其它控件。表格對(duì)象、列對(duì)象和標(biāo)頭對(duì)象都有各自的屬性、事件及方法程序。
1.表格對(duì)象的常用屬性
VFP9.0中表格對(duì)象的常用屬性如表12.16所示。
2.表格中列對(duì)象的常用屬性
表格中,列對(duì)象最常用的屬性有ControlSource、CurrentControl和Sparse,它們各自的功能和取值如表12.17所示。
3.表格生成器
相對(duì)于命令按鈕組和選項(xiàng)按鈕組而言,表格對(duì)象的屬性設(shè)置較復(fù)雜。較好的方法是首先使用表格生成器來(lái)設(shè)計(jì)表格對(duì)象的大體布局,然后再使用表單設(shè)計(jì)器和屬性窗口詳細(xì)設(shè)置細(xì)節(jié)方面的屬性。
例12.13
使用表單生成器設(shè)計(jì)表單“GridForm.scx”,作用是以表格的形式顯示學(xué)生的基本情況表和學(xué)生成績(jī)表的內(nèi)容。
S1:CREATEFORMGridForm
S2:設(shè)置表單數(shù)據(jù)環(huán)境為“xsjbqkb.dbf”和“xscjb.dbf”,再添加兩個(gè)表格對(duì)象。
S3:打開父表的“表格生成器”。右擊Grid1↓快捷菜單→“生成器”↓表格生成器,設(shè)置Grid1的有關(guān)屬性。
S3-1:為“Grid1”選數(shù)據(jù)表“xsjbqkb.dbf”及需要的字段,伴隨著字段的選定,Grid1將自動(dòng)添加上標(biāo)頭對(duì)象和列對(duì)象。
S3-2:打開“樣式”選項(xiàng)卡,設(shè)置顯示樣式。在五種式樣中選擇所需要的式樣,此處選樣式為“標(biāo)準(zhǔn)”。
S3-3:打開“布局”選項(xiàng)卡,設(shè)置列的顯示標(biāo)題、列控件類型并調(diào)整列寬。此例中將“家庭住址”列寬進(jìn)行了適當(dāng)調(diào)整。
S3-4:→【確定】,表格對(duì)象Grid1設(shè)置完成。
S4:右擊Grid2,打開子表“表格生成器”,設(shè)置Grid2的屬性。
S4-1:重復(fù)S3-1、S3-2、S3-3對(duì)Grid2有關(guān)屬性的設(shè)置。
S4-2:打開“關(guān)聯(lián)”卡,建立父表“xsjbqkb.dbf”與子表“xscjb.dbf”之間的關(guān)聯(lián)。
S5:→【確定】,結(jié)束設(shè)計(jì),如圖12.18所示。
S6:存盤并運(yùn)行。當(dāng)主表記錄指針指向第4條記錄時(shí)的結(jié)果如圖12.19所示。圖12.18表格對(duì)象功能演示表單設(shè)計(jì)結(jié)果圖12.19表格對(duì)象功能演示表單運(yùn)行結(jié)果之一表格控件還可以設(shè)置其它許多屬性,例如可設(shè)置表格控件中當(dāng)前記錄與其它記錄的背景色不同,奇偶記錄的背景色不同等。
表格也可用表單設(shè)計(jì)器進(jìn)行設(shè)計(jì)。
為了幫助讀者理解例12.14中的程序,這里先介紹一個(gè)方法程序“SetAll”和一個(gè)事件“AfterRowColChange”。
4.SetAll方法程序
【格式】
Container.SetAll(cProperty,Value[,cClass])
【功能】
SetAll方法程序用于為容器類對(duì)象中的所有控件或某類控件指定一個(gè)屬性設(shè)置。
【參數(shù)說(shuō)明】
●?Container:指定容器類對(duì)象的名字。
●?cProperty:指定要設(shè)置的屬性的名字。
●?Value:指定要設(shè)置的屬性值。
●?cClass:指定類名,該類為基于對(duì)象的類名,而不是對(duì)象的VisualFoxPro基類。
例如,為了把當(dāng)前表單中表格對(duì)象Grid1中列對(duì)象的BackColor屬性設(shè)置為紅色,可以使用下列命令:
ThisForm.Grid1.SetAll("BackColor",RGB(255,0,0),"Column")
又例如,使用下列命令,則可把表格對(duì)象中每個(gè)列對(duì)象包含的標(biāo)頭的ForeColor屬性設(shè)置為綠色:
ThisForm.Grid1.SetAll("ForeColor",RGB(0,255,0),"Header")
5.?AfterRowColChange事件
【格式】
PROCEDUREGrid.AfterRowColChange
LPARAMETERSnColIndex
【觸發(fā)條件】
當(dāng)光標(biāo)移到表格的另一行或列時(shí),在新單元獲得焦點(diǎn)以及新行或列中對(duì)象的When事件發(fā)生后,將觸發(fā)此事件。如果新行或列中對(duì)象的When事件不返回“真”(.T.),則不觸發(fā)本事件。
對(duì)于表格對(duì)象,可以通過(guò)交互式使用鼠標(biāo)或鍵盤、使用編程的方法、調(diào)用ActivateCell方法等手段觸發(fā)AfterRowColChange事件。
例12.14
使用表單設(shè)計(jì)器設(shè)計(jì)表單“DBackColorForm.scx”,用來(lái)顯示學(xué)生的基本情況,要求當(dāng)前記錄與其它記錄的背景色不同。
設(shè)計(jì)表單的步驟如下:
S1:CREATEFORMDBackColorForm
S2:設(shè)置表單標(biāo)題為“表格動(dòng)態(tài)記錄背景顏色演示”,設(shè)置數(shù)據(jù)環(huán)境為“xsjbqkb.dbf”。
S3:添加一個(gè)表格對(duì)象Grid1,設(shè)置它的“RecordSourceType”屬性為“1-別名”,“RecordSource”屬性為“xsjbqkb.dbf”,其它屬性使用缺省值。
S4:編寫事件代碼。
S4-1:ThisForm.Load
PUBLICCurrec&&聲明一個(gè)當(dāng)前記錄指針
Currec=1
S4-1:ThisForm.Grid1.Init
This.SetAll("DynamicBackColor",;
&&指定列對(duì)象的背景色和前景色
"IIF(RECNO()=Currec,RGB(255,0,0),RGB(0,0,255))","Column")
ThisForm.Refresh
S4-2:ThisForm.Grid1.AfterRowColChange
LPARAMETERSnColIndex
Currec=RECNO()
ThisForm.Refresh
S5:存盤并運(yùn)行,結(jié)果如圖12.20所示,當(dāng)前記錄的背景色為紅色,其它記錄的背景色為藍(lán)色。圖12.20表格動(dòng)態(tài)記錄背景顏色演示表單運(yùn)行結(jié)果12.4.2頁(yè)框(PageFrame)
頁(yè)框是包含頁(yè)面的容器類對(duì)象。用戶可以在一個(gè)頁(yè)框中定義多個(gè)頁(yè)面,每一個(gè)頁(yè)面可以包含各種控件,以便生成帶有選項(xiàng)卡的對(duì)話框。運(yùn)行中,可單擊頁(yè)面標(biāo)題來(lái)選擇頁(yè)面,被選中的頁(yè)面為活動(dòng)頁(yè)面。
頁(yè)框的常用屬性如表12.18所示。
頁(yè)框中的頁(yè)面也具有自己的屬性,最常用的是頁(yè)面的標(biāo)題“Caption”,它用來(lái)指定選項(xiàng)卡的標(biāo)題。
例12.15
設(shè)計(jì)一個(gè)表單“PageForm.scx”,含有頁(yè)框,頁(yè)框中有兩個(gè)頁(yè)面,分別用來(lái)顯示“xsjbqkb”和“xscjb”表的記錄。
S1:CREATEFORMPageForm
S2:設(shè)置表單標(biāo)題為“頁(yè)框功能演示”,設(shè)置數(shù)據(jù)環(huán)境為“xsjbqkb.dbf”和“xscjb.dbf”。
S3:添加一個(gè)頁(yè)框?qū)ο蟆癙ageFrame1”,屬性一律使用缺省值。
S4:將頁(yè)面Page1、Page2的“Caption”屬性分別設(shè)為“學(xué)生基本情況表”、“學(xué)生成績(jī)表”。
S5:分別在Page1、Page2中各添加一個(gè)表格“Grid1”,設(shè)置:
PageFrame1.Page1.Grid1.RecordSourceType=0&&數(shù)據(jù)源類型是表
PageFrame1.Page2.Grid1.RecordSourceType=0
PageFrame1.Page1.Grid1.RecordSource=xsjbqkb
PageFrame1.Page2.Grid1.RecordSource=xscjb
其它屬性均使用缺省值。
S6:存盤并運(yùn)行,單擊頁(yè)面標(biāo)題,會(huì)在兩頁(yè)面間實(shí)現(xiàn)切換顯示,效果如圖12.21所示。圖12.21頁(yè)框功能演示表單運(yùn)行結(jié)果12.4.3容器(Container)
命令按鈕組、選項(xiàng)按鈕組、表格、頁(yè)框這些容器類對(duì)象都具有特定的格式或包含一些特定的控件對(duì)象。在VFP中,還有一種可以包含不同類型控件對(duì)象的容器類對(duì)象——容器。容器所包含的對(duì)象既可以是普通類型的控件,又可以是容器類對(duì)象。
容器的常用屬性有BackStyle和SpecialEffect。
向容器控件添加其它控件的步驟如下:
S1:在表單中添加一個(gè)容器控件。
S2:右擊容器控件,彈出快捷菜單,選“編輯”。
S3:向容器控件中添加其它控件。12.5嵌入與鏈接類控件
VFP的一個(gè)重要特點(diǎn)是它不僅能使用本系統(tǒng)的數(shù)據(jù),還能使用其它系統(tǒng)提供的數(shù)據(jù)。它可以通過(guò)對(duì)象鏈接與嵌入OLE(ObjectLinkingandEmbedding)技術(shù)將文本、聲音、圖像或視頻等應(yīng)用程序的文件嵌入或鏈接到表或表單中。例如可以把Word文檔、聲音文件、視頻文件、Excel電子表格嵌入或鏈接到表的通用型字段或表單中,可以把文本文件嵌入或鏈接到備注型字段中。
嵌入與鏈接是兩個(gè)不同的概念。嵌入是將數(shù)據(jù)“鑲嵌”到表或表單中,物理上包含了被嵌入對(duì)象的副本;鏈接是指對(duì)被鏈接對(duì)象的一種引用,僅在邏輯上指明了被鏈接對(duì)象的路徑。12.5.1ActiveX控件
ActiveX控件是符合微軟公司ActiveX技術(shù)標(biāo)準(zhǔn)的控件動(dòng)態(tài)鏈接庫(kù)。它由OLE發(fā)展而來(lái),與開發(fā)平臺(tái)無(wú)關(guān),在一種編程語(yǔ)言中開發(fā)的ActiveX控件,無(wú)須作任何修改就可在另一種編程語(yǔ)言中使用,效果如同使用Windows的通用控件一樣。
ActiveX控件提供了廣泛的功能,其數(shù)量已超過(guò)1000余種。在Windows的System文件夾中含有大量的擴(kuò)展名為?.ocx的文件,它們都屬于ActiveX控件。
VFP中的ActiveX控件可劃分為標(biāo)準(zhǔn)的ActiveX控件和可插入表單的OLE對(duì)象。標(biāo)準(zhǔn)ActiveX控件分為兩種:
(1)?Windows控件,如TreeViewControl、MicrosoftStatusbarControl、MicrosoftRichTextControl等。
(2)系統(tǒng)控件,如Communications、MAPI(MassagingApplicationProgrammingInterface)等控件。
值得說(shuō)明的是,VFP本身不能創(chuàng)建新的ActiveX控件,但卻可以方便地使用系統(tǒng)已有的ActiveX控件,而大量使用的則是標(biāo)準(zhǔn)AcitiveX控件。在第11章的11.2.1節(jié)中,我們已經(jīng)介紹了將ActiveX控件添加到控件工具欄的方法和步驟,下面具體講解如何將ActiveX控件或?qū)ο筇砑拥奖韱沃小?/p>
例12.16
設(shè)計(jì)表單“ActivexForm.scx”,運(yùn)行時(shí)顯示一個(gè)日歷表。
S1:CREATEFORMActivexForm
S2:設(shè)置表單名稱“Caption”為“ActiveX控件演示”。向表單中添加一個(gè)ActiveX控件,將彈出“插入對(duì)象”對(duì)話框,如圖12.22所示。
“插入對(duì)象”對(duì)話框中含有一個(gè)“選擇”選項(xiàng)按鈕組、一個(gè)“控件類型”列表框、四個(gè)命令按鈕及一個(gè)“結(jié)果”標(biāo)簽框。它們的功能如下:
(1)“選擇”選項(xiàng)按鈕組含有三個(gè)選項(xiàng)按鈕,分別是“新建”、“由文件創(chuàng)建”和“插入控件”。各自的功能是:●新建:插入的對(duì)象由Windows的應(yīng)用軟件來(lái)建立。選定該項(xiàng)后,可在“控件類型”列表框中選擇需要的控件類型,從而調(diào)用對(duì)應(yīng)的應(yīng)用程序來(lái)創(chuàng)建ActiveX控件。
●由文件創(chuàng)建:將指定的文件內(nèi)容插入控件對(duì)象。選定該選項(xiàng)后,將彈出“插入對(duì)象”對(duì)話框,可在其后的文本框中輸入文件的路徑和文件名或者單擊下方的【瀏覽】按鈕,在彈出的“打開”對(duì)話框中選擇文件,然后單擊【確定】,即將所選中的文件插入表單的ActiveX控件。
●插入控件:用戶可在“控件類型”列表框中選擇一個(gè)ActiveX控件,然后單擊【確定】,將該控件放置在表單上。圖12.22添加ActiveX控件及“插入對(duì)象”對(duì)話框
(2)“控件類型”列表框中列出了各種控件,供用戶選定。
本例中,應(yīng)在“選擇”按鈕組中選“插入控件”,在“控件類型”列表中選其最后一項(xiàng)“日歷控件8.0”,單擊【確定】,則將該控件放置在表單上。調(diào)整控件位置及大小,使其合適即可。
S3:存盤并運(yùn)行,會(huì)得到如圖12.23所示的結(jié)果。圖12.23AcitveX控件演示1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流課程設(shè)計(jì)實(shí)驗(yàn)
- 種蘑菇課程設(shè)計(jì)
- 中華人民共和國(guó)民法典知識(shí)競(jìng)賽題庫(kù)及答案
- 2024幼兒園安全教育工作總結(jié)結(jié)尾(31篇)
- 2024年自來(lái)水公司年終工作總結(jié)(35篇)
- 液體混合裝置plc課程設(shè)計(jì)
- 玉雕課程設(shè)計(jì)
- 食品行業(yè)客服工作總結(jié)
- 客房清潔員的工作總結(jié)
- 中醫(yī)科醫(yī)師工作總結(jié)
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- GB/T 22517.2-2024體育場(chǎng)地使用要求及檢驗(yàn)方法第2部分:游泳場(chǎng)地
- DB2305T 024-2024 關(guān)防風(fēng)栽培技術(shù)規(guī)程
- 年產(chǎn)500t o-甲基-n-硝基異脲技改項(xiàng)目可研報(bào)告
- 酒店英語(yǔ)會(huì)話(第六版)教案 unit 1 Room Reservations
- 2024至2030年中國(guó)蔬菜種植行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資策略研究報(bào)告
- 2024旅行社免責(zé)協(xié)議書模板范本
- 2024汽車行業(yè)社媒營(yíng)銷趨勢(shì)【微播易CAA中國(guó)廣告協(xié)會(huì)】-2024-數(shù)字化
- 2022-2023學(xué)年教科版五年級(jí)科學(xué)上冊(cè)期末復(fù)習(xí)資料
- DL∕T 2558-2022 循環(huán)流化床鍋爐基本名詞術(shù)語(yǔ)
- 教師進(jìn)企業(yè)實(shí)踐日志
評(píng)論
0/150
提交評(píng)論