TButton增加MouseLeave事件 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
?TButton增加MouseLeave事件 作者: 萬重
Wednesday, September 4 2002 3:33 PM
DELPHI等快速編程工具,使用最多的一定是各種控制項了,用自帶的控制項編出的程式往往千篇一律,?了使自己的程式更個性化或者?了使控制項的功能更強,我們需要自己編控制項,大家不要以?自己編控制項好難,看完這篇文章,保證人人都能編自己的控制項,就算編不了控制項,瞭解瞭解控制項的原理也是不錯的,就算不能瞭解控制項的原理,學習學習……:) 首先,我們做的這個控制項是?了給TBotton控制項增加Mouseleave事件,有了這個事件,我們就可以編出類似網頁中的懸停按鈕的效果,首先打開Delphi,選Component|new Component出現對話方塊, 我們的控制項類名?Tbutton1,父類?Tbutton,庫單元檔案名?Button1。單擊確定按鈕,Component Wizard粗略的生成模板樣式的代碼,其中有類聲明,總體變數聲明及傳遞到RegisterComponent方法中的參數等,編譯好的整個文件的程式清單如下: unit Button1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TButton1 = class(TButton) private FOnMouseLeave: TNotifyEvent;
procedure WZMouseLeave(var Msg:TMessage); message CM_MOUSELEAVE;
{ Private declarations } protected
{ Protected declarations } public
{ Public declarations } published
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{ Published declarations }
end; procedure Register; implementation procedure Register;
begin
//在系統中註冊控制項
RegisterComponents('Samples', [TButton1]);
end;
{ TButton1 } procedure TButton1.WZMouseLeave(var Msg: TMessage);
begin
inherited;//繼承父類
if csLButtonDown in ControlState then
begin
Self.MouseUp(mbLeft,[ssLeft],0,0);
end;
if Assigned (FonMouseLeave) then FOnMouseLeave(Self);
end;
end. 代碼添加完後,編譯後,一個名?Button1的控制項即加入Simples項,新建一個專案,試試這段代碼: procedure TForm1.Button11MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
label1.Caption:='在';
end; procedure TForm1.Button11MouseLeave(Sender: TObject);
begin
label1.Caption:='不在';
end; 怎?樣,是不很簡單。以上在Delphi5.0調試通過。
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |