所以,我有这个虚拟键盘模式窗体...德尔福:上一个dll到飞溅形式
这是一个DLL内,并基于StayOnTop模态形式。 它被一个函数调用,它返回带有输入文本的WideString。 这个虚拟键盘有它自己的TEdit,用户在这里写和看到他在写什么。
所需的行为是让它们KB表格保持顶部,并带有焦点,直到按Esc或Enter键。
对此键盘的调用之一发生在主窗体的OnShow事件中,所以在第一次调用键盘时它不可见。
这一直发生到现在。
我创建了一个飞溅的形式通过正在发生,直到主要形式实际加载的瞬间的各个步骤,引导用户:皮肤加载,插件的加载,初始化数据库的启动画面显示为等
DataModule OnCreate即将执行,并在主窗体的OnActivate上关闭。 所以这个飞溅形式不是StayOnTop - 它不需要,因为它是在主窗体出现的瞬间关闭。
在中间的某个地方,键盘显示出来,所以用户可以输入一些所需的数据。
由我的帐户,键盘应该抓住焦点,因为它是一个模式窗口,但事实是,飞溅形式有焦点,直到我点击键盘形式,这是我想要避免。
如果飞溅形式在键盘之前调用,没有Modal,没有StayOnTop,有人可以告诉我为什么它保持焦点,以及如何尽可能避免它。
PS: 我确实在SO上发现了其他类似问题的问题,但事实却恰恰相反:希望StayOnTop表单能够将重点放在主要问题上。这不是我需要的。
在键盘窗口的OnShow中调用SetForegroundWindow。 –
键盘形式的弹出父项是什么? –
@SertacAkyuz:我只是做了,但没有变化... 焦点仍然在后台飞溅的形式 – nunopicado