⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datex.pas

📁 自己封装的:日期控件(dataX)
💻 PAS
字号:
unit DateX;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls,StdCtrls,ComCtrls,forms,windows;

type
  TDateX=class(TCustomPanel)
        private
          FEdit:TEdit;
          FDateTimePicker:TDateTimePicker;

        protected
          procedure myExit(Sender:Tobject);
          Function GetDateText:string;
          Procedure SetDateText(value:String);
          procedure myChange(Sender:Tobject);
          procedure myKeyPress(Sender: TObject; var Key: Char);
        public
          constructor   Create(AOwner:TCOmponent);override;
          destructor     destroy;override;
        published
          property   Date:String   read   GetDateText write SetDateText;
  end;
procedure Register;

implementation

  constructor   TDateX.Create(AOwner:TComponent);
  begin
        inherited   Create(aOwner);
        self.Height:=21;
        self.Width:=121;
        FDateTimePicker:=TDateTimePicker.create(self);
        FDateTimePicker.Parent:=self;
      //  FDateTimePicker.Height:=21;
     //   FDateTimePicker.Width:=121;
        FDateTimePicker.align:=alClient;
        FDateTimePicker.Date:=now;

        FDateTimePicker.OnChange:=myChange;

        FEdit:=TEdit.Create(Self);
        FEdit.parent:=self;
        FEdit.AutoSize:=false;
        FEdit.BorderStyle:=bsNone;

        FEdit.Height:=17;
        FEdit.Width:=80;
        FEdit.Left:=2;
        FEdit.Top:=2;

   //     AutoSize:=true;
        self.BorderStyle:=bsNone;
        self.BevelOuter:=bvNone;

        FEdit.OnExit:=myExit;
        FEdit.OnKeyPress:=myKeyPress;

  end;
  destructor   TDateX.Destroy;
  begin
    FEdit.free;
    FDateTimePicker.free;
    inherited   destroy;
  end;


procedure Register;
begin
  RegisterComponents('Samples', [TDateX]);
end;

function TDateX.GetDateText: string;
var sj:TDateTime;
begin
    if TryStrToDate(FEdit.text,sj) then
       Result:=FEdit.Text
    else
       Result:='';
end;

procedure TDateX.myChange(Sender: Tobject);
begin
    FEdit.Text:=DateToStr(FDateTimePicker.Date);
end;


procedure TDateX.myExit(Sender: Tobject);
var sj:TDateTime;
begin
     if  trim(FEdit.Text)<>'' then
     begin
         if TryStrToDate(trim(FEdit.Text),sj) then
            FDateTimePicker.Date:=sj
         else
         begin
            application.MessageBox('时间格式有误','系统信息',mb_ok or mb_iconInformation);
            FDateTimePicker.Date:=now;
            FEdit.SetFocus;
            Abort;
         end;
     end
     else
         FDateTimePicker.Date:=now;

end;

procedure TDateX.myKeyPress(Sender: TObject; var Key: Char);
begin
      if (not (Key in ['0'..'9','-',#8]))
         or( (length(TEdit(Sender).Text)=10) and  (Key<>#8) )
      then
         Key:=#0;

end;

procedure TDateX.SetDateText(value:String);
begin
     FEdit.Text:=value;
     if value<>'' then
        FDateTimePicker.Date:=StrToDate(value)
     else
        FDateTimePicker.Date:=now;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -