我用Tdatetimepicker控件时,运行程序录入功能时,
第一次焦点是在“年”上,
但第二次录入时焦点就在“日”上了,这样用户录入日期就很不方便。经过多次试验,发现Tdatetimepicker控件的焦点都是在上次退出的地方。
请问:怎样让每次焦点都在“年”上。
另外,我是肯定结帖的,我都很讨厌那些只提问不结贴的人。
我感谢每一个关注此问题的人,即时是UP。
第一次焦点是在“年”上,
但第二次录入时焦点就在“日”上了,这样用户录入日期就很不方便。经过多次试验,发现Tdatetimepicker控件的焦点都是在上次退出的地方。
请问:怎样让每次焦点都在“年”上。
另外,我是肯定结帖的,我都很讨厌那些只提问不结贴的人。
我感谢每一个关注此问题的人,即时是UP。
但是多次录入时并不退出Form,
而且每次进去,不用初始化,焦点都在“年”上面。
离开后,然后把焦点移到“年”上
怎么做初始化?
又怎样把焦点移到“年”上?
请教了。
但是,Tdatetimepicker是一控件,“年”作为其部件,我查遍资料,没有发现直接存取的属性或方法。唉,看来,我还比各位懂得还多一点。
begin
PostMessage(DateTimePicker1.Handle, WM_KEYDOWN, VK_LEFT, 0);
end;
你的思路是模拟键盘方向键输入,我也考虑过了。
但由于1、“年”“月”“日”按左右键是循环移动的,但是
1:第一次是在“年”,不能移动,怎么判断第“几”次,相信有办法,但会不会把问题修改范围扩大了呢?
2:你无法确定上次是在哪里退出,所以模拟键盘次数不能确定。
3:感觉Delphi还是,很多怪问题(有空我写出来),不是一个很严格的产品。
我已经绝望了
我实际用的是TDBdatetimepicker控件,你的方法肯定行,但是涉及改动的范围太多了,包括界面格式等等,只是下策啊!
procedure TForm1.Button1Click(Sender: TObject);
var
nTop, nLeft, nWidth: integer;
ParentCtl: TWinControl;
val: TDateTime;
begin
with DateTimePicker1 do
begin
ParentCtl := Parent;
nTop := Top;
nLeft := Left;
nWidth := Width;
val := DateTime;
Free;
end; DateTimePicker1 := TDateTimePicker.Create(Application);
with DateTimePicker1 do
begin
Parent := ParentCtl;
Top := nTop;
Left := nLeft;
Width := nWidth;
DateTime := val;
SetFocus;
end;
end;
我总是觉得在Delphi里,涉及到日期总会出现一些小问题。
请问怎样动态创建datetimepicker?能否说得详细一点。多谢了!
cmmi(大彬):
你的方法我马上试试。
如果行的话,我马上结了这个帖子,并且另开一个给分,请两位关顾。
方法就是cmmi(大彬)所说的啦