首页 > 移动平台 > 详细

Android平台自己定制日期对话框

时间:2021-06-15 23:58:47      阅读:29      评论:0      收藏:0      [点我收藏+]

我想为一个按钮定制一个日期对话框,即用户点击按钮就弹出一个日期对话框,该如何实现呢?

首先,引用单元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平台自己定制日期对话框

原文:https://www.cnblogs.com/kinglandsoft/p/14886607.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!