freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第六章文件管理三-閱讀頁(yè)

2024-09-25 15:36本頁(yè)面
  

【正文】 表示當(dāng)前驅(qū)動(dòng)器。 DiskViewForm 中的三個(gè)編輯框設(shè)計(jì)時(shí)都令 ReadOnly 為 True。我們利用一個(gè)標(biāo)準(zhǔn)的 InputBox 輸入文件的匹配字符串。 procedure (Sender: TObject)。 begin FileMask := InputBox(39。,39。,)。39。*.*39。 。 end。 目錄管理功能的實(shí)現(xiàn) 在子窗口的 Directory 菜單中,提供了目錄管理功能: ● Create Directory :創(chuàng)建一個(gè)子目錄 ● Delete Directory :刪除一個(gè)空的子目錄 ● Change Directory :改變當(dāng)前目錄 創(chuàng)建目錄 創(chuàng)建目錄時(shí)首先彈出一個(gè) TNewDir 類型的對(duì)話框 對(duì)話框中要求用戶輸入目錄名。在目錄創(chuàng)建過(guò)程中關(guān)閉了 I/O 錯(cuò)誤檢測(cè),出錯(cuò)不產(chǎn)生異常而是把 IOResult 設(shè)置為非零值。 程序清單如下: procedure (Sender: TObject)。 Dir: String。 with NewDir do begin := 。39。 end。 if IOResult 0 then MessageDlg(39。, mtWarning, [mbOk], 0)。 但不幸的是目錄創(chuàng)建后我們卻無(wú)法從當(dāng)前目錄樹(shù)中看到。在后邊我們將提供一種解決方法。碰到的問(wèn)題是 : 不允許刪除當(dāng)前目錄 。因而當(dāng)用戶試圖進(jìn)入該目錄時(shí)會(huì)導(dǎo)致系統(tǒng)崩潰。假如讀者記得目錄也被操作系統(tǒng)作為一種特殊的文件對(duì)待的話,那么就不會(huì)對(duì)下面的語(yǔ)句感到奇怪了: path := 。 而后調(diào)用 RmDir 過(guò)程: RmDir(Path); 第二個(gè)問(wèn)題的解決卻頗為費(fèi)神。通過(guò)試驗(yàn)發(fā)現(xiàn):只有當(dāng) DirectoryOutline 的 Drive屬性改變時(shí),才重新從相應(yīng)驅(qū)動(dòng)器讀取目錄。 我曾經(jīng)考慮過(guò)一個(gè)笨拙的方法,那就是先改變當(dāng)前驅(qū)動(dòng)器而后再改回來(lái)。 正當(dāng)我一籌莫展時(shí),突然想到: DirectoryOutline 是一個(gè) Sample 部件,Delphi 提供了它的源代碼。但因?yàn)槲覀冇性创a,所以不必從 DirectoryOutline 繼承而是直接修改它。對(duì)創(chuàng)建新部件感興趣的讀者可閱讀本書(shū)第三 編的有關(guān)章節(jié)。而后存入另一個(gè)目錄中; Reset。程序清單如下。 begin ChDir(FDrive + 39。)。 FDirectory := ForceCase(FDirectory)。 end。由于篇幅所限,而且涉及到許多自定義部件開(kāi)發(fā)的內(nèi)容,我們也不準(zhǔn)備去詳細(xì)解釋它。 。 如何添加一個(gè)部件見(jiàn)第三編有關(guān)章節(jié)的介紹。 TDirectoryOutline 類部件 DirectoryOutline。 以上工作的最終目標(biāo)是實(shí)現(xiàn)目錄創(chuàng)建、刪除后屏幕的正確顯示。 目錄刪除過(guò)程的實(shí)現(xiàn)代碼如下。 var path: String。 begin {$I} path := 。 if MessageDlg(39。 + path + 39。, mtConfirmation,[mbYes, mbNo], 0) = idYes then RmDir(path)。 Cannot remove directory! The path might not39。exist,nonempty or is the current logged directory.39。 end。 procedure (Sender: TObject)。 Dir: String。 with NewDir do begin := 。39。 end。 if IOResult 0 then MessageDlg(39。, mtWarning, [mbOk], 0) else 。 當(dāng)完成了這些工作,把程序重新編譯、運(yùn)行后,可以發(fā)現(xiàn)我們所希望實(shí)現(xiàn)的功能完全實(shí)現(xiàn)了!同時(shí),我們有了一個(gè)更好的目錄樹(shù)部件。但需注意的是:當(dāng)改 變后目錄所在驅(qū)動(dòng)器也發(fā)生變化時(shí)應(yīng)相應(yīng)修改DriveTabSet 的當(dāng)前值。 Change Directory 的菜單事件處理過(guò)程是 FileChange,即與文件的移動(dòng)、拷貝、更名共用一個(gè)事件處理過(guò)程。 改變當(dāng)前目錄的實(shí)現(xiàn)如下。 var i: Integer。 if IOResult 0 then MessageDlg(39。, mtWarning, [mbOk], 0) else begin with DirectoryOutline do begin Directory := ToDir。 if [][1]drive then for I := 1 to 25 do if [i][1] = drive then begin := i。 end。 end。 一些問(wèn)題的處理 子窗口的標(biāo)題 Windows 的文件管理器是我們?cè)O(shè)計(jì)的楷模,在子窗口顯示標(biāo)題上也不例外。 過(guò)程 CreateCaption 用于生成子窗口的標(biāo)題。 var Cap: String。 Cap := cap+39。+。 end。如DirectoryOutline 的 Change 事件處理過(guò)程和 ViewType 菜單項(xiàng)的 Click 事件處理過(guò)程就調(diào)用了該過(guò)程。它們的值在 DirectoryOutline 和 FileList 的 Change 事件處理過(guò)程中修改。 begin CreateCaption。 := 。 := 。 procedure (Sender: TObject)。 := Format(39。, [TheFileName, GetFileSize(TheFileName)])。39。 end。 這一對(duì)話框是用 Delphi 提供的模板做的。否則所有菜單項(xiàng)應(yīng)變灰,以免導(dǎo)致系統(tǒng)崩潰。這一點(diǎn)并不很容易被人想到,希望讀者能從中受到啟發(fā)。 var FileSelected: Boolean。 := FileSelected。 := FileSelected。 := FileSelected。 end。 FileSelected := = 0; 可重用的文件處理模塊 庫(kù)單元 fmxutils 是一個(gè)代碼庫(kù),提供了若干文件處理模塊。從中我們可以體會(huì)到, Delphi 以庫(kù)單元為中心的程序組織方式提供了一種較完善的代碼重用機(jī)制。我們的介紹是以程序功能模塊來(lái)組織的,我建議讀者在學(xué)習(xí)并試圖自己建立這一程序時(shí)采用同樣的方法。這一例程在后邊的拖放操作和異常處理等章節(jié)中還要用到。 文件管理是在開(kāi)發(fā)一個(gè)高級(jí)的 Windows 程序中不可避免的要涉及到的問(wèn)題。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1