亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

在Delphi中編寫控件的基本方法

2019-11-18 18:44:28
字體:
來源:轉載
供稿:網友
在Delphi中編寫控件的基本方法

  作為Delphi程序員,要想進一步提高編程水平就必須掌握控件的編寫方法,本篇文章將通過一個簡單的例子來為初學者介紹編寫控件的一些基本方法和模式。

  這個例子控件叫TLeiLabel,是在TLabel的基礎上增加兩個實用的功能:一是使文字具有立體形狀,二是使文字具有超鏈接屬性。下面就讓我們一步步來實現這些功能。

  一、使文字具有立體形狀
  首先定義類型T3DEffect和屬性Style3D分別如下:

  T3DEffect=(Normal,Raised,Lowered, Shadowed);

  PRoperty Style3D:T3DEffect read FStyle3D write SetStyle3D default Normal;

  再在private中定義變量:“FStyle3D:T3DEffect;”,并設置SetStyle3D()方法如下,這也是寫方法的一般格式:

  procedure TLeiLabel.SetStyle3D(Value: T3DEffect);

   begin

   if FStyle3D <> value then

   begin

   FStyle3D := value;

   invalidate; //表示控件將重畫

   end;

   end;

  另外對于帶陰影的文字還要定義陰影的偏移量ShadeXOffSet和ShadeYOffSet:

  property ShadowXOffSet: integer read FXOffSet write SetFXOffSet default 5;

  property ShadowYOffSet: integer read FYOffSet write SetFYOffSet default -5;

  寫方法SetFXOffSet()、SetFYOffSet()和上面的SetStyle3D()類似。

  要重畫控件一般要重載Paint方法,此處只是重畫文字,我們只需重載DoDrawText方法。

  DoDrawText的聲明放在Protected中:

  procedure DoDrawText(var Rect: TRect; Flags: Longint); override;

  此處DoDrawText()根據四種類型(正常、凸起、凹進和陰影)分別畫出不同的文字。

二、使文字具有超鏈接屬性
  定義一個屬性URL表示要鏈接的網址或Email地址。

  Property URL : String read FURL write SetURL;

  寫方法SetURL如下:

  procedure TLeiLabel.SetURL(Value: String);

  Begin

  if FURL <> Value then FURL := Value ;

  if FURL <> '' then

  Cursor := crHandPoint;

  end;

  當點擊此Label時要打開瀏覽器或收發郵件工具,這便要重載Click方法。

   Procedure Click; Override;

   procedure TLeiLabel.Click;

   var s: string;

   Begin

   Inherited Click;

   if FURL = '' then exit;

   if LowerCase(Copy(FURL,1,7)) = 'http://' then

   s := FURL

   else if Pos('@',FURL) <> 0 Then

   s := 'mailto:' + FURL

   else

   s := 'http://' + FURL;

   ShellExecute(application.Handle, 'open', PChar(s), NIL, NIL, SW_SHOWNORMAL);

   end;

  一般的超鏈接當鼠標移入時文字的顏色發生變化。為此加上屬性HoverColor,表示鼠標移入時文字的顏色。

  Property HoverColor : TColor Read FHoverColor Write SetHoverColor default clRed;

  還要定義兩個接收Windows消息CM_MOUSEENTER和CM_MOUSELEAVE(鼠標移進和移出)的過程:

  Procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;

  Procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;

  Procedure TLeiLabel.CMMouseEnter (Var Message: TMessage);

   begin

   If Enabled and Visible and getParentForm(Self).Active then

   begin

   FFontColor := Font.Color;

  //將文字的顏色保存起來

   Font.Color := FHoverColor;

  //改變文字顏色

   End;

   end;

  Procedure TLeiLabel.CMMouseLeave (Var Message: TMessage);

   begin

   Font.Color:=FFontColor;

  //恢復文字原來的顏色

   end;

  為設置屬性的默認值,我們還需要重載構造Create(),注意,重載構造時必須首先調用祖先類的構造。重載構造Create()的程序如下:

   constructor TLeiLabel.Create(AOwner: TComponent);

   begin

   inherited Create(AOwner);

  //必須首先調用祖先類的構造

   FStyle3D := Normal;

   FXOffSet := 5;

   FYOffSet := -5;

   FHoverColor := clRed;

   end;

  最后,還必須為這個控件加上圖標。我們可以用Delphi中的Image Editor來創建一個24×24的Bitmap位圖,保存為一個DCR文件,文件名必須與控件的Pas文件名相同,位圖名必須與控件名相同且全部大寫。

上一篇:Delphi圖書目錄

下一篇:DELPHI下的多線程程序設計(2)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久国产精品| 91精品久久久久久久久久久| 日韩精品中文在线观看| 亚洲一区二区中文字幕| 国内精品久久久久久久| 国产精品视频久久久久| 亚洲激情第一页| 91精品久久久久久久久久| 久久久精品网站| 精品视频久久久| 国产伦精品免费视频| 国产精品国产自产拍高清av水多| 欧美日韩日本国产| 亚洲影院污污.| 久久这里有精品视频| 亚洲理论电影网| 午夜精品久久久久久久白皮肤| 色噜噜国产精品视频一区二区| 成人亚洲激情网| 亚洲综合一区二区不卡| 日韩精品在线观看网站| 91久久中文字幕| 欧美一区二区色| 国产成人一区二区三区| 日韩高清不卡av| 亚洲第一色中文字幕| 欧美另类极品videosbestfree| 久久99热这里只有精品国产| 久久久影视精品| 日韩欧美综合在线视频| 欧美有码在线视频| 久久韩国免费视频| 欧美精品生活片| 欧美日本精品在线| xvideos成人免费中文版| 日韩欧美在线看| 红桃av永久久久| 日韩精品高清视频| 色香阁99久久精品久久久| 91欧美激情另类亚洲| 国产欧美va欧美va香蕉在线| 狠狠久久五月精品中文字幕| 中文字幕av一区二区三区谷原希美| 欧美黑人xxxⅹ高潮交| 亚洲一区二区日本| 亚洲天堂男人的天堂| 色青青草原桃花久久综合| 尤物九九久久国产精品的特点| 性欧美在线看片a免费观看| 992tv成人免费视频| 有码中文亚洲精品| 国产一区二区色| 久久久久久综合网天天| 国产伊人精品在线| 日韩精品中文字幕在线观看| 欧美在线免费看| 欧美老妇交乱视频| 5566日本婷婷色中文字幕97| 日韩在线观看免费高清完整版| 日韩av电影中文字幕| 日韩在线观看免费高清完整版| 国产精品久久国产精品99gif| 97激碰免费视频| 亚洲一区二区三区sesese| 日韩亚洲成人av在线| 亚洲欧美一区二区三区在线| 亚洲成av人乱码色午夜| 国产欧美日韩免费| 国产视频精品久久久| 亚洲电影免费观看高清完整版| 亚洲精品国产拍免费91在线| 亚洲欧美在线磁力| 免费97视频在线精品国自产拍| 久热精品视频在线免费观看| 国产精品老牛影院在线观看| 高清在线视频日韩欧美| 成人欧美一区二区三区黑人| 精品无人国产偷自产在线| 国产欧美日韩综合精品| 一本色道久久88综合日韩精品| 亚洲最新在线视频| 精品在线欧美视频| 77777少妇光屁股久久一区| 亚洲精品短视频| 夜夜嗨av色一区二区不卡| 国产成人精品av| www.日韩.com| 国产精品久久久久国产a级| 8050国产精品久久久久久| 亚洲免费电影在线观看| 国产日韩欧美中文| 欧美成人精品xxx| 国产偷国产偷亚洲清高网站| 欧美午夜激情视频| 亚洲人成电影在线观看天堂色| 自拍偷拍亚洲精品| 亚洲精品色婷婷福利天堂| 91爱爱小视频k| 热门国产精品亚洲第一区在线| 精品福利在线看| 狠狠色噜噜狠狠狠狠97| 91免费人成网站在线观看18| 黑人巨大精品欧美一区二区| 九九热精品视频| 91久久国产婷婷一区二区| 国产精品久久久久久超碰| 日韩中文视频免费在线观看| 日韩av在线电影网| 亚洲bt欧美bt日本bt| 久久国产精品久久久久| 日韩精品一区二区三区第95| 欧美精品在线免费播放| 国产中文字幕91| 亚洲国产美女久久久久| 国产精品啪视频| 欧美日韩国产成人在线| 91视频国产高清| 日韩精品久久久久久福利| 亚洲级视频在线观看免费1级| 欧美性色19p| 亚洲国产精品一区二区三区| 国产成人精品av在线| 成人精品视频久久久久| 久久久人成影片一区二区三区| 亚洲精美色品网站| 亚洲999一在线观看www| 精品久久久久久久久国产字幕| 亚洲天堂av在线免费| 亚洲国产精品成人精品| 一本色道久久综合狠狠躁篇怎么玩| 欧美激情va永久在线播放| 成人av在线亚洲| 日韩欧美在线观看视频| 成人天堂噜噜噜| 亚洲欧美视频在线| 欧美日韩美女在线观看| 日韩在线观看成人| 97在线观看视频| 日韩专区在线观看| 国产精品人成电影在线观看| 欧美激情视频给我| 亚洲成人精品在线| 中文字幕少妇一区二区三区| 久久综合五月天| 在线观看久久久久久| 日韩中文有码在线视频| 成人女保姆的销魂服务| 欧美大片欧美激情性色a∨久久| 色爱精品视频一区| 国产精品综合久久久| 亚洲精品在线看| 久99久在线视频| 欧美小视频在线观看| 亚洲乱亚洲乱妇无码| 欧洲亚洲在线视频| 美日韩精品视频免费看| 欧美高清理论片| 国产精品狠色婷| 亚洲人成电影在线观看天堂色| 日韩欧美在线观看视频| 亚洲人av在线影院| 久久久久久久久久久人体| 亚洲欧美国产日韩天堂区| 国产亚洲精品久久久久久|