- - PR -
ユーザコントロールについて(VB2005)
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-15 21:43
諸農です。
ユーザーコントロールの作り方ですが、Panelをかましてみては如何ですか? 但し、デザイナ設計時にコントロールを配置する順番を間違えないでください。 手順 ユーザーコントロール上にSplitContainerを貼り付ける前にPanelを貼り付けます。 PanelのDockをBottomにセットします。 Panel上にボタンを配置します。 ユーザーコントロール上にSplitContainerを貼り付けます。 Panelが占有している領域を残してFillされていることを確認します。 SplitContainerにTreeViewとDataGridViewを配置します。 この順序でどうでしょうか。 私の環境での実験的結果なんですが、最初にユーザーコントロール上にSplitContainerを配置してしまうと、Dock=noneにしてまたFillに戻してしまうと、SplitContainerの後に配置したPanelコントロールの上に覆い被さってしまいました。もしかするとボタンだけの時も同じかも知れません。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2007-05-15 22:53
お返事ありがとうございます。
>ユーザーコントロール上にSplitContainerを貼り付ける前にPanelを貼り付けます。 >PanelのDockをBottomにセットします。 >Panel上にボタンを配置します。 >ユーザーコントロール上にSplitContainerを貼り付けます。 >Panelが占有している領域を残してFillされていることを確認します。 >SplitContainerにTreeViewとDataGridViewを配置します。 丁度その逆で、Panalの上にSplitContainerを貼り付けて、やっぱりうまくいかないという結果を得ていました。 今は自宅なので試せませんが、明日の朝一番でやってみます。 何か、その方法ならうまくいきそう(というか、いってくれないと困る・・・)です。 明日やってみて、結果を報告します。 ありがとうございます。 | ||||||||||||
|
投稿日時: 2007-05-16 00:01
解釈の適切さ痛み入ります。 んー。 実行時のスナップショット: グリッドの横スクロール切れてない? = ボタンがクライアント領域外に逃げてない? と、いう点から 直観的に Dock と Anchor のデザイン関係だと思ってたのですが、ハズしてましたか。 ぐすん。 | ||||||||||||
|
投稿日時: 2007-05-16 09:52
おはようございます。
>手順 >ユーザーコントロール上にSplitContainerを貼り付ける前にPanelを貼り付けます。 >PanelのDockをBottomにセットします。 >Panel上にボタンを配置します。 >ユーザーコントロール上にSplitContainerを貼り付けます。 >Panelが占有している領域を残してFillされていることを確認します。 >SplitContainerにTreeViewとDataGridViewを配置します。 やってみたところ、SplitContainerがPanelの上に覆いかぶさってしまい、同じ結果でした。残念です。 | ||||||||||||
|
投稿日時: 2007-05-16 10:29
諸農です。
設計時には被さらない、のですね。 実行時にPanelコントロールの上にSplitContainerが被さるのですね。 アンカーの設定は変えていませんね?(TopとLeftのまま) 根本的な解決ではないですが、最初に上下分割のSplitContainerを配置して、上側にSplitContainerをもう一つ配置して、下側にパネルを配置してその上にボタンを配置してみてはどうですか。もしくはTableLayoutコントロールを使うとかなど。 開発環境というのはえりさんの端末だけですか? こちらでは再現できないので、もし他にも開発環境があるのであれば、そちらでも確認できませんか。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2007-05-16 11:42
こんにちは。
ありがとうございます。 >設計時には被さらない、のですね。 >実行時にPanelコントロールの上にSplitContainerが被さるのですね。 >アンカーの設定は変えていませんね?(TopとLeftのまま) PanelとSplitContainerの組み合わせの場合、設計時にもSplitContainerがPanelを覆ってしまいます。 >根本的な解決ではないですが、最初に上下分割のSplitContainerを配置して、上側に>SplitContainerをもう一つ配置して、 >下側にパネルを配置してその上にボタンを配置してみてはどうですか。もしくは>TableLayoutコントロールを使うとかなど。 やってみました。 こうすると、確かにSplitContainerが全体を覆ってしまうことは無くなるのですが、実行時にフォームのサイズを変えたりすると、それに合わせて、下段にあたる部分の高さも変わってしまいます。(ボタンの配置しているパネルの部分の高さは常に一定で、GridやTreeを表示しているパネルの方だけフォームの大きさに応じて調整されるようにしたいのですが・・・) >開発環境というのはえりさんの端末だけですか? >こちらでは再現できないので、もし他にも開発環境があるのであれば、 >そちらでも確認できませんか。 VB2005が入っているのは、私だけなので、今すぐには他のPCで試すことができません。 一度、家のPCにVB2005をインストールして、再現するか確かめたいと思います。 (私のPCでのみ起きる症状だとしたら、再インストールということになりますね・・・。) | ||||||||||||
|
投稿日時: 2007-05-16 12:06
諸農です。
うまく伝わっていなかったようです。 最初にPanelを配置して、DockをBottomに設定する。 その後にSplitContainerを配置する。 SplitContainerはデフォルトがDock=Fullなのですが、最初にパネルが下部の領域を占有しているので覆い被さらないはずです(私の環境ではそうでした)。 ですので、まずは設計時に覆い被さらない状況になるのを確認してください。 上記とは別に、これまで色々と確認していただいていますが、設計時では小さいサイズでデザインしてコントロールのアンカーを上下左右の全部にセットしていて、実際の実行時にはサイズが大きくなる様な状況だと、アンカー設定されたコントロールがユーザーコントロール内で覆い被さるような現象が起こると思うのですが、そう言うことではないですよね?アンカーはTopとLeftで試されていますよね?また、3.jpgの状況としてSplitContainerがタブページを超えてフォームにまで進出しているというわけではないですよね? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2007-05-16 12:58
こんにちは。
ありがとうございます。 >うまく伝わっていなかったようです。 >最初にPanelを配置して、DockをBottomに設定する。 >その後にSplitContainerを配置する。 >SplitContainerはデフォルトがDock=Fullなのですが、 >最初にパネルが下部の領域を占有しているので覆い被さらないはずです >(私の環境ではそうでした)。 >ですので、まずは設計時に覆い被さらない状況になるのを確認してください。 私が文章をうまく理解できていなかったようで、 PanelとSplitContainerの組み合わせで、期待通りの表示になりました。 おかげで助かりました。 本当にありがとうございます。 |