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>