亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 018.htm

?? Delphi基礎知識講座
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第六章 文件管理(三)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第六章 文件管理(三)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第六章 文件管理(三)">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 background="bg.gif" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">

<TR>
<TD CLASS="tt3" VALIGN="top" width="8%"  background="bg.gif"><strong><A HREF="019.htm" ><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="017.htm" ><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>

<A HREF="index.html" ><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" background="bg.gif" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第六章 文件管理(三)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p>2.<font face="宋體" lang="ZH-CN">畫出每個自畫項目 </p>
<p>  這在</font>TabSet<font face="宋體" lang="ZH-CN">的</font>OnDrawTab<font
face="宋體" lang="ZH-CN">事件處理過程中完成。這一事件處理過程的參數中包含了待畫項目索引、畫板、待畫區域、是否被選中等。這里我們只利用了前三個參數。事實上利用最后一個參數,我們可以對被選中的標簽進行一些特殊的視覺效果處理。這一工作就留給讀者自己去完成。 </p>
</font><p>procedure TFMForm.DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;</p>
<p>R: TRect; Index: Integer; Selected: Boolean);</p>
<p>var</p>
<p>Bitmap: TBitmap;</p>
<p>begin</p>
<p>Bitmap := TBitmap(DriveTabSet.Tabs.Objects[Index]);</p>
<p>with TabCanvas do</p>
<p>begin</p>
<p>Draw(R.Left, R.Top + 4, Bitmap);</p>
<p>TextOut(R.Left + 2 + Bitmap.Width, R.Top + 2, DriveTabSet.Tabs[Index]);</p>
<p>end;</p>
<p>end; </p>
<p>6.4.5 <font face="宋體" lang="ZH-CN">文件管理基本功能的實現 </p>
<p>  在子窗口的</font>File<font face="宋體" lang="ZH-CN">菜單中,定義了文件管理的基本功能,它們是:</p>
<p>  ●</font> Open <font face="宋體" lang="ZH-CN">:打開或運行一個文件</font>(<font
face="宋體" lang="ZH-CN">從文件列表框雙擊該文件可實現同樣效果</font>)</p>
<p><font face="宋體" lang="ZH-CN">●</font> Move <font face="宋體" lang="ZH-CN">:文件在不同目錄間的移動</p>
<p>  ●</font> Copy <font face="宋體" lang="ZH-CN">:文件拷貝</p>
<p>  ●</font> Delete <font face="宋體" lang="ZH-CN">:文件刪除</p>
<p>  ●</font> Rename <font face="宋體" lang="ZH-CN">:文件更名</p>
<p>  ●</font> Properties <font face="宋體" lang="ZH-CN">:顯示文件屬性 </p>
</font><p>6.4.5.1 <font face="宋體" lang="ZH-CN">文件打開 </p>
<p>  文件打開功能可以運行一個可執行文件,或把文件在與之相關聯的應用程序中打開。文件總是與創建它的應用程序相關聯,這種關聯可以在</font>Windows<font
face="宋體" lang="ZH-CN">的文件管理器中修改。要注意的是:文件的關聯是以后綴名為標志的,因而對一個文件關聯方式的修改將影響所有相同后綴名的文件。</p>
<p>  文件打開功能實現的關鍵是利用了</font>Windows API<font
face="宋體" lang="ZH-CN">函數</font>ShellExecute <font face="宋體" lang="ZH-CN">。由于</font>Windows
API<font face="宋體" lang="ZH-CN">函數的參數要求字符串類型是</font>PChar<font
face="宋體" lang="ZH-CN">,而</font>Delphi<font face="宋體" lang="ZH-CN">中一般用的是有結束標志的</font>String<font
face="宋體" lang="ZH-CN">類型,因此為調用方便我們把這一函數進行了重新定義如下。 </p>
</font><p>function ExecuteFile(const FileName, Params, DefaultDir: String;</p>
<p>ShowCmd: Integer): THandle;</p>
<p>var</p>
<p>zFileName, zParams, zDir: array[0..79] of Char;</p>
<p>begin</p>
<p>Result := ShellExecute(Application.MainForm.Handle, nil,</p>
<p>StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),</p>
<p>StrPCopy(zDir, DefaultDir), ShowCmd);</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p>  以上函數在</font>fmxutils<font
face="宋體" lang="ZH-CN">單元中定義。</font>fmxutils<font face="宋體"
lang="ZH-CN">是一個自定義代碼單元。</p>
<p>  有關</font>ShellExecute<font face="宋體" lang="ZH-CN">中各參數的具體含義讀者可查閱聯機</font>Help<font
face="宋體" lang="ZH-CN">文件。</p>
<p>  </font>StrPCopy<font face="宋體" lang="ZH-CN">把一個</font>Pascal<font
face="宋體" lang="ZH-CN">類型的字符串拷貝到一個無結束符的</font>PChar<font
face="宋體" lang="ZH-CN">類型字符串中。</p>
<p>  在子窗口的</font>Open1Click<font face="宋體" lang="ZH-CN">事件處理過程中: </p>
</font><p>procedure TFMForm.Open1Click(Sender: TObject);</p>
<p>begin</p>
<p>with FileList do</p>
<p>ExecuteFile(FileName, '', Directory, SW_SHOW) ;</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p>  如果</font>FileList<font face="宋體"
lang="ZH-CN">允許顯示目錄的話</font>(<font face="宋體" lang="ZH-CN">即</font>FileType<font
face="宋體" lang="ZH-CN">屬性再增加一項</font>ftDirectory)<font face="宋體"
lang="ZH-CN">,那么對于一個目錄而言,打開的含義應該是顯示它下邊的子目錄和文件。程序修改如下。 </p>
<p> </font> procefure TFMForm.Open1Click(Sender: Tobject);</p>
<p>begin</p>
<p>With FileList do</p>
<p>begin</p>
<p>if HasAttr(FileName,faDirectory) then</p>
<p>DirectoryOutline.Directory := FileName</p>
<p>else</p>
<p>ExecuteFile(FileName,' ' ,Directory,SW_SHOW);</p>
<p>end;</p>
<p>end; </p>
<p><font face="宋體" lang="ZH-CN">其中</font>HasAttr<font face="宋體" lang="ZH-CN">是一個</font>fmxutils<font
face="宋體" lang="ZH-CN">單元中的自定義函數,用于檢測指定文件是否具有某種屬性。 </p>
</font><p>function HasAttr(const FileName: String; Attr: Word): Boolean;</p>
<p>begin</p>
<p>Result := (FileGetAttr(FileName) and Attr) = Attr;</p>
<p>end; </p>
<p>6.4.5.2 <font face="宋體" lang="ZH-CN">文件拷貝、移動、刪除、更名 </p>
<p>  文件拷貝的關鍵是使用了以文件句柄為操作對象的文件管理函數,因而提供了一種底層的</font>I/O<font
face="宋體" lang="ZH-CN">通道。在</font>Object Pascal<font face="宋體"
lang="ZH-CN">中這一點是利用無類型文件實現的。</p>
<p>  在文件拷貝中首先檢查目標文件名是否是一個目錄。如是則把原文件的文件名添加到目標路徑后,生成目標文件全路徑名。而后提取源文件的時間戳,以備拷貝完成后設置目標文件。拷貝過程中使用了返回文件句柄或以文件句柄為參數的文件管理函數</font>FileOpen<font
face="宋體" lang="ZH-CN">、</font>FileCreate<font face="宋體" lang="ZH-CN">、</font>FileRead<font
face="宋體" lang="ZH-CN">、</font>FileWrite<font face="宋體" lang="ZH-CN">、</font>FileClose<font
face="宋體" lang="ZH-CN">。為保證文件的正常關閉和內存的釋放,在拷貝過程中進行異常保護。</font></p>
<p><font face="宋體" lang="ZH-CN">過程</font>CopyFile<font face="宋體" lang="ZH-CN">實現上述功能,它定義在</font>fmxutils<font
face="宋體" lang="ZH-CN">單元中。 </p>
</font><p>procedure CopyFile(const FileName, DestName: TFileName);</p>
<p>var</p>
<p>CopyBuffer: Pointer; </p>
<p>TimeStamp, BytesCopied: Longint;</p>
<p>Source, Dest: Integer; </p>
<p>Destination: TFileName; </p>
<p>const</p>
<p>ChunkSize: Longint = 8192; </p>
<p>begin</p>
<p>Destination := ExpandFileName(DestName); </p>
<p>if HasAttr(Destination, faDirectory) then </p>
<p>Destination := Destination + '\' + ExtractFileName(FileName); </p>
<p>TimeStamp := FileAge(FileName); </p>
<p>GetMem(CopyBuffer, ChunkSize); </p>
<p>try</p>
<p>Source := FileOpen(FileName, fmShareDenyWrite);</p>
<p>if Source &lt; 0 then </p>
<p>raise EFOpenError.Create(FmtLoadStr(SFOpenError, [FileName]));</p>
<p>try</p>
<p>Dest := FileCreate(Destination); </p>
<p>if Dest &lt; 0 then </p>
<p>raise EFCreateError.Create(FmtLoadStr(SFCreateError,[Destination]));</p>
<p>try</p>
<p>repeat</p>
<p>BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); </p>
<p>if BytesCopied &gt; 0 then </p>
<p>FileWrite(Dest, CopyBuffer^, BytesCopied); </p>
<p>until BytesCopied &lt; ChunkSize; </p>
<p>finally</p>
<p>FileSetDate(Dest,TimeStamp);</p>
<p>FileClose(Dest); </p>
<p>end;</p>
<p>finally</p>
<p>FileClose(Source); </p>
<p>end;</p>
<p>finally</p>
<p>FreeMem(CopyBuffer, ChunkSize);</p>
<p>end;</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p>  如果我們不使用</font>FileSetDate<font
face="宋體" lang="ZH-CN">過程,</font>Windows<font face="宋體" lang="ZH-CN">自動把當前時間作為時間戳寫入文件。</p>
<p>  文件移動事實上是文件拷貝與文件刪除的結合。</font>fmxutils<font
face="宋體" lang="ZH-CN">單元中的</font>MoveFile<font face="宋體" lang="ZH-CN">過程實現了這一功能。 </p>
</font><p>procedure MoveFile(const FileName, DestName: TFileName);</p>
<p>var</p>
<p>Destination: TFileName;</p>
<p>begin</p>
<p>Destination := ExpandFileName(DestName); </p>
<p>if not RenameFile(FileName, Destination) then </p>
<p>begin</p>
<p>if HasAttr(FileName, faReadOnly) then </p>
<p>raise EFCantMove.Create(Format(SFCantMove, [FileName])); </p>
<p>CopyFile(FileName, Destination); </p>
<p>DeleteFile(FileName); </p>
<p>end;</p>
<p>end; </p>
<p>EFCanMove<font face="宋體" lang="ZH-CN">是一個自定義異常類: </p>
<p>  </font>type</p>
<p>EFCanMove := Class(EStreamError);</p>
<font face="宋體" lang="ZH-CN"><p>  有關自定義異常類請參閱第十二章。</p>
<p>  文件刪除、文件更名直接調用</font>Delphi<font face="宋體"
lang="ZH-CN">文件管理過程</font>DeleteFile<font face="宋體" lang="ZH-CN">、</font>RenameFile<font
face="宋體" lang="ZH-CN">。它們都以文件名為參數。操作執行前應彈出一個對話框進行確認,執行完畢后應調用</font>Update<font
face="宋體" lang="ZH-CN">方法更新</font>FileList<font face="宋體" lang="ZH-CN">的顯示。 </p>
</font><p>6.4.5.3 <font face="宋體" lang="ZH-CN">一致的界面 </p>
<p>  文件拷貝、文件移動、</font> <font face="宋體" lang="ZH-CN">文件更名以及后邊的改變當前目錄在形式上都表現為從一個源文件到一個目標文件。因而可以采用統一的用戶界面,即</font>ChangeForm<font
face="宋體" lang="ZH-CN">對話框</font></p>
<font face="宋體" lang="ZH-CN"><p>這四個菜單項共用一個</font>Click<font
face="宋體" lang="ZH-CN">事件處理過程,通過對</font>Sender<font face="宋體"
lang="ZH-CN">參數的檢測,決定將要打開對話框的標題和顯示內容。當用戶按</font>OK<font
face="宋體" lang="ZH-CN">鍵關閉且目標文件</font>(<font face="宋體"
lang="ZH-CN">目錄</font>)<font face="宋體" lang="ZH-CN">非空時,程序彈出一個消息對話框要求用戶進一步確認,而后執行相應的動作。</p>
<p>  共用的事件處理過程</font>FileChange<font face="宋體" lang="ZH-CN">的程序清單如下: </p>
</font><p>procedure TFMForm.FileChange(Sender: TObject);</p>
<p>var</p>
<p>ChangeForm: TChangeForm;</p>
<p>IsFile: Boolean;</p>
<p>begin</p>
<p>ChangeForm := TchangeForm.Create(Self);</p>
<p>IsFile := True;</p>
<p>with ChangeForm do</p>
<p>begin</p>
<p>if Sender = Move1 then Caption := 'Move'</p>
<p>else if Sender = Copy1 then Caption := 'Copy'</p>
<p>else if Sender = Rename1 then Caption := 'Rename'</p>
<p>else if Sender = ChangeDirectory1 then</p>
<p>begin</p>
<p>Caption:='Change Directory';</p>
<p>IsFile:=False;</p>
<p>end</p>
<p>else Exit;</p>
<p>if IsFile then</p>
<p>begin</p>
<p>CurrentDir.Caption := FileList.Directory;</p>
<p>FromFileName.Text := FileList.FileName;</p>
<p>ToFileName.Text := '';</p>
<p>end</p>
<p>else</p>
<p>begin</p>
<p>CurrentDir.Caption := DriveTabSet.Tabs[DriveTabSet.TabIndex];</p>
<p>FromFileName.Text := DirectoryOutline.Directory;</p>
<p>ToFileName.Text := '';</p>
<p>end;</p>
<p>if (ShowModal &lt;&gt; idCancel) and (ToFileName.Text &lt;&gt; '') then</p>
<p>ConfirmChange(Caption, FromFileName.Text, ToFileName.Text);</p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费久久 | 欧美天堂一区二区三区| 欧美激情综合网| 成人免费高清在线| 国产精品久久久久aaaa樱花| 成人美女在线观看| 亚洲精品一二三区| 欧美撒尿777hd撒尿| 性做久久久久久久免费看| 欧美视频自拍偷拍| 免费高清成人在线| 久久久久国产精品厨房| 不卡一区中文字幕| 一二三四区精品视频| 欧美日韩国产精品自在自线| 蜜臀av国产精品久久久久| 日韩精品一区二区三区视频| 国产自产高清不卡| 亚洲图片激情小说| 欧美日韩国产乱码电影| 国产一区在线精品| 日韩美女视频一区| 欧美一区二区三区免费在线看| 韩国精品一区二区| 亚洲精品成人少妇| 欧美成人精品福利| 99久久婷婷国产| 日韩精品一级二级| 国产精品私人影院| 91精品国产综合久久精品图片| 国产经典欧美精品| 亚洲成人7777| 国产欧美精品国产国产专区 | 91在线播放网址| 亚洲va国产天堂va久久en| 精品国产区一区| 色综合久久66| 国产一区二区三区久久久 | 免费一级片91| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产午夜精品一区二区三区嫩草 | 欧美色欧美亚洲另类二区| 狠狠色丁香久久婷婷综| 亚洲一区在线播放| 国产欧美日韩中文久久| 日韩欧美国产小视频| 另类人妖一区二区av| 亚洲一区二区三区四区五区黄| 欧美一级在线视频| 欧美一区二区三区性视频| 91免费视频观看| 精品伊人久久久久7777人| 一区二区三区免费在线观看| 久久九九影视网| 日韩一级大片在线| 欧美日韩三级视频| 91香蕉国产在线观看软件| 国产乱码精品一区二区三区忘忧草| 亚洲国产一区二区a毛片| 欧美激情一区在线| 26uuu国产日韩综合| 91精品国产色综合久久不卡电影 | 高清视频一区二区| 捆绑调教美女网站视频一区| 亚洲国产aⅴ成人精品无吗| 亚洲天堂久久久久久久| 中文字幕免费不卡在线| 国产亚洲精品资源在线26u| 日韩欧美一级精品久久| 宅男噜噜噜66一区二区66| 欧美日韩国产美女| 欧美精品日日鲁夜夜添| 欧美日韩国产乱码电影| 欧美日韩一区二区不卡| 欧美日韩国产首页| 欧美熟乱第一页| 欧美精品在欧美一区二区少妇| 欧美日韩一区二区在线观看| 欧美日韩午夜影院| 欧美精品久久99| 欧美一区二区三区不卡| 欧美一区二区三区四区在线观看| 欧美日本免费一区二区三区| 欧美人妇做爰xxxⅹ性高电影 | 亚洲福利电影网| 亚洲a一区二区| 日韩一区精品字幕| 久久se精品一区精品二区| 久久av中文字幕片| 国产精品一区二区果冻传媒| 国产福利一区在线| www.欧美日韩国产在线| 91在线观看一区二区| 欧美综合色免费| 8v天堂国产在线一区二区| 欧美疯狂性受xxxxx喷水图片| 欧美一区二区三区在线看| 欧美大度的电影原声| 国产亚洲一区二区三区四区| 国产精品国产三级国产普通话蜜臀| 1区2区3区国产精品| 午夜精品福利一区二区蜜股av| 秋霞国产午夜精品免费视频| 国产在线播放一区二区三区| a在线播放不卡| 欧美日韩视频第一区| 精品国产三级a在线观看| 国产精品久99| 亚洲444eee在线观看| 国产一区二区女| 99久久er热在这里只有精品15| 91高清视频免费看| 欧美成人a∨高清免费观看| 国产精品久久久久三级| 性久久久久久久| 国产999精品久久| 欧美日韩电影在线播放| 久久久久亚洲蜜桃| 亚洲国产日韩综合久久精品| 捆绑调教一区二区三区| 91视频你懂的| 精品国产乱码久久久久久免费| 中文字幕欧美国产| 日产欧产美韩系列久久99| 国产99久久久久| 91麻豆精品国产91久久久更新时间| www国产成人| 亚洲图片自拍偷拍| 高清国产午夜精品久久久久久| 欧美男男青年gay1069videost| 中文字幕av一区二区三区| 婷婷成人激情在线网| 成人av网址在线| 日韩精品一区二区三区视频 | 亚洲色图在线播放| 精品一区二区三区在线观看国产 | 欧美激情一区二区三区在线| 性久久久久久久久| 99精品桃花视频在线观看| 日韩免费性生活视频播放| 亚洲国产精品久久一线不卡| 成人影视亚洲图片在线| 欧美成人乱码一区二区三区| 亚洲成a人v欧美综合天堂 | 久久www免费人成看片高清| 欧洲精品在线观看| 亚洲国产精品高清| 久久er精品视频| 日韩一区二区三区视频在线观看 | 亚洲综合网站在线观看| 成人美女在线观看| 国产亚洲午夜高清国产拍精品| 免费高清在线一区| 欧美精品黑人性xxxx| 亚洲高清久久久| 在线观看亚洲成人| 亚洲欧美另类久久久精品| 成人精品一区二区三区中文字幕| 精品国产乱码久久久久久老虎| 日韩影视精彩在线| 在线不卡免费欧美| 亚洲mv在线观看| 欧美精品亚洲一区二区在线播放| 亚洲综合视频在线观看| 日本伦理一区二区| 亚洲色图20p| 91农村精品一区二区在线| 欧美国产精品久久| 白白色 亚洲乱淫| 国产精品传媒入口麻豆| 99国产精品视频免费观看| 国产精品久久久久一区| 99久久国产综合色|国产精品| 亚洲已满18点击进入久久| 91国偷自产一区二区使用方法| 亚洲精品v日韩精品| 欧美性猛交xxxxxxxx| 亚洲综合在线第一页| 欧美日韩久久久一区| 视频一区在线视频| 日韩欧美国产一区二区在线播放| 国产精品乡下勾搭老头1| 亚洲国产一区二区三区青草影视| 欧美中文字幕久久| 亚洲高清久久久| 日韩精品一区二区三区四区| 国内偷窥港台综合视频在线播放| 7777精品伊人久久久大香线蕉的| 日本怡春院一区二区| 欧美成人一区二区三区在线观看| 国产高清久久久久| 最好看的中文字幕久久| 欧美日韩成人高清| 久88久久88久久久| 中文字幕一区二区三区四区| 欧美亚一区二区| 黄一区二区三区| 亚洲欧洲精品一区二区三区不卡| 欧美亚洲另类激情小说| 麻豆精品一区二区综合av|