我们不可把公司的组件放於这里发表, 和一般着作一样, 我们公司有这些组件的
版权所有的.假如你真的想学的话, 你可以叁看Delphi自带的VCL源码, 那本身已经是一个实
实在在的宝库, 或者到 http://www.sourceforge.net 叁与GPL软软行列, 那
里的高手不介意其他人叁看他们的作品的. 只要你也是按GPL的条款编程, 你是
可以自由地享用GPL下所有软件的.其馀的软件, 全都是有版权法所保护, 不可以未得版权所有者的书面同意下, 公
开分发的.可幸的是Delphi是支持Open Source(公开源码)的, Delphi本身的源码是高度
透明, 纵使Borland所写的说明书是如何不济, 透过多年来的经验和vcl的源代码, 许多第三方控件, 都能比Delphi原来的控件有过之而无不及. 
但是第三控件, 通常都要用钱买的, 他们不会让你白白的用他们的作品的!

解决方案 »

  1.   

    vcl的源代码比较设计底层
    所以希望看写前辈的
    随便举例子就可以了
    不需要把你门的项目拿出来
      

  2.   

    下面是一个简单的时间段对话组件:
    unit DatePick;interfaceuses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
      Buttons, ExtCtrls, ComCtrls;type
      TDatePickForm = class(TForm)
        OKBtn: TButton;
        CancelBtn: TButton;
        mclCalendar: TMonthCalendar;
      private
        { Private declarations }
      public
        { Public declarations }  end;  TDateRangePickForm = class(TCustomForm)
      private
        FBeginDatePicker: TDateTimePicker;
        FEndDatePicker: TDateTimePicker;
        procedure CreateControls;
      public
        constructor Create(AOwner: TComponent); override;
      end;function PickDateDlg(var ADate: TDate): Boolean;
    function PickDateRangeDlg(var BeginDate, EndDate: TDate): Boolean;{ Obsoleted functions }function PickDateDialog(var ADate: TDate): Boolean;implementation{$R *.DFM}function PickDateDlg(var ADate: TDate): Boolean;
    begin
      Result := False;
      with TDatePickForm.Create(nil) do
        try
          mclCalendar.Date := ADate;
          if ShowModal = mrOk then
          begin
            ADate := mclCalendar.Date;
            Result := True;
          end;
        finally
          Free;
        end;
    end;function PickDateRangeDlg(var BeginDate, EndDate: TDate): Boolean;
    begin
      Result := False;
      with TDateRangePickForm.Create(Application) do
      try
        if (BeginDate = 0) and (EndDate = 0) then
        begin
          FBeginDatePicker.DateTime := Now;
          FEndDatePicker.DateTime := Now;
        end
        else begin
          FBeginDatePicker.DateTime := BeginDate;
          FEndDatePicker.DateTime := EndDate;
        end;
        if ShowModal = mrOK then
        begin
          BeginDate := Int(FBeginDatePicker.DateTime);
          EndDate := Int(FEndDatePicker.DateTime) + 0.99999;
          Result := True;
        end;
      finally
        Free;
      end;
    end;function PickDateDialog(var ADate: TDate): Boolean;
    begin
      Result := PickDateDlg(ADate);
    end;
    { TDateRangePickForm }constructor TDateRangePickForm.Create(AOwner: TComponent);
    begin
      inherited CreateNew(AOwner);
      BorderStyle := bsDialog;
      Position := poScreenCenter;
      Caption := '选择日期';
      Font.Name := '宋体';
      Font.Size := 9;
      Width := 237;
      Height := 160;
      CreateControls;
    end;procedure TDateRangePickForm.CreateControls;
    begin
      FBeginDatePicker := TDateTimePicker.Create(Self);
      FEndDatePicker := TDateTimePicker.Create(Self);
      with TButton.Create(Self) do
      begin
        Parent := Self;
        Left := 144;
        Top := 104;
        Width := 75;
        Height := 21;
        Cancel := True;
        Caption := '取消';
        ModalResult := 2;
        TabOrder := 1;
      end;
      with TButton.Create(Self) do
      begin
        Parent := Self;
        Left := 64;
        Top := 104;
        Width := 75;
        Height := 21;
        Caption := '确定';
        Default := True;
        ModalResult := 1;
        TabOrder := 0;
      end;
      with TLabel.Create(Self) do
      begin
        Parent := Self;
        Left := 16;
        Top := 27;
        Width := 54;
        Height := 12;
        Caption := '开始日期:';
      end;
      with TLabel.Create(Self) do
      begin
        Parent := Self;
        Left := 16;
        Top := 63;
        Width := 54;
        Height := 12;
        Caption := '终止日期:';
      end;
      with FBeginDatePicker do
      begin
        Parent := Self;
        Left := 80;
        Top := 24;
        Width := 121;
        Height := 21;
        DateFormat := dfShort;
        DateMode := dmComboBox;
        Kind := dtkDate;
        ParseInput := False;
        TabOrder := 2;
      end;
      with FEndDatePicker do
      begin
        Parent := Self;
        Left := 80;
        Top := 60;
        Width := 121;
        Height := 21;
        DateFormat := dfShort;
        DateMode := dmComboBox;
        Kind := dtkDate;
        ParseInput := False;
        TabOrder := 3;
      end;
      with TBevel.Create(Self) do
      begin
        Parent := Self;
        Left := 8;
        Top := 8;
        Width := 209;
        Height := 89;
        Shape := bsFrame;
      end;
    end;end.