FireMonkeyを使用して、多くのドキュメントフォーム/フレームと1つのマスタフォームという伝統的な意味でMDIアプリケーションを作成できますか?私はフォームにはMDIコントロールはもはや存在しないので、特に興味FireMonkeyとのMDIインターフェイス
は...それは別の何かに置き換えられていますか?
EDIT:
1)として、あなたの個々のフォームを作成します。私は子フォームを作成するときに問題に加えて、それらはすべて
FireMonkeyを使用して、多くのドキュメントフォーム/フレームと1つのマスタフォームという伝統的な意味でMDIアプリケーションを作成できますか?私はフォームにはMDIコントロールはもはや存在しないので、特に興味FireMonkeyとのMDIインターフェイス
は...それは別の何かに置き換えられていますか?
EDIT:
1)として、あなたの個々のフォームを作成します。私は子フォームを作成するときに問題に加えて、それらはすべて
はここでは使用することができる一つの方法だ...でもOpenDialogs、別途タスクバーに示しました。 TLayoutを使用することを除いて、通常、そのフォームのすべてのコントロールの親として "LayoutMain"(整列されたalClient)を呼び出します。
2) "マスターフォーム"で、フォームインスタンスをMDIインターフェイスとして動作させる場合は、TLayout( "FormContainer"などと呼んでください)を作成し、 Form Caption、Minimize/Maximize/Closeボタンなどの個別のコントロールを含む別のTLayout(「FormHeader」と呼ぶ)を「フレーム」見出しに追加します。 これはコンポジットと呼ばれています。
3))(あなたの子フォームのインスタンスを作成しますが、それをを表示しない、親、そのインスタンスの主TLayout「LayoutMain」メインフォームのTLayout「FormContainer」へ。
4)前述のTLayout(「FormHeader」という名前)で、OnMouseDown
とOnMouseMove
というイベントを与え、マスターフォームの周りにドラッグする機能を提供します。
マスターフォーム内で子フォームを最大化する場合は、外側のTLayout "FormContainer" alignプロパティをalClientに設定して、元のTop、Left、WidthおよびHeightの値をフォームのインスタンスに保存されているので、[復元]ボタンを押すと呼び出すことができます。
本当に、これはかなり複雑な解決策ですが、私の知る限りでは、今日のようにFireMonkeyでやろうとしていることを達成するための唯一の方法です())。
MDIは、昔ながらのアプローチと考えられているように私は、エンバカデロが「箱から出して、」FireMonkeyのの一環として、MDIエミュレーションのいずれかの形式を提供するために、期待していません。
より現代的な解決策は、RAD StudioのIDE自体がするように、ドッキングを使用することです。これは、両方の世界の中で最高のものを提供し、ユーザーがどの子フォームをマスターフォームにリンクするかを自由に選択することができます。
良い答えをいただき、ありがとうございます。私の場合、私は独自のTFMXHandles(私はプラットフォーム上のHWNDに変換してOpenGLコンテキストを初期化する)を持ついくつかのMDIウィンドウを持つことができるより標準的なソリューションを探していました。私の既存のソリューションはいくつかのフォームを作成することですが、残念ながら彼らは一緒にうまく動作していません - タスクバーからのZオーダーとフォーカスは間違っています。 – Kromster
XE2アップデートがまだリリースされているので、最終的に修正されると思います。 – Kromster