📄 datex.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 + -