我想为一个按钮定制一个日期对话框,即用户点击按钮就d出一个日期对话框,该如何实现呢?
首先,引用单元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,解决!
总结
以上是内存溢出为你收集整理的Android平台自己定制日期对话框全部内容,希望文章能够帮你解决Android平台自己定制日期对话框所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)