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,解決!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM