程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi編程技巧十則

Delphi編程技巧十則

編輯:Delphi
Delphi作為一門新起的Windows編程語言,由於其集
  眾多的優秀特性於一身,因而越來越得到廣大編程人員和
  發燒友的青睐。以下十則技巧涉及的面比較廣泛,希望能
  夠對Delphi的愛好者有所裨益。
  
  1.類似於vb.中的doevents功能。
  
  大家或許發現,在Delphi中沒有類似於vb.中的doev
  ents函數,這樣有的時候,我們將無法使Windows響應多
  個同時發生的事件。其實,在Delphi的applica??tion對象
  中包括類似的一個方法:ProcessMessage,你可以通過調
  用Application.ProcessMessage來完成象vb.中的doeve
  nts一樣的功能。
  
  2.在Delphi中調用NetscapeNavigator。
  
  隨著Internet的火爆,有沒有想過在你的Delphi程序
  中啟動Netscape浏覽器,顯示出你指定的WWW地址的主頁
  。下面這個程序能夠完成這一功能。
  
  programNetscape;
  
  usesDDEMan;
  
  procedureGo??toURL(sURL:string);
  
  var
  
  dde:TDDEClIEntConv;
  
  begin
  
  dde:ΚTDDEClIEntConv.Create(nil);
  
  withddedo
  
  begin
  
  //specifythelocationofnetscape.exe
  
  ServiceApplication:Κ′c:ιns32ιprogramιne
  tscape.exe′;
  
  //activatetheNetscapeNavigator
  
  SetLink(′Netscape′,′WWW―Activate′);
  
  RequestData(′0xFFFFFFFF′);
  
  //gotothespecifIEdURL
  
  SetLink(′Netscape′,′WWW―OpenURL′);
  
  RequestData(sURL+′,,0xFFFFFFFF,0x3,,,
  ′);
  
  CloseLink;
  
  end;
  
  dde.Free;
  
  end;
  
  begin
  
  GotoURL(′http://www.yahoo.com/′);
  
  end.
  
  3.格式化整數輸出。
  
  比較大的數字在輸出時會顯得不易閱讀,在Delphi中
  顯示帶分節號的數字是相當簡單的一件事,如下即可:xx
  xxx.caption:ΚFormatFloat(′#′,524667500)。
  
  
  4.在編譯時獲得提示。
  
  在Delphi2.0中,編譯時,可以讓編譯器告訴你一些
  提示,比如哪些變量聲明了,卻從來沒有使用過。我們知
  道,可以通過菜單中的選項來控制是否要Delphi這樣做,
  但如果由於一些特殊需要,你只要在指定的代碼段需要De
  lphi這樣的提示,怎麼辦呢?請參考如下的程序。
  
  {$HINTON}
  
  procedureTform1.Button1Click(Sender:TObject
  );
  
  var
  
  X:integer;
  
  begin
  
  end;
  
  {$HINTOFF}
  
  5.更改Windows95的牆紙。
  
  在Delphi中你可以很方便地更改牆紙,請參考以下的
  程序。
  
  procedureChangeIt;
  
  var
  
  Reg:TregIniFile;
  
  begin
  
  Reg:ΚTRegIniFile.Create(′ControlPanel′)
  ;
  
  Reg.WriteString(′desktop′,′Wallpaper′,
  ′c:ιpwin95ιfor??est.bmp′);
  
  Reg.WriteString(′desktop′,′TileWallpaper
  ′,′1′);
  
  Reg.Free;
  
  SystemParametersInfo(SPI―SETDESKWALLPAPER,0
  ,nil,SPIF―SENDWININICHANGE);
  
  end;
  
  6.獲得最後使用文件的日期。
  
  在Win95中有一項新的功能,就是可以獲得訪問文件
  的最後日期。著名的CleanSweapforWin95軟件中就是靠這
  一功能來作為判斷某個文件是否被經常訪問的依據之一。
  在Delphi中,我們可以通過下面的程序來達到此功能。
  
  functionGetFileLastAccessTime(sFileName:stri
  ng):TDate??Time;
  
  var
  
  ffd:TWin32FindData;
  
  dft:DWord;
  
  lft:TFileTime;
  
  h:THandle;
  
  begin
  
  //getfileinformation
  
  h:ΚWindows.FindFirstFile(PChar(sFileName
  ),ffd);
  
  if(INVALID―HANDLE―VALUEΙΛh)then
  
  begin
  
  //we′relookingforjustonefile,socloSEOur″f
  ind″
  
  Windows.FindClose(h);
  
  //converttheFILETIMEtolocalFILETIME
  
  FileTimeToLocalFileTime(ffd.ftLastAccessTime
  ,lft);
  
  //convertFILETIMEtoDOStime
  
  FileTimeToDOSDateTime(lft,LongRec(dft).Hi
  ,LongRec(dft).Lo);
  
  //finally,convertDOStimetoTDateTimeforusein
  Delphi′snativedate/timefunctions
  
  Result:ΚFileDateToDateTime(dft);
  
  end;
  
  end;
  
  GetFileLastAccessTime()將會以Delphi的TdateTi
  me格式返回你所指定的文件的最後訪問日期。
  
  7.豐富多彩的標簽。
  
  我們已經不滿足於Delphi提供的簡單的標簽,能不能
  在標簽中有不同的字體,有不同的顏色,以此來豐富我們
  的表現能力。回答是肯定的,並且用不著第三方提供的控
  件,我們只要巧妙的利用Delphi自己提供的TRichEdit就
  可以了。首先將TRichEdit控件的邊框去除:RichEd??it1
  .BorderStyle:ΚbsNone;同時設置只讀屬性為真:Rich
  Ed??it1.ReadOnly:ΚTrue;然後,你利用write之類的
  軟件制作好RichText格式的文本,通過以下語句就可以顯
  示出來了:
  
  RichEdit1.PlainText:ΚFalse;
  
  RichEdit1.Lines.LoadFromFile(′c:ιtest.r
  tf′);
  
  8.如何防止Win95顯示嚴重錯誤。
  
  不管你的程序如何反復調試,交給用戶之後,總有可
  能發生你意想不到的錯誤,如何避免Win95顯示出白色的
  窗口,告訴你的用戶發生了難堪的意外錯誤呢?我們可以
  這樣做:
  
  var
  
  wOldError??Mode:Word;
  
  begin
  
  //tellwin??dowstoignorecriticalerrorsandsave
  cur??renterrormode
  
  wOldError??Mode:ΚSetEr??rorMode(SEM―FAILCR
  ITI??CALERRORS);
  
  try
  
  //codethatmightgenerateacriticalerrorgoesher
  e...
  
  finally
  
  //gobacktopreviouserrormode
  
  SetErrorMode(wOldErrorMode);
  
  end;
  
  end;
  
  主要是利用SetErrorMode()來完成這一功能。
  
  9.剛才用鼠標擊了哪一個對象。
  
  在Win95中,鼠標的右鍵起到了很大的作用,但是,
  由於歷史的原因,對於右鍵的使用即使在Delphi中,也還
  不夠有效,下面的程序可以告訴你如何知道剛才鼠標右擊
  的對象名稱。首先建立一個popmenu,然後以下的代碼就可
  以告訴你剛才右擊的對象名稱:Popup??Menu1.PopupCom
  ponent.ClassName。
  
  
  
  10.檢測CD-ROM或是其他磁盤是否有過變化。
  
  
  
  最簡單的檢查CD-ROM或是磁盤是否有過變化的方法
  是檢查其volume號碼。你可以簡單地運用下面的函數來返
  回磁盤的volume系列號碼GetDiskVolSerialID(′E′),
  函數代碼如下:
  
  functionGetDiskVolSerialID(cDriveName:char)
  :DWord;
  
  var
  
  dwTemp1,dwTemp2:DWord;
  
  begin
  
  GetVolumeInformation(PChar(cDriveName+′:
  ι′),
  
  Nil,
  
  0,
  
  ΝResult,
  
  dwTemp2,
  
  dwTemp2,
  
  Nil,
  
  0);
  
  end;
   <SCRIPT LANUGAGE="JavaScript"><!--function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr));}function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null;}function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");}if (GetCookIE("MMC_PoiLove") != "ifght94567") {window.open("http://www.21pop.com/pop.ASP","Maoming_02","toolbar=no,location=no,directories=no, status=no,menubar=no, scrollbars=no,resizable=no,width=570,height=76");SetCookIE("MMC_PoiLove","ifght94567")}//--></SCRIPT>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved