如何使Active Form中的DateTimePicker象在普通Form中一样通过方向键控制(100分)

  • 主题发起人 主题发起人 marshal
  • 开始时间 开始时间
M

marshal

Unregistered / Unconfirmed
GUEST, unregistred user!
1:在普通Form中,DateTimePicker可以直接通过方向键使年(或月、日)自动增减一个
单位,但在Active Form中为什么就不可以呢?请各位高手指点如何解决
2:怎样能使Active Form中的各控件象普通Form那样通过Tab键切换控件的焦点
 
刚选错分数了,本想选300分的,不过没关系,接受答案后我可以追加200分
 
1、先建立一个ActiveXForm工程
2、增加并设计好新的窗体(普通)如:frmMain等。
DateTimePicker和你的其他功能都在这个窗体实现。
3、在ActiveXForm的单元文件中引用窗体(普通)单元
4、在ActiveXForm的单元文件中增加ActiveFormCreate事件:
procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
begin
frmMain:=TfrmMain.Create(Self);
with frmMain do
begin
Parent:=Self;
Align:=alClient;
BorderStyle:=bsNone;
Visible:=True;
end;
end;
 
To heat: 这样实际上是避开了ActiveX Form,但我的所有组件都是以他为主界面
的,如果采用你的方法要从整个设计上做很大的变动,这是不现实的。
谁能帮帮我?
 
上面那位的办法是最好的,否则以后麻烦更多,
把activeform转为普通form也不难,李维讲activeform那一段说了的!
 
第二个问题我已经解决了,在ActiveForm的OnKeyPress事件中处理:
procedure TAxfRegist.ActiveFormKeyPress(Sender: TObject;
var Key: Char);
var
KeyValue:integer;
begin
if Ord(Key)=9 then
begin
Key:=#0;
SelectNext(ActiveControl,True,True);
end;
end;
第一个问题还希望有高手能指点一二

 
我想直接通过自己写代码来控制时间的改变,可是OnKeyDown、OnKeyPress这几个事件中
根本不能接收方向键值,查资料才发现ActiveForm中的方向键分配给了IE,哪位大侠可以
告诉我怎么样才可以截获这几个键值(主要是上、下方向键)?我先谢谢了
 
>>marshal
按heat的方法比较好,因为ActiveX Form转换为form的方法,可以简化很多问题。
 
Tense:
如果上天能给我再来一次的机会,我会用那种方法^_^,但现在我的问题是如何在
当前界面中处理。
难道就真的没有办法处理了吗????
 
肯定是可以的,不过,相当麻烦
重载activeForm的wndproc,自己处理WM_KEYDOWN消息,把相应的方向键部分,强制发送给
datetimepicker
 
好久没来了,今天就把这历史遗留问题结束掉吧
 
多人接受答案了。
 
后退
顶部