怎样才能让DataTimePicker默认值为空而不是默认一个日期?或者有什么别的类似控件可用?

解决方案 »

  1.   

    //设置为空
    DateTimePicker2.Format := '';//注意引号内为alt+255//ENTER事件
    procedure TForm1.DateTimePicker2Enter(Sender: TObject);
    begin
      DateTimePicker2.Format := '';
      DateTimePicker2.Date := Now;
    end;
      

  2.   

    DataTimePicker的showcheckbox设置为true,不选的时候,值就是nil,选中才是设置的日期。
      

  3.   

    RXLIB中有一控件DateEdit
    或者我有好几种这样的控件,要我就找找
      

  4.   

    nit TBDateTime;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, ComCtrls, StdCtrls, Graphics, Forms;type
      TTBDateTime = class(TCustomPanel)
      private
        { Private declarations }
        FColor: TColor;    FDateTimePicker: TDateTimePicker;
        FEdit: TEdit;
        FText: String;
        FFormatString: String;
        FVisible: Boolean;
        FOnClick: TNotifyEvent;
        FOnChange: TNotifyEvent;
        FWidth: Integer;
        FOnEnter: TNotifyEvent;
        procedure SetColor(const Value: TColor);
        procedure OnDateChange(Sender: TObject);
        procedure OnEditChange(Sender: TObject);
        procedure OnControlEnter(Sender: TObject);
        procedure SetText(const Value: String);
        procedure SetFormatString(const Value: String);
        procedure SetVisible(const Value: Boolean);
        procedure SetWidth(const Value: Integer);
      protected
        { Protected declarations }
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      published
        { Published declarations }
        property Color: TColor read FColor write SetColor;
        property Width: Integer read FWidth write SetWidth Default 186;
        property Text: String read FText write SetText;
        property FormatString: String read FFormatString write SetFormatString;
        property Visible: Boolean read FVisible write SetVisible Default True;
        property OnChange: TNotifyEvent read FOnChange write FOnChange;
        property OnClick: TNotifyEvent read FOnClick write FOnClick;
        property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;    procedure SetFocus; override;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TTBDateTime]);
    end;{ TTBDateTime }constructor TTBDateTime.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);  FColor := clWindow;  FDateTimePicker := TDateTimePicker.Create(Self);
      FDateTimePicker.Parent := Self;
      FDateTimePicker.Top := 0;
      FDateTimePicker.Width := 136;
      FDateTimePicker.Left := 0;
      FDateTimePicker.OnChange := OnDateChange;
      FDateTimePicker.OnEnter := OnControlEnter;  FEdit := TEdit.Create(Self);
      FEdit.Parent := Self;
      FEdit.BorderStyle := bsNone;
      FEdit.Top := 4;
      FEdit.Left := 3;
      FEdit.Width := 116;
      FEdit.Height := 14;
      FEdit.Color := FColor;
      FEdit.OnChange := OnEditChange;
      FEdit.OnClick := OnControlEnter;  AutoSize := True;
      BevelOuter := bvNone;  FFormatString := 'yyyy"-"mm"-"dd';
    end;destructor TTBDateTime.Destroy;
    begin
      FEdit.Free;
      FDateTimePicker.Free;  inherited;
    end;procedure TTBDateTime.SetColor(const Value: TColor);
    begin
      FColor := Value;  FEdit.Color := FColor;
      FDateTimePicker.Color := FColor;
    end;procedure TTBDateTime.OnDateChange(Sender: TObject);
    begin
      FEdit.Text := FormatDateTime(FFormatString, FDateTimePicker.Date);
    end;procedure TTBDateTime.SetText(const Value: String);
    begin
      FText := Value;  FEdit.Text := FText;
    end;procedure TTBDateTime.OnEditChange(Sender: TObject);
    begin
      FText := FEdit.Text;  if Assigned(FOnChange) then
        FOnChange(Self);
    end;procedure TTBDateTime.SetFormatString(const Value: String);
    begin
      FFormatString := Value;
    end;procedure TTBDateTime.SetVisible(const Value: Boolean);
    begin
      FVisible := Value;  FEdit.Visible := FVisible;
      FDateTimePicker.Visible := FVisible;  FDateTimePicker.Top := 0;
      FDateTimePicker.Left := 0;
      FEdit.Top := 4;
      FEdit.Left := 3;
    end;procedure TTBDateTime.SetWidth(const Value: Integer);
    begin
      FWidth := Value;  FDateTimePicker.Width := FWidth;
      FEdit.Width := FWidth - 20;
    end;procedure TTBDateTime.OnControlEnter(Sender: TObject);
    begin
      if Assigned(FOnEnter) then
        FOnEnter(self);
    end;procedure TTBDateTime.SetFocus;
    begin
      inherited;  FEdit.SetFocus;
    end;end.
    自己该该也可以,自己做一控件