1. 程式人生 > 其它 >Android平臺自己定製日期對話方塊

Android平臺自己定製日期對話方塊

我想為一個按鈕定製一個日期對話方塊,即使用者點選按鈕就彈出一個日期對話方塊,該如何實現呢?

首先,引用單元FMX.Pickers, FMX.Platform,然後宣告一個日期對話方塊:

    FDateTimePicker: TCustomDateTimePicker;

然後,在Create事件中建立這個對話方塊:

procedure TQueryCpzsDoc.AfterConstruction;
var
  PickerService: IFMXPickerService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXPickerService, PickerService) then
begin FDateTimePicker := PickerService.CreateDateTimePicker; FDateTimePicker.Parent := Self; FDateTimePicker.OnDateChanged := HandlerPickerDateTimeChanged; FDateTimePicker.OnHide:=Self.OnDateHide; end; end;

同時要接管使用者輸入日期點確定的事件,OnDateChanged:

procedure TQueryCpzsDoc.HandlerPickerDateTimeChanged(Sender: TObject; const
ADate: TDateTime); begin DateButton.Text := FormatDateTime('yyyy-mm-dd', ADate); end;

最後,別忘記銷燬這個對話方塊:

procedure TQueryCpzsDoc.BeforeDestruction;
begin
  if Assigned(FDateTimePicker) then
  begin
    if FDateTimePicker.IsShown then
      FDateTimePicker.Hide;
    FreeAndNil(FDateTimePicker);
  end
; inherited; end;

現在,點選DateButton時,顯示這個對話方塊:

procedure TQueryCpzsDoc.DateButtonClick(Sender: TObject);
var
  d: TDateTime;
begin
  if TryStrToDate(DateButton.Text, d) then
    FDateTimePicker.Date := d
  else
    FDateTimePicker.Date := Date;

  FDateTimePicker.Show;
end;

萬事大吉,為一個按鈕,定製了一個日期對話方塊。

遇到的問題:

在我的實際專案中,發現這個對話方塊會自動隱藏,經查,發現是TTabControl,用Timer定時顯示一個TabItem時,將我的對話方塊給關了。查到原因就好解決了,當顯示這個對話方塊時,Timer.Enabled:=False,解決!