我有一个应用程序,在Delphi 2007中构建,TDateTimePicker在表单上有一个.此日期时间选择器具有ShowCheckbox设置为的属性True,其在日期或时间旁边显示一个复选框,每当用户选择日期时,或者通过代码更改日期或时间时,该复选框将自动选中.此复选框的状态也可由用户手动控制,其状态可由Checked属性确定.
以下代码显示如何确定OnChange事件中此复选框的状态:
procedure TForm1.FormCreate(Sender: TObject);
begin
DateTimePicker1.ShowCheckbox := True;
end;
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
ShowMessage('Checked: ' + BoolToStr(DateTimePicker1.Checked, True));
end;
Run Code Online (Sandbox Code Playgroud)
上面的代码在Windows XP上按预期工作,但在Windows 7上,Checked无论该复选框的实际状态如何,该属性都返回True.
为什么Checked属性返回始终为True,即使取消选中复选框也是如此?有办法以某种方式修复或解决这个问题吗?
PS我的应用程序使用Windows主题
我的应用程序的一些用户有一个奇怪的问题,在启动时他们得到一个例外的datitimepickers,其预定的最小/最大日期设置为1950年1月1日 - 2050年12月31日.
应用程序抛出的默认错误消息是
"读取time1.Max时出错:无法设置日历最小/最大范围."
在嵌入调试器(madshi的madExcept)后,我在报告中看到:
"阅读时间错误1.MaxDate:'23:59:59'不是有效的日期和时间."
表单上的对象具有以下属性:
Run Code Online (Sandbox Code Playgroud)Date = 39773.494141041670000000 Format = 'MMM yyyy' Time = 39773.494141041670000000 MaxDate = 55153.999988425920000000 MinDate = 18264.000000000000000000
知道可能是什么问题吗?
崩溃数据:
主线程($ 2b08):
> 0051501b +0a7 app.exe System.Classes 10430 +5 HandleException
> 00515255 +1f5 app.exe System.Classes 10487 +48 TReader.ReadProperty
> 00514a65 +015 app.exe System.Classes 10233 +1 TReader.ReadDataInner
> 00514a47 +067 app.exe System.Classes 10226 +11 TReader.ReadData
> 0051de05 +001 app.exe System.Classes 15947 +0 TComponent.ReadState
> 0057d017 +02f app.exe Vcl.Controls 5567 +3 TControl.ReadState
> 00581481 +025 app.exe …Run Code Online (Sandbox Code Playgroud) 如果这个问题听起来有些愚蠢,请道歉,但是对于XE2,我可以看到TDateTimePicker的OnDblClick事件似乎在事件列表中缺失.真的是这样吗?以下是我的进展方式:
我可以看到,TDateTimePicker的事件列表中缺少OnDblClick事件.另一方面,使用Delphi 7,它工作正常,我可以看到OnDblClick事件.到目前为止,我没有找到任何相关信息.
是否有一些人需要做的额外设置,或者我只是错过了一些明显的步骤?
如果我设置TDateTimePicker组件(Delphi XE10)的属性"格式",例如.DDD d /米/ yyyy的话,就说明星期二14/ 47 /2016年!! 和日期31/12/2016为31/ 0 /2016!发生了什么事,拜托?