《數(shù)據(jù)庫(kù)基礎(chǔ)與Visual FoxPro9.0程序設(shè)計(jì)》課件第12章_第1頁(yè)
《數(shù)據(jù)庫(kù)基礎(chǔ)與Visual FoxPro9.0程序設(shè)計(jì)》課件第12章_第2頁(yè)
《數(shù)據(jù)庫(kù)基礎(chǔ)與Visual FoxPro9.0程序設(shè)計(jì)》課件第12章_第3頁(yè)
《數(shù)據(jù)庫(kù)基礎(chǔ)與Visual FoxPro9.0程序設(shè)計(jì)》課件第12章_第4頁(yè)
《數(shù)據(jù)庫(kù)基礎(chǔ)與Visual FoxPro9.0程序設(shè)計(jì)》課件第12章_第5頁(yè)
已閱讀5頁(yè),還剩147頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論