(一)控件與消息函數
1、語法:AnyPopup: BOOL;
單元:windows.pas(該單元DELPHI會自行在USES裡加上,下同)
作用:判斷屏幕上是否存在任何彈出式窗口
返回值:BOOL,如存在彈出式菜單,則返回TRUE
注解:對該函數來說,彈出式菜單包含所有可見的包容頂級窗口,無論彈出式還是重疊窗口
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (AnyPopup) then
Label1.Caption:=‘Pop-ups found: TRUE
else
Label1.Caption:=‘Pop-ups found: FALSE;
end;
2、語法:EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL;單元:windows.pas
作用:指定的窗口裡允許或禁止所有鼠標及鍵盤輸入
返回值:BOOL,如果返回真,WINDOWS已經禁止,否則返回假
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (IsWindowEnabled(Edit1.Handle)) then
begin
EnableWindow(Edit1.Handle,FALSE);
Button1.Caption:=‘Enable Window;
Edit1.Text:=‘This window is disabled;
end
else
begin
EnableWindow(Edit1.Handle,TRUE);
Button1.Caption:=‘Disable Window;
Edit1.Text:=‘This window is enabled;
end;
end;
3、語法:FlashWindow(hWnd: HWND; bInvert: BOOL): BOOL;
單元:windows.pas
作用:閃爍顯示指定窗口。這意味著窗口的標題和說明文字會發生變化,似乎從活動切換到非活動狀態、或反向切換。通常對不活動的窗口應用這個函數,引起用戶的注意
返回值:BOOL,如窗口在調用前處於活動狀態,則返回TRUE
注解:該函數通常與一個計數器組合使用,生成連續的閃爍效果。
在windows nt及windowsfor workgroup中,bInvert參數會被忽略。
但在windows 95中不會忽略
示例:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Form1.Handle, TRUE);
FlashWindow(Application.handle, TRUE);
end;
4、語法:SetWindowText(hWnd: HWND;lpString: PChar): BOOL;
單元:windows.pas
作用:設置窗口的標題文字或控件的內容
返回值:設置成功返回TRUE,否則返回FALSE
示例:
procedure TForm1.Button1Click(Sender: TObject);
var
TheText: PChar;
TextLen: Integer;
begin
TextLen:=GetWindowTextLength(Form1.Handle);
GetMem(TheText,TextLen);
GetWindowText(Form1.Handle,TheText,TextLen+1);
Edit1.Text:=string(TheText);
FreeMem(TheText);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetWindowText(Form1.Handle, PChar(Edit1.Text));
end;
5、語法:IsWindow(hWnd: HWND): BOOL;
單元:windows.pas
作用:判斷一個窗口句柄是否有效
返回值:有效返回TRUE,否則返回FALSE
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (IsWindow(Button1.Handle)) then
Button1.Caption:=‘TRUE
else
Button1.Caption:=‘FALSE;
end;
怎麼樣,還過瘾吧?今天是第一次,就介紹些較容易接受的函數,否則朋友們肯定會喊吃不消。不知道朋友們對這樣的編排形式能夠接受嗎?還有,我會按照API函數的分類(控件與消息函數/硬件與系統函數/菜單函數/文本和字體函數/打印函數等等)分別介紹,但我不會介紹全部的API函數,否則大有騙稿費之嫌疑,而且本人的水平也難做到每個語句都有示例,只介紹平常用得上的,本人經常使用的函數,有時也會介紹一下比較隱秘但卻非常有用的API函數。
附TIPS(DELPHI技巧)一個:
如果有這樣一個目錄:
c:windowsmedia empabcsoundchime.wav
我希望它能縮短成:
c:windows..soundchime.wav
如何寫程序呢?
回答:
用下面的過程試試:
function shortenfilename(s : string) : string;
var drive,curdrive : string[2];
dir,curdir : string[80];
name : string[20];
ext : string[5];
i : byte;
begin
for i:=1 to length(s) do s[i]:=upcase(s[i]);
s:=fexpand(s);
fsplit(s,dir,name,ext);
drive:=copy(dir,1,2);
dir:=copy(dir,4,length(dir)-3);
getdir(0,curdir);
curdrive:=copy(curdir,1,2);
curdir:=copy(curdir,4,length(curdir)-3)+‘;
if drive=curdrive then begin
if copy(dir,1,length(curdir))=curdir then begin
i:=length(curdir);
if length(dir)<>i then dir:=dir+‘;
shortenfilename:=copy(dir,i+1,length(dir)-i-1)+name+ext;
end else shortenfilename:=copy(s,3,length(s)-2);
end else shortenfilename:=s;
end;