2009-09-22 9 views
7

私はマルチドキュメントアプリケーションを開発しています。現在、MDIを使用しています。MDIは私にとっては(開発者として)便利だと思っています。しかし、1つの "反対" - 私は解決策を見つけていないすぐに負荷多くの子ウィンドウ(ウィンドウが作成され、親の領域を埋めるために最大化されるたびに、サイズ変更の 'アニメーション'多くの時間があります)、私は、タブ付きのインターフェースに戻って検討しています。(これにはもう少しの作業が必要です。フォームをページシートに「埋め込む」必要があります。テキスト文書の編集用、一部のオブジェクト用)...Delphi、MDIとマルチドキュメントインターフェイス用のタブとの比較

あなたの意見は? MDIまたはタブ付きインターフェイスを使用する必要がありますか?

+1

関連:[まだMDI用の場所はありますか?](http://stackoverflow.com/questions/486020)&[MDIの子供、またはモードレスのダイアログですか?]質問/ 2451728) – voyager

答えて

9

MDIは、Windowsで3日間(あるいはそれ以前の時期に)開発されたもので、最近は十分サポートされていません。フォームが異なる複数のドキュメントが必要な場合は、タブ付きのインターフェイスを使用することをお勧めします。フォームの代わりにフレームを使用し、新しいタブを作成し、その上にフレームを配置し、alClientを整列させます。

+0

申し訳ありませんが、私はあなたが間違っていると思います。 MDIは数年前にMicrosoftによって非難されました。しかし、マイクロソフトはOffice 2007のように、古典的なMDIシステムを見ることができます。 –

+6

いいえ、そうではありません。Office 2007は独自のフレームワークを使用しており、** WinAPIのMDI機能は** **使用していません。 ++がMDIであると思われるかもしれませんが、そうではありません。 –

+2

正確に。 JvDockingのようにDOCKINGを使用してください。この「見栄えのよい」MDIですが、MDI formStyleとWin31の時代のコードは使用されていませんが、それはバグです。 –

11

子ウィンドウを作成する前に、新しいMDI子ウィンドウのサイズ変更アニメーション(および遅延)を避けるには、WM_SETREDRAWメッセージを親のTFormのClientHandleプロパティに送信し、完了したら再度送信します。

+0

それは速くなる、しかし...私はまだアニメーションを見ることができます! :o – migajek

3

質問:一度に複数の埋め込みフォームやフレームを表示できることは重要ですか?そうでない場合は、確かにタブのために行く。

タブを使用すると、ナビゲートしたり、利用できるものを確認しやすくなります。しかし標準のPageControlでは、一度に1つのタブしか見ることができません。「タイリング」や「カスケード」はありません。たとえば、あるタブから別のタブに物事をドラッグする必要があるときに問題が発生します。これはもちろん可能ですが、便利ではありません。なぜなら、今回はユーザーが何かをドラッグしている場所を見ていないからです。

この制限を克服するには、ドッキングUIを見なければなりません。ドッキングUIは複雑さを増しますが、タブをタイルするだけでなくタイル表示も可能です。

+0

実際にはとにかくタブがあります。彼らは利用可能なウィンドウを表しています。各ウィンドウには独自のタブ項目がありますが、ページコントロールではなく、起動時に添付されたフォームを前面に表示する空のタブだけです。 – migajek

+0

@migajek私はこれが古い投稿だと知っていますが、私がDelphi 1で開始したプロジェクトでまったく同じことをしたことを見て面白いです!それはXE2でも同じように働いています。タブとMDIですが、次のリリースでは、そのコンセプトをフレームに仕掛けています。 –

5

MDIには、あなたが引用したものよりも否定的な点があります。これに関する議論はWikipediaやWindows Interface Guidelinesでも見つけることができます。 MDIは現在何年も使用が中止されています。マイクロソフト自身は、大きなアプリケーションの「標準」形式でMDIを使用していません。多くの場合、他のUIスタイルと一緒にMDIエミュレーションを提供します。

複数の画面を持つユーザー向けのプログラムでは、MDIとタブベースのUIの両方で、ドキュメントウィンドウを親ウィンドウの内側に制限するという問題があります。

適切なアプリケーションデザインでは、実際にはMDIとタブベースのUIを決める必要はありません。ユーザーが最も快適で、自分の作業スタイルに最も適したUIを決めることができます。複数の独立したトップレベルのドキュメントウィンドウ(1つのアプリケーションインスタンス内または複数の)を許可するドキュメントのフレームクラスを作成し、実行時にそれらをタブコントロール、MDI子ウィンドウ、またはトップレベルウィンドウに埋め込むかどうかを決定するのは簡単です。

関連する問題