- PR -

フォームの継承設計で接合PanelのDockプロパティの関係を変更したい

1
投稿者投稿内容
はなたれ小僧
常連さん
会議室デビュー日: 2003/07/17
投稿数: 21
投稿日時: 2005-06-15 13:45
VS.NET2003 C#, Windowsアプリ

例えば、上位クラスのForm1でパネルとスプリッタの配置とDockプロパティの設定を

Panel1 : Top
Splitter1 : Top
Panel2 : Fill

としてフォームのサイズを変更した場合にはPanel2側で変更分を吸収できるようにします。
しかし、Form1を継承して開発したフォームでこの関係をPanel1とPanel2の間で次のように入れ替えたくなることがあります。

Panel1 : Fill
Splitter1 : Bottom
Panel2 : Bottom

でも、レイアウトはデザイナが記述するControls.Add()の順序が関係するためにこのような希望は実現できないようなのですが、何かうまいアイデアをお持ちの方はいらっしゃいませんか?

全部動的配置で作れと言われればそれまでなのですが、Delphiではこんなことは簡単にできていましたので何か技はあるだろうとお尋ねする次第です。よろしくお願いします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-06-15 13:58
各コントロールのBringToFrontメソッドや、
フォームのControlsプロパティで取得できるControlCollectionオブジェクトのSetChildIndexメソッドを使用することでZオーダーを変更可能です。
継承先からと言うことなら、通常コントロールはpritvateで隠蔽されているはずですから
継承元にprotectedな取得専用プロパティでも作るかしなければなりませんが。
//派生先が位置を変えたいと思う時点で派生先から隠蔽する意義は失われているでしょうし。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-06-15 13:58
継承先で必要な Dock プロパティを設定した後、 Panel1.SendToBack() を実行すれば
いいのかな?

かぶった…
「やりたいこと」から推測すると、多分 protected にはしているんでしょう。


[ メッセージ編集済み 編集者: にしざき 編集日時 2005-06-15 14:01 ]
はなたれ小僧
常連さん
会議室デビュー日: 2003/07/17
投稿数: 21
投稿日時: 2005-06-15 14:14
Hongliangさん、にしざきさん、早速にありがとうございました。

Controls.Add()の順序を変えるということはZオーダーを変更するということだったんですね。おっしゃるとおりでうまくいきました。聞いてみるもんですね。
1

スキルアップ/キャリアアップ(JOB@IT)