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

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

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

    如鵬網(wǎng) 大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)

    CowNew開源團(tuán)隊(duì)

    http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

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

    對話框控件的制作

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

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

    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開源團(tuán)隊(duì) 閱讀(1459) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 无码精品人妻一区二区三区免费| 亚洲噜噜噜噜噜影院在线播放| 国产成人亚洲午夜电影| 久久久久久精品免费免费自慰| 久久精品亚洲视频| 色欲A∨无码蜜臀AV免费播| 亚洲av无码专区国产乱码在线观看| 少妇亚洲免费精品| 亚洲精品无码久久不卡| a级毛片免费网站| 国产AⅤ无码专区亚洲AV| 亚洲五月午夜免费在线视频| jjzz亚洲亚洲女人| 二个人看的www免费视频| 亚洲精品无码精品mV在线观看| caoporn成人免费公开| 亚洲开心婷婷中文字幕| 污污网站18禁在线永久免费观看| 亚洲自偷自偷精品| 免费视频专区一国产盗摄| 亚洲欧美日本韩国| 亚洲成av人片不卡无码久久| 久久久久久久久久久免费精品| 亚洲精品国产精品乱码在线观看| 日韩在线不卡免费视频一区| 亚洲制服在线观看| 精品免费国产一区二区| 久久九九久精品国产免费直播| 亚洲AV无码专区国产乱码电影| 妻子5免费完整高清电视| 亚洲一区二区三区在线观看网站| 四虎影永久在线高清免费| 中国videos性高清免费| 亚洲成人午夜在线| 手机在线毛片免费播放| 麻豆69堂免费视频| 亚洲尹人香蕉网在线视颅| 日韩在线a视频免费播放| 精品免费久久久久国产一区| 亚洲精品午夜在线观看| 国产免费观看视频|