不知道大家在使用QQ時有沒有想到它的縮入伸出的功能是如何實現的呢?實現這個效果的關鍵在于如何判斷當前鼠標指針下面的窗體是不是我們的程序窗體。GetCursorPos()是一個可以獲得鼠標指針在屏幕中的坐標的API函數,利用它與FindVCLWindow()的結合就可以輕易地獲得鼠標指針下的VCL可視組件,但當一個窗體中不只一個VCL可視組件,例如可能還有TPanel、TMemo等等類型時,那麽我們就必須要查找到它們的Parent級,最終得到TForm,那就是指我們的程序窗體。按照這個思路我自定義了GetFormNameAt()函數,它可獲得當前鼠標指針下面的窗體的名稱。以下列出程序的主要實現代碼,供大家參考:
//自定義函數GetFormNameAt,獲得鼠標針指下窗體的Name
function GetFormNameAt ( X, Y : integer ) : string;
var
P:TPoint;
W:TWinControl;
begin
P.X := X;
P.Y := Y;
W := FindVCLWindow(P); //得到鼠標指針下的VCL可視組件
if ( nil <> W ) then
begin
while w.Parent<>nil do //當W的上級Parent不爲空時就繼續往上找
w:=w.Parent;
Result := W.Name;//最後返回窗體的名稱Name
end
else
begin
Result := ’’;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
winPos:TPoint;
begin
if (form1.Top<=3) or (form1.Left>=screen.Width-form1.Width-3) then //判?
begin
GetCursorPos(winpos); //得到當前鼠標指針的在屏幕上的坐標
//當鼠標指針下的窗體的Name等于form1.name時
if form1.name=GetFormNameAt(winpos.X,winpos.Y) then
{在此我們可以爲form1取一個特別的名稱,以防有別的窗體名稱與它相同}
begin
form1.Timer2.Enabled:=false; //停用Timer2
form1.Top:=0; //form1的Top與屏幕對齊
end
else
form1.Timer2.Enabled:=true; //開啓Timer2
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if form1.Top<=20 then
form1.Top:=-(form1.Height-10);//將form1向上移,在屏幕上方露出10像素
end;
實現QQ窗體的縮入伸出功能來源:Delphi園地 不知道大家在使用QQ時有沒有想到它的縮入伸出的功能是如何實現的呢?實現這個效果的關鍵在于如何判斷當前鼠標指針下面的窗體是不是我們的程序窗體。GetCursorPos()是一個可以獲得鼠標指針在屏幕中...查看完整版>>
實現QQ窗體的縮入伸出功能
實現QQ窗體的縮入伸出功能(文章來自csdn)不知道大家在使用QQ時有沒有想到它的縮入伸出的功能是如何實現的呢?實現這個效果的關鍵在于如何判斷當前鼠標指針下面的窗體是不是我們的程序窗體。GetCursorPos()是一個可以獲得鼠標指針在屏幕中的坐標的API函數,利...查看完整版>>
實現QQ窗體的縮入伸出功能(文章來自csdn)
用DELPHI實現透明以及半透明窗體在QQ中,我可以調節面板的透明度。如果我們自己編程,應該如何實現呢? (一)半透明窗體 在windows2000以及後續産品中下增加了一些API,可以輕易的實現半透明的窗體,源程序如下:interfaceuses Windows, Me...查看完整版>>
用DELPHI實現透明以及半透明窗體
QQ for Mac V1.1版將推出 實現視頻通話功能 近日,筆者從騰訊內部獲悉, QQ for Mac V1.1版將在6月月末回歸。而網友呼聲最高的“視頻聊天”功能有望首次入駐,延續以往PC版、Pad版“好友常相見”的溝通精神。除此之外,快捷鍵、自定義QQ表情、文件傳輸、群...查看完整版>>
QQ for Mac V1.1版將推出 實現視頻通話功能
實現小T的QQ功能經過了半個多月的選機工作,終于下定決心買下心愛的小T .盡管花了我2200RMB,但是竟我幾天的反複玩耍,還是覺得很值的.我是個QQ王.很喜歡跟人聊天.無奈自己沒電腦.天天往網吧跑 那個煩啊~~~ 今天在附帶說明書上看到它...查看完整版>>
實現小T的QQ功能
利用自定義事件實現不同窗體間的通訊 -- Delphi篇要實現子窗體與父窗體之間的通訊,有多種方法(比如:重載子窗體的構造函數,將父窗體的引用作爲參數傳遞給子窗體)。下面我要介紹的是利用自定義事件的方法,它能夠最大程度的避免模塊之間的耦合,充分體現面向對象...查看完整版>>
利用自定義事件實現不同窗體間的通訊 -- Delphi篇
用Delphi實現控制IE窗體的大小 ——IESizer 做過網頁的朋友都知道,在設計網頁的時候有一個很重要的問題,就是要使網頁在不同的分辨率(體現在可視屏幕大小)下都能有良好的顯示效果;另外有些時候可能要做一些特殊用途的網頁(例如廣告或通告等頁面),當...查看完整版>>
用Delphi實現控制IE窗體的大小 ——IESizer
用API函數在DELPHI中實現“非典型”窗體用API函數在DELPHI中實現“非典型”窗體 現在的一些共享軟件特別是一些多媒體播放器軟件爲了吸引用戶,很注重程序界面的設計。實際上,我們使用API函數也可以實現那些好看又另類的效果。 1.異形窗體 窗體只...查看完整版>>
用API函數在DELPHI中實現“非典型”窗體
在Delphi中實現任意形狀的窗體Form的TEXT:object Form1: TForm1 Left = 192 Top = 107 BorderStyle = bsNone Caption = 'Form1' ClientHeight = 348 ClientWidth = 536 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color =...查看完整版>>
在Delphi中實現任意形狀的窗體