Delphi:dll上的模态形式为splash形式

时间:2014-03-02 01:21:27

标签: delphi modal-dialog lost-focus stayontop

所以,我有这个虚拟键盘......

它位于dll中,基于StayOnTop Modal表单。 它由函数调用,返回带有类型文本的WideString。 这个虚拟键盘有自己的TEdit,用户可以在其中编写并查看他正在编写的内容。

所需的行为是KB形式保持在顶部,并且有焦点,直到按下Esc或Enter键。

对此键盘的一次调用发生在主窗体的OnShow事件中,因此在第一次调用键盘时它不可见。

这一直发生到现在。

我创建了一个启动表单来引导用户完成各种步骤,直到主表单实际加载为止:皮肤加载,插件加载,数据库初始化等等。

执行DataModule OnCreate后,启动屏幕会立即显示,并在主窗体的OnActivate上关闭。 所以这个泼溅形式不是StayOnTop - 它不需要,因为它是在主窗体出现的那一刻右关闭。

在中间某处,键盘显示,因此用户可以输入一些所需的数据。

根据我的说法,键盘应该抓住焦点,因为它是一个模态窗口,但事实是,在我点击键盘表单之前,初始形式具有焦点,这是我想要避免的。

如果在键盘之前调用了splash形式,没有Modal,没有StayOnTop,有人可以告诉我为什么它会保持焦点,以及如果可能的话如何避免它。

PS: 我确实在SO中找到了有关类似问题的其他问题,但结果恰恰相反:希望StayOnTop表单将焦点放在主要表单上。那不是我需要的。

1 个答案:

答案 0 :(得分:0)

好吧,我解决了我的问题。这是一个简单的......

我刚刚在调用键盘之前添加了 Application.ProcessMessages

只要可见,键盘就会转到键盘上。