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

          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開源團隊 閱讀(1463) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 内丘县| 塘沽区| 牙克石市| 石城县| 平陆县| 墨脱县| 婺源县| 社会| 泰顺县| 汝州市| 大渡口区| 安康市| 新野县| 年辖:市辖区| 陆河县| 泸定县| 观塘区| 泰来县| 神池县| 墨江| 绥阳县| 庆云县| 辉南县| 旬邑县| 梧州市| 泉州市| 武山县| 泸溪县| 衡阳市| 搜索| 社旗县| 中宁县| 图们市| 溆浦县| 彰化市| 林口县| 武冈市| 封丘县| 湛江市| 万源市| 弥渡县|