PageControlのBevelを0にするには?(その後)

解決


take  2011-03-02 17:42:22  No: 40126

以前
「状態推移画面を作成するときによく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


KHE00221  2011-03-02 18:25:55  No: 40127

>各TabVisibleはFalseに

そもそもPageControlを使う必要があるのか?


take  2011-03-02 18:40:34  No: 40128

KHE00221様へ

>そもそもPageControlを使う必要があるのか?

元々各ページ内が凝ったレイアウトになっており、その凝ったページ複数ページを切り替えるのに使っていました。

そのときPageControlが使いやすかったので使っていたのですが、やはりページ切り替えのクラスを独自に作った方がよいのですかね?


tor  2011-03-02 19:04:35  No: 40129

> Bevelが2ぐらいとられているのかかなり領域が狭くなります。
枠線の分をとられることが分かっているのなら、その分だけ領域を大きくしてやればいいのでは。

AlignをalCilentにしているということは、PageControlが親Panelの全領域を覆っているのですよね。
それなら上下左右にもう2ピクセルずつ大きくしてやれば、見た目上完全に枠がなくなります。(親ウィンドウからはみ出た分はクリップされるので見えません)
AlignをalNoneにしておいて、親PanelのResizeイベントでサイズを調整してやるといいと思います。

> そのときPageControlが使いやすかったので使っていたのですが、やはりページ切り替えのクラスを独自に作った方がよいのですかね?
私もタブなしPageControlは便利なのでよく使います。同じ場所にPanelを何枚も重ねたりするより断然編集しやすいですから。
代替案としては、Frameを使う方法もありますね。これだと各ページの内容を独立したクラスとして編集できます。


take  2011-03-02 20:34:10  No: 40130

tor様へ
>AlignをalNoneにしておいて、親PanelのResizeイベントでサイズを調整してやるといいと思います。

この方法でやってみたところ、理想の表示になりました。親コントロールから少しはみ出すため、スクロールバーが表示されるなどがありますが、それらはオフにすることで対応出来ました。

座標が決めうちになってしまうのが少し心配です。

>代替案としては、Frameを使う方法もありますね。
それも平行して進めてみます。Frameの切り替えコントロールを作る必要がありそうですが、環境には左右されにくそうですね。

これで解決とさせて頂きます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加