《Visual Basic程序設(shè)計(jì)案例教程》課件第10章_第1頁(yè)
《Visual Basic程序設(shè)計(jì)案例教程》課件第10章_第2頁(yè)
《Visual Basic程序設(shè)計(jì)案例教程》課件第10章_第3頁(yè)
《Visual Basic程序設(shè)計(jì)案例教程》課件第10章_第4頁(yè)
《Visual Basic程序設(shè)計(jì)案例教程》課件第10章_第5頁(yè)
已閱讀5頁(yè),還剩109頁(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)介

第10章文件

10.1順序文件10.2隨機(jī)文件10.3二進(jìn)制文件10.4與文件系統(tǒng)相關(guān)的控件習(xí)題使用文件是長(zhǎng)久保存數(shù)據(jù)的有效且簡(jiǎn)便的方法。文件是存儲(chǔ)在某種存儲(chǔ)介質(zhì)上的數(shù)據(jù)的集合,通常由一組相關(guān)字節(jié)組成。當(dāng)應(yīng)用程序要訪問(wèn)文件時(shí),必須自己決定文件中字節(jié)的意義(比如,表示字符、字符串、整數(shù)、數(shù)據(jù)記錄等)。文件在存儲(chǔ)介質(zhì)上的位置是依賴(lài)于驅(qū)動(dòng)器名、文件夾(目錄)和文件名來(lái)定位的。

VisualBasic提供了對(duì)文件的讀寫(xiě)能力。為能有效地存取數(shù)據(jù),訪問(wèn)文件時(shí),應(yīng)根據(jù)文件中存儲(chǔ)的數(shù)據(jù)的不同類(lèi)型,采用不同的方法進(jìn)行訪問(wèn)。VisualBasic中有三種文件訪問(wèn)類(lèi)型。●順序型:用于讀寫(xiě)連續(xù)的文本文件。●隨機(jī)型:用于讀寫(xiě)有固定長(zhǎng)度記錄結(jié)構(gòu)的文本文件或者二進(jìn)制文件。●二進(jìn)制型:用于讀寫(xiě)任意結(jié)構(gòu)的文件。

VB中,根據(jù)文件的結(jié)構(gòu)和訪問(wèn)方式,將文件分成順序文件、隨機(jī)文件和二進(jìn)制文件。文件處理可以通過(guò)使用Open語(yǔ)句以及其他一些相關(guān)的語(yǔ)句和函數(shù)來(lái)實(shí)現(xiàn),也可以通過(guò)使用FSO對(duì)象模型來(lái)實(shí)現(xiàn)。應(yīng)用程序訪問(wèn)上述三種文件的步驟是相同的:①使用Open語(yǔ)句打開(kāi)文件;②從文件中讀取數(shù)據(jù)或?qū)?shù)據(jù)寫(xiě)到文件中;③使用Close語(yǔ)句關(guān)閉文件。10.1順序文件

VisualBasic6.0中,順序文件實(shí)際上指的就是文本文件,這種文件中的數(shù)據(jù)由文本字符組成。這些字符既可以是ASCII碼字符集中的可顯示字符,也可以是漢字字符。順序文件按行組織,每一行的結(jié)尾由“回車(chē)”和“換行”字符指示?!盎剀?chē)”字符的ASCII碼為13,“換行”字符的ASCII碼為10。當(dāng)用戶要處理只包含文本的文件時(shí),最好使用順序型訪問(wèn)。順序型訪問(wèn)不太適合有很多數(shù)字的文件,因?yàn)槊總€(gè)數(shù)據(jù)都要按字符串存儲(chǔ),可能比較浪費(fèi)存儲(chǔ)空間。如一個(gè)4位整數(shù)將需要4個(gè)字節(jié)的存儲(chǔ)空間,而它作為一個(gè)正數(shù)來(lái)存儲(chǔ)時(shí)只需2個(gè)字節(jié)。案例1順序文件的使用

1.學(xué)習(xí)目標(biāo)設(shè)計(jì)一個(gè)演示順序文件讀寫(xiě)操作的程序,程序運(yùn)行界面如圖10.1所示。要求該程序可以打開(kāi)一個(gè)順序文件“D:\text.txt”,并將其內(nèi)容讀入文本框中進(jìn)行修改,然后將修改好的內(nèi)容保存回原文件。圖10.1順序文件程序設(shè)計(jì)界面

2.相關(guān)知識(shí)如果要編輯一個(gè)順序文件,需要先打開(kāi)該文件,再把它的內(nèi)容讀入到程序變量,然后改變這些變量,最后再把這些變量寫(xiě)回到該文件。

1)順序文件的打開(kāi)使用順序文件之前,應(yīng)先用Open語(yǔ)句打開(kāi)它。Open語(yǔ)句的語(yǔ)法如下:

OpenpathnameFormode[access][lock]As[#]filenumber[Len=reclength]其中各參數(shù)的含義如下:●??pathname:必選參數(shù),由字符串表達(dá)式組成。它指定文件名,該文件名可能還包括目錄、文件夾及驅(qū)動(dòng)器。●mode(模式):必選參數(shù),它指定文件的打開(kāi)方式。對(duì)順序文件有Append、Input和Output三種模式,其含義如表10.1所示。如果未指定方式,則以Random訪問(wèn)方式打開(kāi)文件(隨機(jī)文件)。表10.1順序文件的三種打開(kāi)模式當(dāng)用Input模式打開(kāi)順序文件時(shí),該文件必須存在,否則會(huì)出現(xiàn)錯(cuò)誤。但是,當(dāng)以O(shè)utput或Append模式打開(kāi)一個(gè)不存在的文件時(shí),Open語(yǔ)句會(huì)首先創(chuàng)建該文件,然后再打開(kāi)它。●?access:可選參數(shù),它說(shuō)明對(duì)打開(kāi)的文件可以進(jìn)行的操作類(lèi)型,即能對(duì)文件進(jìn)行哪種操作,對(duì)文件的存取限定了約束條件。表10.2列出了順序文件的操作類(lèi)型。表10.2順序文件的操作類(lèi)型●lock(鎖定):可選參數(shù),它說(shuō)明其他進(jìn)程能否對(duì)打開(kāi)的文件進(jìn)行操作,用于多進(jìn)程網(wǎng)絡(luò)環(huán)境中。lock類(lèi)型可采用的參數(shù)如表10.3所示。表10.3Lock類(lèi)型可采用的參數(shù)●?filenumber:必選參數(shù),它是一個(gè)有效的文件號(hào)。文件號(hào)是在Open語(yǔ)句中用來(lái)標(biāo)識(shí)打開(kāi)文件的數(shù)值,范圍為1~511。當(dāng)打開(kāi)某文件并為其指定文件號(hào)以后,該號(hào)就代表了被打開(kāi)的文件,任何對(duì)該文件號(hào)進(jìn)行操作的語(yǔ)句都將影響相應(yīng)的文件內(nèi)容,文件被關(guān)閉后,此文件號(hào)可以再供其他文件使用。為了保證應(yīng)用程序不使用正在使用的文件號(hào),可以使用FreeFile()函數(shù)得到下一個(gè)可用的文件號(hào)。●reclength:可選參數(shù),它是小于或等于32?767(字節(jié))的一個(gè)數(shù),它指定用于數(shù)據(jù)交換時(shí)數(shù)據(jù)緩沖區(qū)的大小。對(duì)于順序文件,該值就是緩沖字符數(shù);對(duì)于用隨機(jī)訪問(wèn)方式打開(kāi)的文件,該值就是記錄長(zhǎng)度。在Windows中,數(shù)據(jù)要存儲(chǔ)到文件中時(shí),不是直接存到磁盤(pán)上,而先存到一個(gè)內(nèi)存里的數(shù)據(jù)緩沖區(qū)中,直到裝滿后才存盤(pán)或當(dāng)文件關(guān)閉時(shí)一起存盤(pán)。用戶可在打開(kāi)文件時(shí)設(shè)定參數(shù),修改系統(tǒng)設(shè)置。較大的參數(shù)表示數(shù)據(jù)占用較大的內(nèi)存空間,但可提高文件的輸入或輸出速度;該參數(shù)較小時(shí),表示數(shù)據(jù)占用空間小,文件的交換速度較慢。例如,以順序輸入模式打開(kāi)Textnew.txt文件可用下列語(yǔ)句實(shí)現(xiàn):

Open"Textnew.txt"ForInputAs#1

2)向順序文件中寫(xiě)數(shù)據(jù)應(yīng)用程序在向順序文件中寫(xiě)入數(shù)據(jù)前,應(yīng)先根據(jù)是否要覆蓋原文件來(lái)選擇以O(shè)utput或Append模式打開(kāi)它。當(dāng)以O(shè)utput模式打開(kāi)文件時(shí),寫(xiě)操作語(yǔ)句從數(shù)據(jù)文件的最前面開(kāi)始寫(xiě)入。如果文件已存在,則文件中原來(lái)的內(nèi)容會(huì)被覆蓋;若文件不存在,則會(huì)建立一個(gè)新文件,將數(shù)據(jù)從頭開(kāi)始寫(xiě)入。當(dāng)文件以Append模式打開(kāi)時(shí),如果文件已經(jīng)存在,則在寫(xiě)入數(shù)據(jù)時(shí)不會(huì)將原來(lái)的數(shù)據(jù)覆蓋,而是從文件末尾開(kāi)始,將新數(shù)據(jù)添加到文件中。下面兩種語(yǔ)句可實(shí)現(xiàn)向順序文件中寫(xiě)入數(shù)據(jù)的操作。

(1)?Write#語(yǔ)句。功能:將數(shù)據(jù)寫(xiě)入文件號(hào)指定的順序文件。每執(zhí)行一次Write語(yǔ)句,該語(yǔ)句就會(huì)在輸出的數(shù)據(jù)后面自動(dòng)添加一個(gè)回車(chē)換行字符。語(yǔ)法格式:

Write#filenumber,[outputlist]其中,outputlist參數(shù)是可選項(xiàng),代表要寫(xiě)入文件的數(shù)值表達(dá)式或字符串表達(dá)式,表達(dá)式間用逗號(hào)分開(kāi)。如果省略outputlist,并在filenumber之后加上一個(gè)逗號(hào),則會(huì)將一個(gè)空白行輸出到文件中。例如:用Write#語(yǔ)句將行數(shù)據(jù)寫(xiě)入順序文件。

Open"Testnew.txt"ForOutputAs#1 '打開(kāi)輸出文件

Write#1,"向順序文件中寫(xiě)入數(shù)據(jù)",100 '寫(xiě)入以逗號(hào)隔開(kāi)的數(shù)據(jù)

Write#1, '寫(xiě)入空白行

(2)?Print#語(yǔ)句。功能:將格式化顯示的數(shù)據(jù)寫(xiě)入順序文件中。語(yǔ)法格式:

Print#filenumber,[outputlist]例如:用Print#?語(yǔ)句將數(shù)據(jù)寫(xiě)入一個(gè)文件。

Open"Test.txt"ForOutputAs#1 '打開(kāi)輸出文件

Print#1,"順序文件" '將文本數(shù)據(jù)寫(xiě)入文件

Print#1,'將空白行寫(xiě)入文件

Print#1,Spc(5);"向順序文件中寫(xiě)入數(shù)據(jù)"

'在字符串之前寫(xiě)入5個(gè)空格與Print#?語(yǔ)句不同,當(dāng)要將數(shù)據(jù)寫(xiě)入文件時(shí),Write#?語(yǔ)句會(huì)在項(xiàng)目和用來(lái)標(biāo)記字符串的引號(hào)之間插入逗號(hào)。Write#語(yǔ)句在將“outputlist”中的最后一個(gè)字符寫(xiě)入文件后插入一個(gè)新行字符,即回車(chē)換行符(Chr(13)+Chr(10))。

3)從順序文件中讀數(shù)據(jù)要讀取順序文件中的內(nèi)容,應(yīng)用Open語(yǔ)句以Input模式打開(kāi)該文件,然后根據(jù)用戶的不同需要,使用Input#?語(yǔ)句或LineInput#?或Input()將文件內(nèi)容讀入到程序變量中。

(1)?Input#?語(yǔ)句。功能:Input?#?語(yǔ)句將文件中的逗號(hào)(不包括引號(hào)中的逗號(hào))和回車(chē)換行符作為數(shù)據(jù)項(xiàng)的分隔符,順序地從指定的文件(由文件號(hào)指定)中讀取數(shù)據(jù),并把讀出的數(shù)據(jù)存放到參數(shù)表指定的變量中。語(yǔ)法格式:

Input#filenumber,varlist其中,參數(shù)varlist為變量表,這些變量不能是數(shù)組或?qū)ο笞兞?,變量間用逗號(hào)分隔開(kāi)。Input#語(yǔ)句將從文件中讀出的值分配給這些變量,一次讀取的數(shù)據(jù)項(xiàng)的個(gè)數(shù)與varlist中變量的個(gè)數(shù)相等,順序必須相同,且與相同數(shù)據(jù)類(lèi)型的變量匹配。如果變量為數(shù)值類(lèi)型,而數(shù)據(jù)不是數(shù)值類(lèi)型,則指定變量的值為零。當(dāng)文件中余下的數(shù)據(jù)項(xiàng)的個(gè)數(shù)多于參數(shù)表中變量的個(gè)數(shù)時(shí),Input?#?語(yǔ)句讀出相應(yīng)個(gè)數(shù)的數(shù)據(jù)項(xiàng),并把文件指針移動(dòng)到下一個(gè)數(shù)據(jù)項(xiàng)上;當(dāng)文件中余下的數(shù)據(jù)項(xiàng)的個(gè)數(shù)少于Input#語(yǔ)句參數(shù)表中變量的個(gè)數(shù)時(shí),再次執(zhí)行Input?#?語(yǔ)句將導(dǎo)致錯(cuò)誤。為了避免發(fā)生這種情況,在使用Input#?語(yǔ)句讀取數(shù)據(jù)之前,應(yīng)該使用EOF()函數(shù)判斷是否已經(jīng)讀到了文件的末尾。當(dāng)已經(jīng)讀到文件末尾時(shí),EOF()函數(shù)返回True,否則返回False。

EOF()函數(shù)的語(yǔ)法格式:

EOF(filenumber)為了能夠用Input?#?語(yǔ)句將文件的數(shù)據(jù)正確讀入到變量中,在將數(shù)據(jù)寫(xiě)入文件時(shí),要使用Write#語(yǔ)句而不是Print#語(yǔ)句。因?yàn)槭褂肳rite#語(yǔ)句可以確保將各個(gè)單獨(dú)的數(shù)據(jù)域正確分隔開(kāi),所以可用Input#?語(yǔ)句再將數(shù)據(jù)讀出來(lái)。例如:用Input?#?語(yǔ)句將順序文件Testnew.txt內(nèi)的數(shù)據(jù)讀入到兩個(gè)變量中。假設(shè)Testnew.txt文件內(nèi)含數(shù)行以Write?#?語(yǔ)句寫(xiě)入的數(shù)據(jù),即每一行數(shù)據(jù)中的字符串部分都用雙引號(hào)括起來(lái),而與數(shù)字用逗號(hào)隔開(kāi),如("Welcome",100)。

DimMyString,MyNumber

Open"Testnew.txt"ForInputAs#1

DowhileNotEOF(1)

Input#1,MyString,MyNumber'將數(shù)據(jù)讀入到兩個(gè)變量

PrintMyString,MyNumber

Loop其中,EOF()返回一個(gè)Boolean值,當(dāng)Boolean值為T(mén)rue時(shí),表明已經(jīng)到達(dá)以Input模式打開(kāi)的順序文件的末尾。若未到達(dá)文件的末尾,則EOF()函數(shù)返回False。

(2)?LineInput?#?語(yǔ)句。功能:LineInput?#?語(yǔ)句可以一次讀取一行文本,并將它分配給字符串類(lèi)型變量。語(yǔ)法格式:

LineInput#filenumber,varname其中,varname是用來(lái)存放讀取內(nèi)容的Variant或String變量名。用LineInput#語(yǔ)句一次只能從文件中讀取一行字符,直到遇到回車(chē)符或回車(chē)換行符時(shí)為止。逗號(hào)不是該語(yǔ)句的分隔符?;剀?chē)換行符將被跳過(guò),而不會(huì)被附加到字符串上,因此,如果要保留該回車(chē)換行符,則必須用代碼添上。例如:用LineInput#語(yǔ)句從順序文件Testnew.txt中讀入一行數(shù)據(jù),并將該行數(shù)據(jù)賦予一個(gè)變量。假設(shè)順序文件Testnew.txt內(nèi)含數(shù)行文本數(shù)據(jù)。

DimTextLineAsString

Open“Testnew.txt”ForInputAs#1

'打開(kāi)文件

DoWhileNotEOF(1)

'循環(huán)至文件尾

LineInput#1,TextLine

'讀入一行數(shù)據(jù)并將其賦予某變量

PrintTextLine

'窗口中顯示數(shù)據(jù)

Loop

(3)?Input()函數(shù)。功能:該函數(shù)返回String,它包含以Input模式打開(kāi)的文件中的字符。語(yǔ)法格式:

Input(number,[#]filenumber)其中,number參數(shù)是任何有效的數(shù)值表達(dá)式,指定要返回的字符個(gè)數(shù);filenumber是任何有效的文件號(hào)。與Input?#?語(yǔ)句不同,Input()函數(shù)返回它所讀出的所有字符,包括逗號(hào)、回車(chē)符、空白列、換行符、引號(hào)和前導(dǎo)空格等。例如:用Input()函數(shù)一次讀取順序文件Testnew.txt中的一個(gè)字符,并將它顯示出來(lái)。假設(shè)Testnew.txt文件內(nèi)含數(shù)行文本數(shù)據(jù)。

DimMyChar

Open"Testnew.txt"ForInputAs#1

DoWhileNotEOF(1)

MyChar=Input(1,#1)'一次讀入一個(gè)字符

PrintMyChar

Loop

4)順序文件的關(guān)閉對(duì)文件進(jìn)行讀寫(xiě)操作之后,必須將文件關(guān)閉,否則會(huì)造成文件中數(shù)據(jù)的丟失。這是因?yàn)?,將?shù)據(jù)寫(xiě)入文件實(shí)際上是將數(shù)據(jù)寫(xiě)入緩沖區(qū),關(guān)閉文件才能將緩沖區(qū)中剩余數(shù)據(jù)全部寫(xiě)入文件內(nèi)。關(guān)閉文件可采用Close語(yǔ)句。

Close語(yǔ)句的語(yǔ)法格式:

Close[filenumberlist]其中,參數(shù)filenumberlist代表一個(gè)或多個(gè)文件號(hào),若省略filenumberlist,則將關(guān)閉用Open語(yǔ)句打開(kāi)的所有活動(dòng)文件。注意:在執(zhí)行Close語(yǔ)句時(shí),文件與其文件號(hào)之間的關(guān)聯(lián)將終結(jié)。例如:用Close語(yǔ)句關(guān)閉所有為Output而打開(kāi)的文件(3個(gè))。

DimiAsInteger,F(xiàn)ileNameAsString

Fori=1To3 '循環(huán)3次

FileName="TEST"&i '創(chuàng)建文件名

OpenFileNameForOutputAs#1 '打開(kāi)文件

Print#i,"Thisisatest."'將字符串寫(xiě)入文件

Nexti

Close '將3個(gè)已打開(kāi)的文件全部關(guān)閉

3.程序?qū)崿F(xiàn)

1)界面設(shè)計(jì)與屬性設(shè)置具體操作步驟如下:

(1)新建工程,添加一個(gè)窗體。

(2)在窗體中添加控件,包括一個(gè)文本框和3個(gè)命令按鈕。

(3)按表10.4所示設(shè)置窗體及控件屬性。設(shè)計(jì)好的程序界面如圖10.1所示。表10.4窗體及控件屬性

2)編寫(xiě)代碼其代碼編寫(xiě)如下:

PrivateSubCommand1_Click()'讀取文件

DimFile1AsString,nextlineAsString

File1="D:\text.txt"

Text1.Text=""

OpenFile1ForInputAs#1'按讀方式打開(kāi)

DoUntilEOF(1)

'將打開(kāi)文本文件的內(nèi)容賦予文本框

LineInput#1,nextline

Text1.Text=Text1.Text+nextline+Chr(13)+Chr(10)

Loop

Close#1

'關(guān)閉打開(kāi)的文件

EndSub

PrivateSubCommand2_Click()

'將文本框的內(nèi)容寫(xiě)入文件

DimcontentsAsString

Open"D:\text.txt"ForOutputAs#1'以寫(xiě)方式打開(kāi)文件

contents=Text1.Text

Text1.Text=“”

'清除文本框中的內(nèi)容

Print#1,contents'往文件中寫(xiě)入內(nèi)容

Close#1

EndSub

PrivateSubCommand3_Click()

UnloadMe '退出程序

EndSub

3)運(yùn)行程序單擊“讀出”命令按鈕,程序打開(kāi)順序文件“D:\text.txt”,并將內(nèi)容賦予文本框。在文本框中對(duì)文件進(jìn)行編輯修改,將“如果要編輯一個(gè)文件”改為“如果要編輯一個(gè)順序文件”,然后單擊“寫(xiě)入”命令按鈕,將修改的內(nèi)容保存回該文件,文本框中清空。再次打開(kāi)順序文件“D:\text.txt”,顯示修改成功,如圖10.2所示。圖10.2順序文件使用示例10.2隨機(jī)文件在文件操作中以順序文件方式存取數(shù)據(jù)十分方便,也很常用,但是當(dāng)需要大量查找或修改文件中的數(shù)據(jù)時(shí)會(huì)很困難,而這時(shí)采用隨機(jī)文件方式存取數(shù)據(jù)就顯得比較方便。隨機(jī)文件的每一個(gè)數(shù)據(jù)項(xiàng)都有相同的長(zhǎng)度,它的數(shù)據(jù)項(xiàng)通常稱(chēng)作記錄。隨機(jī)文件是以記錄為單位的,每條記錄都被賦予了記錄號(hào)以便查找。應(yīng)用程序可以根據(jù)記錄號(hào)直接讀取隨機(jī)文件中的任意記錄,而無(wú)須由前至后逐個(gè)讀取。案例2隨機(jī)文件的使用

1.學(xué)習(xí)目標(biāo)設(shè)計(jì)一個(gè)演示隨機(jī)文件讀寫(xiě)操作的程序,程序運(yùn)行界面如圖10.3所示,要求該程序可以打開(kāi)一個(gè)隨機(jī)文件“D:\text.txt”,并可以從隨機(jī)文件中讀出記錄,也可以往隨機(jī)文件中添加記錄。圖10.3隨機(jī)文件程序設(shè)計(jì)界面

2.相關(guān)知識(shí)

1)聲明記錄類(lèi)型變量對(duì)隨機(jī)文件的存取是以記錄為單位進(jìn)行的。記錄是存儲(chǔ)一組相互聯(lián)系數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu),記錄中的成分稱(chēng)作分量。每個(gè)記錄包括一個(gè)或多個(gè)分量。具有一個(gè)分量的記錄對(duì)應(yīng)于任一標(biāo)準(zhǔn)類(lèi)型,比如整數(shù)或定長(zhǎng)字符串。具有多個(gè)分量的記錄對(duì)應(yīng)于用戶自定義類(lèi)型。例如,當(dāng)我們要登記學(xué)生信息時(shí)需要登記學(xué)生的姓名、年齡、性別等,此時(shí)以記錄方式保存學(xué)生信息既簡(jiǎn)潔又直觀。在打開(kāi)一個(gè)文件進(jìn)行隨機(jī)訪問(wèn)之前,應(yīng)定義一個(gè)類(lèi)型,該類(lèi)型對(duì)應(yīng)于該文件包含或?qū)挠涗?。使用VisualBasic提供的自定義類(lèi)型可以定義記錄,其語(yǔ)法格式為:

[Private?|?Public]Type自定義類(lèi)型名分量名Astype

[分量名Astype]

EndType例如:聲明一個(gè)學(xué)生自定義類(lèi)型。

TypeStudent

NameAsString

8 '姓名

AgeAs Integer'年齡

SexAsString

2 '性別

EndType由于隨機(jī)文件中的所有記錄都必須有相同的長(zhǎng)度,因此在上面的用戶自定義類(lèi)型中,字符串類(lèi)型的字段要使用固定的長(zhǎng)度。若類(lèi)型中的元素有數(shù)組類(lèi)型,也必須將它定義為定長(zhǎng)數(shù)組。如果實(shí)際字符串包含的字符數(shù)比類(lèi)型定義中的字符少,則自動(dòng)用空白字符來(lái)填充記錄中后面的空間;如果字符串的長(zhǎng)度超過(guò)定義的長(zhǎng)度,則將截去多余字符。如要編輯隨機(jī)訪問(wèn)的文件,需要先打開(kāi)該文件,再把記錄從文件讀到程序變量,然后改變各變量的值,最后把變量寫(xiě)回文件。

2)打開(kāi)隨機(jī)文件在使用隨機(jī)文件之前,應(yīng)先用Open語(yǔ)句打開(kāi)它。Open語(yǔ)句的語(yǔ)法格式為:

OpenpathnameForRandomAsfilenumberLen=reclength其中各參數(shù)的含義如下:●??ForRandom:可選項(xiàng)。如果未指定打開(kāi)文件的方式,則以Random訪問(wèn)方式打開(kāi)文件。對(duì)隨機(jī)文件進(jìn)行打開(kāi)操作時(shí),讀或?qū)懩J蕉枷嗤?,無(wú)須指明輸入、輸出或追加模式。因?yàn)殡S機(jī)文件按記錄操作,無(wú)論讀或?qū)懚疾挥绊懳募衅渌麅?nèi)容,只要打開(kāi)一次隨機(jī)文件就可同時(shí)進(jìn)行讀或?qū)懖僮??!??Len=reclength:該表達(dá)式指定了每條記錄的大小。如果reclength設(shè)置的值比寫(xiě)入文件中的記錄的實(shí)際長(zhǎng)度短,則會(huì)產(chǎn)生一個(gè)錯(cuò)誤;如果reclength設(shè)置的值比記錄的實(shí)際長(zhǎng)度長(zhǎng),則記錄可以寫(xiě)入,但是會(huì)浪費(fèi)一些磁盤(pán)空間。例如:

DimLastrecordAsLong'存放最后一條記錄的編號(hào)

Dimstudent1Asstudent

DimRecLengthasLong

RecLength=Len(student1)'計(jì)算每條記錄的長(zhǎng)度

FileNum=FreeFile()

'取出下一個(gè)可用文件編號(hào)

Open“School.dat”ForRandomAsFileNum

Len=

RecLength'用Open語(yǔ)句打開(kāi)新文件

LastRecord=LOF(FileNum)/RecLength'存放文件中記錄的個(gè)數(shù)

3)隨機(jī)文件的讀操作使用Get語(yǔ)句可以從隨機(jī)文件中讀出指定的記錄,其語(yǔ)法格式為:

Get[#]filenumber,[recnumber],varname其中,可選參數(shù)recnumber在隨機(jī)文件中表示記錄號(hào),以表示從此處開(kāi)始讀出數(shù)據(jù)。隨機(jī)文件中第一條記錄的記錄號(hào)為1,第二條記錄為2,依此類(lèi)推。若省略recnumber,則會(huì)讀出緊隨上一個(gè)Get或Put語(yǔ)句之后的下一條記錄(或讀出最后一條Seek函數(shù)指出的記錄)。例如:用Get語(yǔ)句將數(shù)據(jù)從隨機(jī)文件讀到變量中。

DimStudent1AsStudent,PositionAsLong '聲明變量

Open"School.dat"ForRandomAs#1Len=Len(Student1)'為隨機(jī)訪問(wèn)打開(kāi)樣本文件

Position=4

'定義記錄號(hào)

Get#1,Position,Student1'讀樣本文件第4條記錄到變量Student1中

Close#1

'關(guān)閉文件把記錄讀取到變量后,就可以對(duì)記錄進(jìn)行處理。例如:用下面的語(yǔ)句將記錄的各個(gè)字段分別送到文本框中,以便用戶進(jìn)行編輯。

text1.text=Student1.Number

text2.text=Student1.Name

text3.text=Student1.Score

4)隨機(jī)文件的寫(xiě)操作使用Put語(yǔ)句可以把數(shù)據(jù)重新寫(xiě)入磁盤(pán)文件中,也可以往隨機(jī)文件中添加新的記錄。Put語(yǔ)句的語(yǔ)法格式為:

Put[#]filenumber,[recnumber],varname其中各參數(shù)的含義與Get語(yǔ)句的相同。使用Put語(yǔ)句可以完成以下操作:

(1)替換記錄。用Put語(yǔ)句替換記錄,只需指明要被替換記錄的位置即可。例如,要將上面編輯后的結(jié)果寫(xiě)入文件,以替換原來(lái)的記錄內(nèi)容,可用如下語(yǔ)句:

Student1.Number=text1.text

Student1.Name=text2.text

Student1.Score=text3.text

Put#1,Position,Student1'Position指明被替換記錄的位置

(2)添加記錄。使用Put語(yǔ)句可以向打開(kāi)的隨機(jī)文件的末端添加記錄,只需把命令參數(shù)recnumber變量的值設(shè)置為比文件中的記錄數(shù)多1即可。

(3)刪除記錄。通過(guò)清除記錄分量可以刪除一條記錄,但是該記錄仍在文件中存在。通常文件中不能有空記錄,因?yàn)樗鼈儠?huì)浪費(fèi)空間且會(huì)干擾順序操作。最好把余下的記錄拷貝到一個(gè)新文件中,然后刪除原文件。清除隨機(jī)訪問(wèn)文件中要?jiǎng)h除的記錄的操作步驟如下:①創(chuàng)建一個(gè)新文件;②把有用的所有記錄從原文件復(fù)制到新文件;③關(guān)閉原文件并用Kill語(yǔ)句刪除它;④使用Name語(yǔ)句把新文件以原文件的名字重新命名。

3.程序?qū)崿F(xiàn)

1)界面設(shè)計(jì)與屬性設(shè)置具體操作步驟如下:

(1)新建工程,添加一個(gè)窗體。

(2)在窗體中添加控件,包括3個(gè)文本框、3個(gè)命令按鈕和3個(gè)標(biāo)簽。

(3)按表10.5所示設(shè)置窗體及控件屬性。設(shè)計(jì)好的程序界面如圖10.3所示。表10.5窗體及控件屬性

2)編寫(xiě)代碼其代碼編寫(xiě)如下:

PrivateTypeStudent

NameAsString*8

AgeAsInteger

SexAsString*2

EndType

PrivateSubCommand1_Click() '讀取隨機(jī)文件

DimstdAsStudent

DimRecordeLenAsInteger,recordeNumAsInteger

Text1.Text=""

Text2.Text=""

Text3.Text=""

RecordeLen=Len(std)

recordeNum=3

Open"D:\text.dat"ForRandomAs#1Len=RecordeLen

Get#1,recordeNum,std

Text1.Text=std.Name

Text2.Text=Str(std.Age)

Text3.Text=std.Sex

recordeNum=recordeNum-1

Get#1,recordeNum,std

Text1.Text=Text1.Text+Chr(13)+Chr(10)+std.Name

Text2.Text=Text2.Text+Chr(13)+Chr(10)+Str(std.Age)

Text3.Text=Text3.Text+Chr(13)+Chr(10)+std.Sex

recordeNum=recordeNum-1

Get#1,recordeNum,std

Text1.Text=Text1.Text+Chr(13)+Chr(10)+std.Name

Text2.Text=Text2.Text+Chr(13)+Chr(10)+Str(std.Age)

Text3.Text=Text3.Text+Chr(13)+Chr(10)+std.Sex

Close#1

EndSub

PrivateSubCommand2_Click()'將記錄寫(xiě)入隨機(jī)文件

DimRecordeLenAsInteger,recordeNumAsInteger

DimZhangSanAsStudent

DimLiSiAsStudent

DimWangWuAsStudent

ZhangSan.Name="張三"

ZhangSan.Age=19

ZhangSan.Sex="男"

LiSi.Name="李四"

LiSi.Age=20

LiSi.Sex="男"

WangWu.Name="王五"

WangWu.Age=18

WangWu.Sex="女"

RecordeLen=Len(ZhangSan)

recordeNum=1

Open"D:\text.dat"ForRandomAs#1Len=RecordeLen

Put#1,recordeNum,ZhangSan

recordeNum=recordeNum+1

Put#1,recordeNum,LiSi

Put#1,,WangWu

Close#1

EndSub

PrivateSubCommand3_Click()'退出程序

UnloadMe

EndSub

3)運(yùn)行程序單擊“寫(xiě)入”命令按鈕,程序在D:\text.dat文件中寫(xiě)入三條記錄。單擊“讀出”命令按鈕,剛剛寫(xiě)入文件的學(xué)生記錄被讀出,顯示在三個(gè)文本框的第一行上,然后讀取第二條記錄,將學(xué)生數(shù)據(jù)顯示在三個(gè)文本框的第二行上,最后讀取第一條記錄,將學(xué)生數(shù)據(jù)顯示在三個(gè)文本框的第三行上,如圖10.4所示。圖10.4隨機(jī)文件使用示例10.3二?進(jìn)?制?文?件二進(jìn)制文件是一個(gè)字節(jié)流,文件系統(tǒng)并不解釋各字節(jié)的意義,解釋工作由具體的應(yīng)用程序完成。二進(jìn)制文件每一次讀寫(xiě)是以字節(jié)為單位對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)操作的,它允許用戶讀寫(xiě)或修改文件中的任何字節(jié)信息。當(dāng)要保持文件的尺寸盡量小時(shí),應(yīng)使用二進(jìn)制文件。以二進(jìn)制方式訪問(wèn)文件有下述特點(diǎn):●可以直接訪問(wèn)文件中的所有數(shù)據(jù);●由應(yīng)用程序根據(jù)需要解釋數(shù)據(jù)的意義;●訪問(wèn)文件的語(yǔ)句不更改原始數(shù)據(jù)的所有內(nèi)容。當(dāng)把二進(jìn)制數(shù)據(jù)寫(xiě)入文件中時(shí),應(yīng)使用Byte數(shù)據(jù)類(lèi)型的數(shù)組,而不能用String變量,因?yàn)镾tring變量被認(rèn)為包含的是字符,而二進(jìn)制型數(shù)據(jù)可能無(wú)法正確地存儲(chǔ)在String變量中。訪問(wèn)二進(jìn)制文件時(shí),首先要打開(kāi)文件,然后讀取數(shù)據(jù),最后關(guān)閉打開(kāi)的文件。

1.二進(jìn)制文件的打開(kāi)在VB中,使用Open語(yǔ)句打開(kāi)二進(jìn)制文件。其語(yǔ)法格式為:

OpenpathnameforBinaryAsfilenumber例如:打開(kāi)二進(jìn)制文件D:\text.dat。

Open"D:\text.dat"ForBinaryAs1二進(jìn)制文件在打開(kāi)時(shí)不需指明讀寫(xiě)方式,只要打開(kāi)一次便可用讀寫(xiě)語(yǔ)句進(jìn)行任意讀寫(xiě)操作。

2.二進(jìn)制文件的讀寫(xiě)二進(jìn)制文件的讀寫(xiě)與隨機(jī)文件的類(lèi)似,都可用Get和Put語(yǔ)句。其語(yǔ)法格式為:

Get[#]filenumber,[recnumber],varname

Put[#]filenumber,[recnumber],varname其中各參數(shù)的含義如下:●?recnumber:表示開(kāi)始讀取數(shù)據(jù)字節(jié)的位置,文件中第一個(gè)字節(jié)位置為1,第二個(gè)字節(jié)位置為2,依此類(lèi)推。如果省略此參數(shù),則表示從當(dāng)前位置的下一個(gè)字節(jié)開(kāi)始讀數(shù)據(jù)。當(dāng)省略該參數(shù)時(shí),參數(shù)前后的逗號(hào)不能省略?!?varname:varname的類(lèi)型決定從文件中讀取多少個(gè)字節(jié)的數(shù)據(jù),即變量在程序中進(jìn)行聲明時(shí)為其分配了內(nèi)存空間,一次讀取數(shù)據(jù)的字節(jié)數(shù)與變量在內(nèi)存中所占字節(jié)數(shù)相同。所以,程序中定義變量的長(zhǎng)度可決定每次從文件讀取數(shù)據(jù)的字節(jié)數(shù)。例如:從二進(jìn)制文件D:\text.dat中讀取兩個(gè)字節(jié)的數(shù)據(jù)信息。

DimdataAsInteger

Get#1,data二進(jìn)制文件可以使用可變長(zhǎng)字段,所以不能隨機(jī)地訪問(wèn)記錄,而必須順序地訪問(wèn)記錄以了解每一條記錄的長(zhǎng)度,這是進(jìn)行二進(jìn)制讀寫(xiě)操作的主要缺點(diǎn)。但是在這種文件模式下,可以直接查看文件中指定的字節(jié),所以,二進(jìn)制模式也是唯一支持用戶到文件任何位置讀寫(xiě)任意長(zhǎng)度數(shù)據(jù)的方法。

3.設(shè)置數(shù)據(jù)指針位置在隨機(jī)文件和二進(jìn)制文件中,除了可通過(guò)記錄號(hào)和字節(jié)位置來(lái)確定需要訪問(wèn)的數(shù)據(jù)外,還可以通過(guò)Seek語(yǔ)句設(shè)置在打開(kāi)文件中下一次進(jìn)行讀或?qū)懖僮鞯奈恢?。Seek語(yǔ)句的語(yǔ)法格式為:

Seek[#]filenumber,position其中,參數(shù)position為必選項(xiàng),是介于1~2147483647之間的數(shù)字,指出下一個(gè)讀寫(xiě)操作將要發(fā)生的位置??捎迷撜Z(yǔ)句設(shè)定好數(shù)據(jù)指針位置,然后再對(duì)文件進(jìn)行讀寫(xiě)操作。為了同時(shí)利用隨機(jī)文件和二進(jìn)制文件的優(yōu)點(diǎn),一般采用下述方法:當(dāng)字段長(zhǎng)度固定或變化不大時(shí),使用隨機(jī)文件模式;對(duì)于長(zhǎng)度變化很大的字段,使用二進(jìn)制文件模式。在Binary、Input和Random方式下,可以用不同的文件號(hào)打開(kāi)同一文件,而不必先將該文件關(guān)閉。在Append和Output方式下,如果要用不同的文件號(hào)打開(kāi)同一文件,則必須在打開(kāi)文件之前先關(guān)閉該文件。10.4與文件系統(tǒng)相關(guān)的控件在設(shè)計(jì)應(yīng)用程序時(shí),常常需要用戶選擇驅(qū)動(dòng)器、目錄、文件,VisualBasic為用戶查找文件提供了兩種途徑:一種是利用通用對(duì)話框(CommonDialog)控件提供的標(biāo)準(zhǔn)對(duì)話框,該對(duì)話框中列出了驅(qū)動(dòng)器、目錄和文件;另一種是利用文件系統(tǒng)控件組合創(chuàng)建自己的對(duì)話框。VisualBasic提供三種文件系統(tǒng)控件:驅(qū)動(dòng)器列表框(DriveListBox)、目錄列表框(DirListBox)和文件列表框(FileListBox)。這三種控件一般同時(shí)出現(xiàn)在一個(gè)界面上,用于和用戶交互管理文件系統(tǒng),但三者在界面設(shè)計(jì)階段僅顯示當(dāng)前驅(qū)動(dòng)器下的目錄結(jié)構(gòu)及當(dāng)前目錄下的文件結(jié)構(gòu),且三者之間無(wú)任何聯(lián)系,所以在程序設(shè)計(jì)時(shí)必須通過(guò)代碼將三者有機(jī)地聯(lián)系起來(lái)。驅(qū)動(dòng)器列表框、目錄列表框和文件列表框三種控件能夠自動(dòng)地從操作系統(tǒng)中獲取一切信息,且操作比CommonDialog控件更靈活、功能更強(qiáng)大。但如果只需要標(biāo)準(zhǔn)的“打開(kāi)文件”或“保存”文件對(duì)話框,則使用CommonDialog控件就可以滿足要求。案例3驅(qū)動(dòng)器列表框、目錄列表框、文件列表框控件的應(yīng)用

1.學(xué)習(xí)目標(biāo)設(shè)計(jì)一個(gè)文件系統(tǒng)控件的演示程序,要求運(yùn)行該程序時(shí),在文本框中輸入某種類(lèi)型的文件(如

.exe),則在文件列表框中顯示出同一類(lèi)型的文件。若改變驅(qū)動(dòng)器列表框或目錄列表框的信息,則文件列表框中顯示的文件也要發(fā)生變化,但顯示文件的類(lèi)型不發(fā)生變化,程序運(yùn)行界面如圖10.5所示。圖10.5驅(qū)動(dòng)器列表框、目錄列表框、文件列表框的使用示例

2.相關(guān)知識(shí)

1)驅(qū)動(dòng)器列表框驅(qū)動(dòng)器列表框(DriveListBox)控件是下拉式列表框,用來(lái)顯示用戶系統(tǒng)中所有有效磁盤(pán)驅(qū)動(dòng)器的列表。在設(shè)計(jì)時(shí)驅(qū)動(dòng)器列表框控件已將計(jì)算機(jī)內(nèi)所有有效驅(qū)動(dòng)器名全部列入下拉列表框中,運(yùn)行程序時(shí),用戶可以直接輸入有效的驅(qū)動(dòng)器標(biāo)識(shí)符,或者單擊列表框的下拉箭頭,從列舉出的驅(qū)動(dòng)器名稱(chēng)中進(jìn)行選擇。默認(rèn)情況下,它顯示用戶系統(tǒng)的當(dāng)前驅(qū)動(dòng)器,如圖10.6所示。圖10.6驅(qū)動(dòng)器列表框驅(qū)動(dòng)器列表框的Drive屬性主要用于在運(yùn)行時(shí)返回或設(shè)置所選定的驅(qū)動(dòng)器。Drive屬性不能在設(shè)計(jì)狀態(tài)時(shí)設(shè)置,只能在程序中被引用或設(shè)置,其形式如下:

[對(duì)象.]Drive[=drive]其中,對(duì)象為驅(qū)動(dòng)器列表框名稱(chēng);Drive為驅(qū)動(dòng)器名稱(chēng)。每次重新設(shè)置Drive屬性都會(huì)引發(fā)該控件的Change事件。例如:語(yǔ)句Drive1.Drive="d:\"?可將列表框頂端的驅(qū)動(dòng)器更改為“d:\”。

2)目錄列表框目錄列表框(DirListBox)控件顯示當(dāng)前驅(qū)動(dòng)器的目錄結(jié)構(gòu)及當(dāng)前目錄下的所有子目錄,供用戶選擇其中的某個(gè)目錄作為當(dāng)前目錄。在目錄列表框中,如果雙擊某個(gè)目錄,就會(huì)顯示出該目錄下的所有子目錄。例如,在執(zhí)行時(shí)雙擊C:?根目錄就會(huì)顯示出C:?根目錄下的所有子目錄,若要查看WINNT子目錄結(jié)構(gòu),只需雙擊WINNT子目錄即可,結(jié)果如圖10.7所示。圖10.7目錄列表框目錄列表框只能顯示出當(dāng)前驅(qū)動(dòng)器下的子目錄。如果要顯示其他驅(qū)動(dòng)器下的目錄結(jié)構(gòu),則必須重新設(shè)置目錄列表框上的Path屬性。目錄列表框的Path屬性用來(lái)返回或設(shè)置當(dāng)前路徑,它適用于目錄列表框和文件列表框,不能在設(shè)計(jì)狀態(tài)下設(shè)置。其形式如下:

[對(duì)象.]Path[=pathname]其中,對(duì)象指目錄列表框或文件列表框;pathname是一個(gè)路徑名字符串。每次重新設(shè)置Path屬性都會(huì)引發(fā)目錄列表框控件的Change事件。如果窗體上同時(shí)建立了驅(qū)動(dòng)器列表框和目錄列表框,則在drvDrive_Change事件過(guò)程中加入語(yǔ)句drvDirectory.Path

=drvDrive.Drive就可以產(chǎn)生同步效果,即在驅(qū)動(dòng)器列表框中改變驅(qū)動(dòng)器的內(nèi)容,則目錄列表框中的內(nèi)容立即同步改變。因?yàn)?,?dāng)在驅(qū)動(dòng)器列表框drvDrive中改變了驅(qū)動(dòng)器時(shí),drvDrive.Drive屬性改變了,觸發(fā)了drvDrive_Change事件,執(zhí)行drvDirectory.Path=drvDrive.Drive語(yǔ)句,改變drvDirectory.Path屬性就意味著目錄列表框drvDirectory的內(nèi)容改變了,從而立即顯示剛剛被選定的驅(qū)動(dòng)器的目錄結(jié)構(gòu)。

3)文件列表框文件列表框(FileListBox)控件是用來(lái)顯示當(dāng)前驅(qū)動(dòng)器中當(dāng)前目錄下的文件目錄清單的一種列表框。文件列表框也有Path屬性,表示列表框中顯示的文件所在的路徑。每次重新設(shè)置文件列表框的Path屬性都會(huì)引發(fā)PathChange事件。文件列表框的Pattern屬性用于返回或設(shè)置文件列表框所顯示的文件類(lèi)型。該屬性值為具有通配符的文件名字符串,缺省值為“

.

”,表示可顯示所有文件。此屬性既可以在設(shè)計(jì)時(shí)設(shè)置,也可以在程序中改變。其形式如下:

[對(duì)象.]Pattern[=value]其中,對(duì)象指文件列表框名稱(chēng);value是一個(gè)文件名字符串。每次重新設(shè)置Pattern屬性都會(huì)引發(fā)該控件的PatternChange事件。例如:如果執(zhí)行了語(yǔ)句

filFile.Pattern="

.exe"則filFile文件列表框中只顯示?.exe文件,如圖10.8所示。圖10.8文件列表框

3.程序?qū)崿F(xiàn)

1)界面設(shè)計(jì)與屬性設(shè)置具體操作步驟如下:

(1)新建工程,添加一個(gè)窗體。

(2)在窗體中添加控件,包括4個(gè)標(biāo)簽、1個(gè)文本框、2個(gè)命令按鈕,驅(qū)動(dòng)器列表框、目錄列表框和文件列表框各1個(gè)。

(3)按表10.6所示設(shè)置窗體及控件屬性。設(shè)計(jì)好的程序界面如圖10.5所示。表10.6窗體及控件屬性

2)編寫(xiě)代碼編寫(xiě)事件代碼如下:

PrivateSubCommand1_Click()

File1.FileName=Text1.Text

EndSub

PrivateSubCommand2_Click()

UnloadMe

EndSub

PrivateSubDrive1_Change()'使目錄列表框中的路徑與驅(qū)動(dòng)器列表同步變化

Dir1.Path=Drive1.Drive

MsgBox"選中的驅(qū)動(dòng)器是"+Drive1.Drive

EndSub

PrivateSubDir1_Change()

File1.Path=Dir1.Path '設(shè)置文件列表框路徑

MsgBox"選中的文件夾是"+Dir1.Path

EndSub

PrivateSubFile1_Click()

MsgBox"選中的文件是"+File1.FileName

EndSub

PrivateSubFile1_PatternChange()

Text1.Text=File1.Pattern'將文件類(lèi)型設(shè)置為新模式

EndSub

3)運(yùn)行程序運(yùn)行程序,在文本框中輸入“

.exe”,則執(zhí)行結(jié)果如圖10.5所示。案例4通用對(duì)話框控件的應(yīng)用

1.學(xué)習(xí)目標(biāo)設(shè)計(jì)一個(gè)通用對(duì)話框操作的演示程序,要求將“打開(kāi)”、“打印”、“另存為”三個(gè)通用對(duì)話框調(diào)入窗體,設(shè)置三個(gè)命令按鈕用于調(diào)用三種對(duì)話框,其窗體布局如圖10.9所示。運(yùn)行程序后,能正確調(diào)用三個(gè)通用對(duì)話框。圖10.9通用對(duì)話框操作示例

2.相關(guān)知識(shí)通用對(duì)話框(CommonDialog)控件常用于提供要讀的文件名或要寫(xiě)的文件名。通用對(duì)話框共有六種,即Open(打開(kāi))、SaveAs(保存文件)、Print(打印)、Color(顏色)、Font(字體)、Help(幫助)。通過(guò)設(shè)置通用對(duì)話框控件的屬性和使用它的不同方法,可以打開(kāi)文件、保存文件以及顯示“顏色”對(duì)話框、“字體”對(duì)話框和“打印”對(duì)話框。

1)創(chuàng)建通用對(duì)話框控件通用對(duì)話框(CommonDialog)控件是一個(gè)ActiveX控件,使用前,應(yīng)該先將它們添加到工具箱中。具體方法如下:

(1)選擇“工程”菜單項(xiàng)中的“部件”選項(xiàng),或在工具箱中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“部件”選項(xiàng),調(diào)出“部件”對(duì)話框,如圖10.10所示。

(2)在“控件”選項(xiàng)卡中列出了可以添加的ActiveX控件,選擇所需的“Microsoft

CommonDialogControl6.0”列表項(xiàng),單擊該控件名稱(chēng)左邊的復(fù)選框。

(3)單擊“確定”命令按鈕,關(guān)閉“部件”對(duì)話框,被選中的通用對(duì)話框控件被添加到當(dāng)前工程的工具箱中,圖標(biāo)為,缺省名為CommonDialogX(X為1,2,…)。圖10.10“部件”對(duì)話框

2)通用對(duì)話框控件的屬性在調(diào)用通用對(duì)話框的方法之前,應(yīng)該根據(jù)需要設(shè)置該控件的屬性。與其他控件相似,設(shè)置通用對(duì)話框?qū)傩缘姆椒ㄒ灿袃煞N,一種是在屬性窗口中設(shè)置,另一種是使用代碼設(shè)置。在屬性窗口中設(shè)置通用對(duì)話框?qū)傩缘姆椒ㄈ缦拢?/p>

(1)右擊窗體上的通用對(duì)話框控件,再單擊彈出菜單中的“屬性”菜單項(xiàng),系統(tǒng)顯示如圖10.11所示的“屬性頁(yè)”對(duì)話框。圖10.11“屬性頁(yè)”對(duì)話框

(2)當(dāng)需要使用“打開(kāi)”對(duì)話框或“另存為”對(duì)話框時(shí),在“打開(kāi)/另存為”選項(xiàng)卡中設(shè)置通用對(duì)話框的屬性。下面簡(jiǎn)單介紹一下常用的“打開(kāi)/另存為”選項(xiàng)卡中常用選項(xiàng)的意義,其他選項(xiàng)卡選項(xiàng)的意義可參考VB6.0的MSDN幫助?!駥?duì)話框標(biāo)題:對(duì)應(yīng)于通用對(duì)話框的DialogTitle屬性,指定“打開(kāi)”對(duì)話框或“另存為”對(duì)話框的標(biāo)題。缺省時(shí),這兩個(gè)對(duì)話框的標(biāo)題分別為“打開(kāi)”和“另存為”?!裎募Q(chēng):對(duì)應(yīng)于通用對(duì)話框的FileName屬性,指定通用對(duì)話框中缺省選中的文件的名稱(chēng),同時(shí)也指明了通用對(duì)話框缺省顯示的驅(qū)動(dòng)器和目錄名。不指定該選項(xiàng)時(shí),“打開(kāi)”對(duì)話框或“另存為”對(duì)話框自動(dòng)顯示當(dāng)前驅(qū)動(dòng)器上當(dāng)前目錄下的文件?!癯跏蓟窂剑簩?duì)應(yīng)于通用對(duì)話框的InitDir屬性,指定“打開(kāi)”或“另存為”對(duì)話框的初始目錄。如果此屬性沒(méi)有指定,則通用對(duì)話框使用當(dāng)前目錄。●過(guò)濾器:對(duì)應(yīng)于通用對(duì)話框的Filter屬性,指定對(duì)話框中都顯示哪些文件。例如,選擇過(guò)濾器為*.txt時(shí),對(duì)話框中顯示所有的文本文件。過(guò)濾器的格式為:

description1|filter1|description2|filter2…其中,description1、description2是過(guò)濾器的文本描述;filter1、filter2是過(guò)濾器的定義?!駱?biāo)志:對(duì)應(yīng)于通用對(duì)話框的Flags屬性,指定“打開(kāi)”或“另存為”對(duì)話框的形式以及文件選擇方式(單項(xiàng)選擇還是多項(xiàng)選擇)。

3)通用對(duì)話框控件的方法通用對(duì)話框有如下6個(gè)常用的方法:

(1)?ShowOpen方法:用于調(diào)用“打開(kāi)”對(duì)話框;

(2)?ShowSave方法:用于調(diào)用“另存為”對(duì)話框;

(3)?ShowPrinter方法:用于調(diào)用“打印”對(duì)話框;

(4)?ShowColor方法:用于調(diào)用“顏色”對(duì)話框;

(5)?ShowFont方法:用于調(diào)用“字體”對(duì)話框;

(6)?ShowHelp方法:用于調(diào)用“幫助”對(duì)話框。

3.程序?qū)崿F(xiàn)

1)界面設(shè)計(jì)與屬性設(shè)置具體操作步驟如下:

(1)新建工程,添加一個(gè)窗體。

(2)在窗體中添加控件,包括3個(gè)通用對(duì)話框和3個(gè)命令按鈕。

(3)設(shè)置通用對(duì)話框控件的屬性。在第1個(gè)通用對(duì)話框控件中,將“打開(kāi)/另存為”選項(xiàng)卡中的對(duì)話框標(biāo)題指定為“打開(kāi)”,過(guò)濾器的格式設(shè)置為“所有文件(*.*)?|?*.*?|?文本

溫馨提示

  • 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)論