2009-06-05 17 views
1

フレームを広範囲に使用するアプリケーションがあり、その時点でどのフォームがアクティブであるかによって、特定のボタンを非表示にする必要があります。ボタンをきちんと整理して整理するために、それらをパネルに配置し、必要に応じて各フォームのパネルを表示または非表示にしています。私の問題は、各フォームが最初に作成されたとき、フレームのパネルが順番どおりになっていても、明示的にそれらを配置する順序です。フォームを非表示にして再表示した後、パネルは正しい順序で表示されます。どのように最初から適切な順序でそれらを保つための任意の提案?Delphiアプリケーションのフレーム動作の問題

+1

"私は明示的にどの順序で自分自身を入れるのか"と言っていますが、どこでこれを話していますか?どのようなイベントで? – tekBlues

+0

ちょっと手を加えてください。数行のコードでも問題はありません。 –

+0

FrameResizeイベントでは、画面上のすべてのパネルの位置を設定しています。本質的に: pnCopyPaste.Postion:= 0; pnSaveLoad.Position:= 130; など 私ができたテストから、作成時にサイズを変更する必要があるため、フォームのサイズが変更されたときだけでなく、作成時にイベントがヒットします。 –

答えて

3

パネルに明示的な位置を与えるのではなく、アライメントを与えてみてください。フォームはフォームのサイズを変更すると、より良い結果を得ることができます。

+0

元々整列整列が見つかりました。私はそれらを調整しなければなりませんでした。 –

1

また、パネルの親としてスタックパネルを使用してみることもできます(または、フローパネルですか?)。その後、操作するポジションではなくオーダーがあります。

1

DevExpress LAyoutControlをご覧になれますか?特定のグループやパネルを表示するかどうかに関わらず、常に見栄えのよいインターフェースを作成するのに役立ちます。必要に応じて、インタフェースの実行時カスタマイズも可能です。

+0

DevExpressの規則:価格は – smok1

+0

ですが、そのコンポーネントは投資価値があると思います。このバージョンではタブもサポートされますので、本当に楽しみにしています! – Birger

0

座標で整理しようとします。つまり、上と左を設定します。あなたのパネルが整列されていない限り、これはいつもうまくいくでしょう(しかし、それは多少の作業が必要です)。

0

私はこの問題を抱えていたと私は解決策がFormCreateでこれを行うことだったことがわかった(またはあなたのフレームのCMShowingChanged方法で):

MyPanel1.Align := alNone; 
MyPanel2.Align := alNone; 
MyPanel1.Align := alBottom; 
MyPanel2.Align := alBottom; 

は、あなたが必要とするために、復元 - これは、並べ替えるように見えました視覚的に注文を出す。

関連する問題