2011-01-20 18 views
1

this articleには、Delphi PageControlのTTabSheetsの代わりにTFramesを使用する方法の説明があります。Delphi:TFramesの複数のインスタンスの管理

私は同様の練習を熟考していますが、これは解決策を提供していないようで、私の解決策は過度に複雑に見えます。

タブ付きのインターフェイスが必要です。各タブは、さまざまなデザインの1つです。各デザインはTFrameとして実装されています。

デザインするアプリケーションの性質上、特定の瞬間に(タブの内容は異なりますがデザインではなく)異なるフレームの複数のコピーを開くことができるため、ユーザーは同時に2/3の異なるアイテム。我々はオープンフレームAの各々を3つのタブを有していてもよく、別の機会に、オープンフレーム設計A. のすべてを3つのタブを有していてもよい1つのセッションで、例えば

は、BおよびC

設計があることが必要です要求に応じてデザインにフレームを追加できるほど柔軟な柔軟性を備えています。

現時点では、開かれている各タイプのフレームを管理する別々のTListsと、おそらくは開かれているタブを追跡するためのマスターTListを用意するという方法があります。私が言ったように、複雑な以上。

これはもっと簡単にどのように扱うことができるのでしょうか?

+4

*管理*の要件がありません。特定のフレームのコピーは別個のインスタンスです、そうですか?だから問題は何ですか? IOW、あなたのリスト*は何を提供していますか? –

+0

それは私がSEについて愛していることです:)それを減らすために、もっと大きなコンセプトに巻き込まれてしまったのですか? Sertac、それを私がそれを受け入れることができるように答えとして投稿することができます:) –

+0

私は多分質問の束の中で賢明な答えを作ることはできません。 ;)既存のものがどれも問題を解決できない場合は、自分で答えを提供してください。あなたのデザインが最高です。 –

答えて

1

おそらくフレームインスタンスのマスターTListを除外します。

必要な場合は、TPageControlを直接、または各フレームタイプの個々のTListsを介して問い合わせることで取得できます。

あなたのアプローチが妥当であるとは別に、

1

私は自分のメニューコントロールを使って1つのパネル上のフレームを管理し、どのフレームが見えるかを制御するアプリケーションを持っています。フレームを見えるようにする必要があるときは、私が望むものを除いて、パネル上のすべてのフレームに対してvisible = falseを設定します。私はパネルに何が入るのかを制御しているので、少なくとも各コントロールはTframeであり、PanelのControlsプロパティを反復することで各フレームに到達することができます。私はその後、私のメインフォームと私のフレームとの間の通信にインターフェイスを使用します。

標準のウィンドウタブ付きインターフェイスを使用する場合でも、提案したようにページコントロールを使用することができます。各TtabSheetには1つのTframeがあり、タイプを確認して必要に応じて使用できます。なぜTframesのリストに入る必要があるのであれば、ページコントロール内のTtabSheetsを反復処理することで、それを動的に構築することができるため、Tlistが必要な理由はわかりません。

私の最初のアプローチと同様に動作する代わりに、良いWindowsタブを得る代わりに、TpageControlの代わりにTtabControlを使用する方法があります。 TtabControlでは、基本的にはすべてのタブを表すTstringsインスタンス(Tabsプロパティ内)を取得します。それはTstringsなので、オブジェクト(つまり、Tframe)を各アイテムに関連付けることができ、したがってそれぞれのタブに関連付けることができます。タブをクリックすると、すべてが隠され、正しいTframeが表示されます。 Tabsプロパティを介してTtabControlにアタッチされているため、リストもあります。フレームの可視性を自分で処理するだけです。

+0

フレームの各タイプのインスタンスが1つしかないと意味があります。たとえば、3つのフレームデザイン(A、B&C)と3つの開いているタブがある場合、それらはAAA、BBC、ABCなどであるかもしれません。 –

+0

デザイン時にフレームがありません。フレームを動的に作成し、選択したシナリオに適切に親を設定し、alClientに整列を設定するだけです。シナリオごとに、親/ページを繰り返してフレームを見つけることができます。他の人が暗示しているように、リスト(またはリスト)を維持する必要はありません。私は、同じことを達成するためのいくつかの異なる方法を提供しようとしていました。 – Jenakai

0

私たちはTPageControlを使用し、独自のTFrameの新しいプロパティを持つTTabSheetの子孫を実行時に作成します(スキャンする必要はありません)。毎回フレームを検索するためのコントロールまたは.Components)。

関連する問題