<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
    ?

    對話框控件的制作

    Delphi中有很多對話框組件,例如TopenDialogTfontDialog等。這些控件的特點就是雖然是不可視控件,但是在運行時都有一個可視化的效果,比如TopenDialog的可視化效果就是一個打開對話框。我們這次將開發一個日期對話框控件,當我們調用控件的Execute方法(不一定非要使用Execute方法,不過大部分對話框控件都是使用這個方法,我們也就按照慣例來了)時,就會彈出一個可以選擇日期的對話框,我們選擇一個日期后,點擊“確定”則Execute返回True,點擊“取消”則Execute返回False。我們可以讀取Date屬性來得到用戶選擇的日期,也可以修改此屬性來改變對話框的初始日期。

    1、新建一個對話框。在對話框窗體上放置一個TmonthCalendar組件,命名為Cal,窗體名稱改為FormDate。在窗體上放置兩個按鈕,一個按鈕的Caption為“確定(&O)”,ModalResultmrOk,一個按鈕的Caption為“取消(&C)”,ModalResultmrCancel。設計好的窗體如下圖所示:

    delphicomdev7-1.jpg

    2、為窗體添加兩個Public訪問級的方法:

    ??? function GetSelDate: TDate;

    ??? procedure SetInitDate(AValue: TDate);

    代碼如下:

    function TFormDate.GetSelDate: TDate;

    begin

    ? result := cal.Date;

    end;

    ?

    procedure TFormDate.SetInitDate(AValue: TDate);

    begin

    ? cal.Date := AValue;

    end;

    3、新建一個控件,派生自Tcomponent

    代碼如下:

    unit DateDialog;

    ?

    interface

    ?

    uses

    ? SysUtils, Classes, Controls, frmDlg;

    ?

    type

    ? TDateDialog = class(TComponent)

    ? private

    ??? FDlg: TFormDate;

    ??? function GetDate: TDate;

    ??? procedure SetDate(AValue: TDate);

    ? protected

    ? public

    ??? constructor Create(AOwner: TComponent);override;

    ??? function Execute: Boolean;

    ? published

    ??? property Date: TDate read GetDate write SetDate;

    ? end;

    ?

    procedure Register;

    ?

    implementation

    procedure Register;

    begin

    ? RegisterComponents('Linco', [TDateDialog]);

    end;

    constructor TDateDialog.Create(AOwner: TComponent);

    begin

    ? inherited Create(AOwner);

    ? FDlg := TFormDate.Create(self);

    end;

    ?

    function TDateDialog.Execute: Boolean;

    begin

    ? result := (FDlg.ShowModal = mrOK);

    end;

    ?

    function TDateDialog.GetDate: TDate;

    begin

    ? result := FDlg.GetSelDate;

    end;

    ?

    procedure TDateDialog.SetDate(AValue: TDate);

    begin

    ? FDlg.SetInitDate(AValue);

    end;

    end.

    代碼比較簡單就不多解釋了。

    思考題:

    1、做一個模仿TcolorDialog的對話框控件。

    posted on 2005-10-21 23:37 CowNew開源團隊 閱讀(1459) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品无码久久毛片| 日韩高清免费观看| 亚洲精品乱码久久久久久蜜桃不卡 | 67pao强力打造高清免费| 久久亚洲免费视频| 国产精品免费AV片在线观看| 亚洲色欲久久久综合网东京热| sss在线观看免费高清| 久久精品国产亚洲精品| 又长又大又粗又硬3p免费视频| 亚洲国产高清精品线久久| 青青草国产免费国产是公开| 亚洲人成网站18禁止一区| 一级一级一片免费高清| 亚洲精品成人片在线观看精品字幕| 男女男精品网站免费观看| 亚洲爽爽一区二区三区| a在线免费观看视频| 亚洲狠狠综合久久| 日韩免费一区二区三区在线播放| 亚洲五月综合缴情婷婷| 日本免费人成黄页在线观看视频 | 91精品成人免费国产片| 亚洲国产综合自在线另类| 97无码免费人妻超级碰碰夜夜 | 在线观看日本亚洲一区| 在线观看免费国产视频| 国产精品偷伦视频免费观看了| 国产精品亚洲专区在线观看| 成年女人色毛片免费看| 色婷婷精品免费视频| 亚洲色欲久久久综合网东京热| 中文字幕在线免费观看| 亚洲av色香蕉一区二区三区 | 日韩中文字幕免费| 中国毛片免费观看| 亚洲国产夜色在线观看| 亚洲AV伊人久久青青草原| 国偷自产一区二区免费视频| 久久精品国产亚洲av麻豆蜜芽| 天堂亚洲免费视频|