Android平臺自己定製日期對話方塊
阿新 • • 發佈:2021-06-15
我想為一個按鈕定製一個日期對話方塊,即使用者點選按鈕就彈出一個日期對話方塊,該如何實現呢?
首先,引用單元FMX.Pickers, FMX.Platform,然後宣告一個日期對話方塊:
FDateTimePicker: TCustomDateTimePicker;
然後,在Create事件中建立這個對話方塊:
procedure TQueryCpzsDoc.AfterConstruction; var PickerService: IFMXPickerService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXPickerService, PickerService) thenbegin FDateTimePicker := PickerService.CreateDateTimePicker; FDateTimePicker.Parent := Self; FDateTimePicker.OnDateChanged := HandlerPickerDateTimeChanged; FDateTimePicker.OnHide:=Self.OnDateHide; end; end;
同時要接管使用者輸入日期點確定的事件,OnDateChanged:
procedure TQueryCpzsDoc.HandlerPickerDateTimeChanged(Sender: TObject; constADate: 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,解決!