zoukankan      html  css  js  c++  java
  • 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,解决!

  • 相关阅读:
    ASP生成静态文件编码为UTF-8格式的HTML文件
    asp图片化电话号码,避免蜘蛛之类爬走用户隐私
    动态上传多个文件(asp)
    简单测试IIS下的UrlRewrite技术
    mac配置tomcat
    CSS盒子
    CSS
    HTML
    从java到python
    HTTP协议
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/14886607.html
Copyright © 2011-2022 走看看