标签:begin end 对话框 FDateTimePicker Android 定制 procedure TQueryCpzsDoc
我想为一个按钮定制一个日期对话框,即用户点击按钮就弹出一个日期对话框,该如何实现呢?
首先,引用单元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,解决!
标签:begin,end,对话框,FDateTimePicker,Android,定制,procedure,TQueryCpzsDoc 来源: https://www.cnblogs.com/kinglandsoft/p/14886607.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。