以前
「状態推移画面を作成するときによくPageControlを使用します。
しかし一番外側の凹凸感が不要のためBevelを0にしたいのですがうまくいきません。」
と質問し、そのときには解決と思ったのですが
Panelの上にPageControlを配置し、何ページか作成し、そのTabSheet上にPanelを配置、
PageControlとTabSheet上のPanelのAlignを「alClient」に設定したとき
やはり、TabSheet内の凸凹はないものの、Bevelが2ぐらいとられているのかかなり領域が狭くなります。
PanelのBevelInnerやBevelOuterはbvNoneに設定済み
・各TabVisibleはFalseに
・StyleをtsFlatButtonsに
をやっても灰色の枠が表示されてしまいます。
一番外側のコンポーネントの領域=TabSheet上のPanelの領域
としたいのですが、何か方法はありますでしょうか?
【環境】
WindowsXP Delphi5
https://www.petitmonte.com/bbs/answers?question_id=7174
>各TabVisibleはFalseに
そもそもPageControlを使う必要があるのか?
KHE00221様へ
>そもそもPageControlを使う必要があるのか?
元々各ページ内が凝ったレイアウトになっており、その凝ったページ複数ページを切り替えるのに使っていました。
そのときPageControlが使いやすかったので使っていたのですが、やはりページ切り替えのクラスを独自に作った方がよいのですかね?
> Bevelが2ぐらいとられているのかかなり領域が狭くなります。
枠線の分をとられることが分かっているのなら、その分だけ領域を大きくしてやればいいのでは。
AlignをalCilentにしているということは、PageControlが親Panelの全領域を覆っているのですよね。
それなら上下左右にもう2ピクセルずつ大きくしてやれば、見た目上完全に枠がなくなります。(親ウィンドウからはみ出た分はクリップされるので見えません)
AlignをalNoneにしておいて、親PanelのResizeイベントでサイズを調整してやるといいと思います。
> そのときPageControlが使いやすかったので使っていたのですが、やはりページ切り替えのクラスを独自に作った方がよいのですかね?
私もタブなしPageControlは便利なのでよく使います。同じ場所にPanelを何枚も重ねたりするより断然編集しやすいですから。
代替案としては、Frameを使う方法もありますね。これだと各ページの内容を独立したクラスとして編集できます。
tor様へ
>AlignをalNoneにしておいて、親PanelのResizeイベントでサイズを調整してやるといいと思います。
この方法でやってみたところ、理想の表示になりました。親コントロールから少しはみ出すため、スクロールバーが表示されるなどがありますが、それらはオフにすることで対応出来ました。
座標が決めうちになってしまうのが少し心配です。
>代替案としては、Frameを使う方法もありますね。
それも平行して進めてみます。Frameの切り替えコントロールを作る必要がありそうですが、環境には左右されにくそうですね。
これで解決とさせて頂きます。
ありがとうございました。
ツイート | ![]() |