免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Delphi獲取文件夾路徑的三種方式

源:http://52wuxinle.blog.163.com/blog/static/8339236020110702019118/

問題一:在Win98中右擊“我的文檔”,選屬性,在彈出的“我的文檔 屬性”窗口
中點(diǎn)擊“瀏覽”按鈕就會(huì)彈出一個(gè)“瀏覽文件夾”對(duì)話框。請(qǐng)問這個(gè)對(duì)話框是怎么做出
來的?
  答案:要做這個(gè)對(duì)話框有三種方法。
 ?。ㄒ唬┑谝环N方法是用Delphi提供的組件(在Win 3.1面板上)模仿在上面看到的對(duì)
話框自己組裝一個(gè)“瀏覽文件夾”窗體。具體的做法是:
  1. 在你的Project里增加一個(gè)BorderStyle為bsDialog的新窗體;
  2.放置一個(gè)DirectoryListBox組件;
  3. 放置一個(gè)DriveComboBox組件,設(shè)置DirList為DirectoryListBox1;
  4.然后再放上兩個(gè)Button。一個(gè)“確定”(ModalResult為mrOk),一個(gè)“取消”
(ModalResult為mrCancel);
  5.最后只要在調(diào)用這個(gè)瀏覽文件夾的地方加上一下代碼就算大功告成了:
  if Form2.ShowModal = mrOk then
  Memo1.Lines.Add(Form2.DirectoryListBox1.Directory);
  (二)第二種方法,在Delphi中可以通過調(diào)用SelectDirectory函數(shù)得到這種效果。
  SelectDirectory在Delphi 4中的申明如下(請(qǐng)注意,一共有兩個(gè)重載的申明):
  type
  TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
  TSelectDirOpts = set of TSelectDirOpt;
  function SelectDirectory(var Directory: string;
  Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
  function SelectDirectory(const Caption: string; const Root:WideString; o
ut Directory: string): Boolean; overload;
  第一種語法的Options參數(shù)指定了“瀏覽文件夾”對(duì)話框的一些選項(xiàng);參數(shù)HelpCtx
指定上下文敏感的Help ID;Directory初始化了對(duì)話框的值,并且攜帶返回值。
  第二種語法的Caption參數(shù)指定對(duì)話框標(biāo)題(比如′請(qǐng)選擇XXX的文件夾′);參數(shù)
Root指定用來瀏覽的根目錄;所選擇文件夾返回在參數(shù)Directory中。
  不管是哪種語法,如果在對(duì)話框中選擇了路徑并按下“確定”按鈕,SelectDirect
ory函數(shù)返回True;在其它情況下,函數(shù)SelectDirectory就返回False。
 ?。ㄈ┑谌N方法是比較高明的解決方案。在Windows中已經(jīng)有一個(gè)專門用來處理這
種問題的ShellAPI函數(shù)——SHBrowseForFolder(事實(shí)上,第二種方法的第二種語法就是
調(diào)用了這個(gè)API,這在Delphi的源代碼中可以得到證實(shí))。因?yàn)樗鞘褂孟到y(tǒng)已有的API
,這樣就不會(huì)占用太多的系統(tǒng)資源,從而減小代碼長度、提高程序運(yùn)行速度,并且在Wi
ndows的不同語言版本中會(huì)自動(dòng)的和Windows相適應(yīng)。具體代碼如下:
  var
  Info: TBrowseInfo;
  Dir: array[0..260] of char;
  ItemId: PItemIDList;
  begin
  with Info do
  begin
  hwndOwner := self.Handle;
  pidlRoot := nil;
  pszDisplayName := nil;
  lpszTitle := ′請(qǐng)選擇XXX的文件夾′;
  ulFlags := 0;
  lpfn := nil;
  lParam := 0;
  iImage := 0;
  end;
  ItemId := SHBrowseForFolder(Info);
  if ItemId <> nil then
  begin
  SHGetPathFromIDList(ItemId, @Dir);
  Result := string(Dir);
  end
  else
  Result := ′′;
  end;
  如果你對(duì)最后的這種方法感興趣,以Browsing for Folders為主題在Windows API
Help中檢索將會(huì)得到更多的文檔。
  問題二:在許多軟件的制作過程中我都遇到文件復(fù)制這個(gè)問題,但我對(duì)文件操作很
不熟悉。請(qǐng)問,在Delphi中有簡單的方法能夠?qū)崿F(xiàn)這個(gè)功能嗎?
  答案:實(shí)現(xiàn)它的源代碼如下:
  var
  DesFile, SourFile: File;
  Buf: Byte;
  begin
  AssignFile(SrcFile, ″c:\autoexec.bat″);
  Reset(SrcFile, 1);// 1 = 逐個(gè)字節(jié)操作
  AssignFile(DesFile, ″c:\autoexec.bak″);
  Rewrite(DesFile, 1); // 同上
  while not Eof(SrcFile) do
  begin
  BlockRead(SrcFile, Buf, SizeOf(Byte)); // 從源文件中讀出來
  BlockWrite(DesFile, Buf, SizeOf(Byte)); // 寫到目標(biāo)文件中去
  end;
  CloseFile(SrcFile);
  CloseFile(DesFile);
  end;
  另外還有一個(gè)高招——直接使用API函數(shù)CopyFile。這個(gè)API的原型如下:
  BOOL CopyFile(
  LPCTSTR lpExistingFileName, // pointer to name of an existing file
  LPCTSTR lpNewFileName, // pointer to filename to copy to
  BOOL bFailIfExists // flag for operation if file exists
  );
  如:CopyFile( PChar(′c:\autoexec.bat′), PChar(′c:\autoexec.bak′), True);

 

 

Delphi如何實(shí)現(xiàn)瀏覽文件夾,并得出所選擇的文件夾名:
SelectDirectory函數(shù)(FileCtrl單元)
1、function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload;
2、function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
注意:使用前請(qǐng)uses FileCtrl;
第1種調(diào)用格式示例為:
const
  sCaption = '文件夾';       //彈出框標(biāo)題名(非彈出框窗體名)
  sRoot = '';                    //初始文件夾(如'C:\','D:\DownLoad'等, 不存在則從桌面)
var
  sDir: string;
begin
  if SelectDirectory(sCaption, sRoot, sDir) then
  //已返回所選文件夾路徑給sDir,自行處理
end;
 
第2種調(diào)用格式示例為:
const
  SELDIRHELP = 1000;
var
  sDir: string;            //初始文件夾(如'C:\','D:\DownLoad'等)
begin
  sDir := '';
  if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt], SELDIRHELP) then
    //已返回所選文件夾路徑給sDir,自行處理
end;

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi XE5 Android Dialogs 對(duì)話框(模擬做了一套)
粗略學(xué)習(xí)SE
java多種文件復(fù)制方式以及效率比較
delphi locate 定位記錄
手把手教您使用delphi定制您的軟件開機(jī)啟動(dòng)
delphi2010安裝出錯(cuò) unable to load plug
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服