だから、私はこの仮想キーボードを持っています...
これは dll 内にあり、StayOnTop Modal フォームに基づいています。これは、入力されたテキストを含む WideString を返す関数によって呼び出されます。この仮想キーボードには独自の TEdit があり、ユーザーが書いた内容を確認できます。
必要な動作は、Esc キーまたは Enter キーが押されるまで、KB フォームが最上位にあり、フォーカスを維持することです。
このキーボードへの呼び出しの 1 つは、メイン フォームの OnShow イベント内で発生するため、キーボードが最初に呼び出されるまでには表示されません。
これは今までいつもそうでした。
メイン フォームが実際にロードされる瞬間までに発生するさまざまな手順 (スキンのロード、プラグインのロード、データベースの初期化など) をユーザーに案内するスプラッシュ フォームを作成しました。
スプラッシュ スクリーンは、DataModule OnCreate が実行されるとすぐに表示され、メイン フォームの OnActivate で閉じられます。したがって、このスプラッシュ フォームは StayOnTop ではありません。メイン フォームが表示された瞬間に閉じる必要があるため、その必要はありません。
途中でキーボードが表示されるので、ユーザーは必要なデータを入力できます。
私のアカウントでは、キーボードはモーダル ウィンドウであるため、フォーカスを取得する必要がありますが、実際には、キーボード フォームをクリックするまでスプラッシュ フォームにフォーカスがあります。これは回避したいことです。
スプラッシュ フォームがキーボードの前に呼び出された場合、Modal も StayOnTop もありません。誰かがフォーカスを維持する理由と、可能であればそれを回避する方法を教えてください。
PS: SO で同様の問題に関する他の質問を見つけましたが、逆であることが判明しました: StayOnTop フォームがメインのフォームに焦点を合わせないようにすることです。それは私が必要とするものではありません。