10

D Forms Libraryを使用しようとするたびに、 D Forms Libraryがないという事実に出くわしますTableLayoutPanel。これにより、優れた GUI を作成することが事実上不可能になります。

TableLayoutPanelDFL の実装はありますか?
人々は通常、このライブラリなしでどのように使用しますか?

編集:

DFL を使用する別のプログラムへのリンクは、回答の大きなボーナスになります。:)

4

3 に答える 3

6

長さがコメントの長さの制限を超えているため、回答として投稿します。

私はあなたの質問に反対票を投じました。GUI ライブラリに関するあなたのこれまでの経験は、Qt などのボックス レイアウトをサポートするライブラリに関するものだったと思います。Win32 GUI API 自体は、ボックス レイアウトを作成するためのプリミティブを提供しません。完全に絶対座標を使用します。これは、MFC など、API の上に構築される多くの OO ライブラリで変更されていません。VCL などの一部のライブラリには、ボックス レイアウト (配置と自動サイズのパネル) を作成するためのオプションのプリミティブがありますが、最終的には、すべてのコントロールの再配置はアプリケーションまたは GUI フレームワークで行う必要があるため、このようなものが最初から DFL に実装できます。

だから、あなたの質問に答えるために:

TableLayoutPanelDFL の実装はありますか?

おそらくそうではありません。

人々は通常、このライブラリなしでどのように使用しますか?

Entice Designer を使用して、マウスでフォームにコントロールを描画します。(MFC/Visual Studio、VCL/Delphi IDE などでも同様です。)


コメントへの返信:

テーブル レイアウトに物を配置するにはどうすればよいですか (例: 2 つ並べて、1 つを下に配置)。

固定高さのパネルを下部に配置し、残りのスペースを 2 つの領域に分割して、フォームのサイズを変更したときに両方ともフォームの幅の半分のままにしたいというご要望を承りました。

  1. Entice Designer で、パネルを配置し、 に設定dockBOTTOMます。その高さを適切に設定します。
  2. 2 番目のパネルを配置し、 に設定dockRIGHTます。
  3. フォームのコードに、次のメソッドを追加します。
    protected override void onResize(EventArgs ea)
    {
        super.onResize(ea);
        panel2.width = this.clientRectangle.width / 2;
    }

ご覧のとおり、より複雑な「ラバー テーブル」を取得すると、すぐに面倒になります。私は気にしないか、複雑な動的レイアウトが本当に必要な場合は、別のライブラリを探します。

それとも、そもそもそれが悪い考えだと言っていますか?

私の言いたいことは間違いありません。ビルドに IDE を使用する必要がないセマンティック レイアウトの利点は明らかです。Win32 API ルートのため、Windows GUI ライブラリがそれらを構築するための適切な手段を提供することはめったにありません。もちろん、それらがなくても GUI の構築が不可能になったり難しくなったりするわけではありません - 人々は通常、固定サイズのフォームなどを使用するだけです (これは、Windows から KDE に切り替えるエンド ユーザーには明らかです - ほとんどの KDE ダイアログはサイズ変更可能ですが、Windows ' そうではありません。)

于 2011-07-12T15:27:10.667 に答える
1

コードに近づいたので、レイアウトを管理するには 2 つの方法があります。ラチェットで述べたように、絶対位置とドッキングもあります。ドッキングすると、アイテムは 5 つの可能な場所に配置されます。上、下、左、右、または中央 (塗りつぶし)。次に、これらのいずれかにパネルを配置できます。このパネル自体に、ドッキングされた要素を含めることができます。ドッキング値をDock プロパティに割り当てます。

Entice Designerは DFL で書かれています。

于 2011-07-11T18:51:24.480 に答える
1

テーブル レイアウトがない場合は、場所とサイズのプロパティを使用して、ボード上に配置することができます (独自のテーブル レイアウトを実装することもできます)。

entice デザイナーを使用して gui を作成し、生成されたソースでさらにビルドすることができます

于 2011-07-11T16:15:10.577 に答える