AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 ページコントロール(PageControl) 2010/10/02
 
前回は[Win32]内の「TabControl」(タブコントロール)について見ましたので、今回は同じく[Win32]内の「PageControl」(ページコントロール)について見てみます。ページコントロールは Delphi6 にもあります。

 
取り合えず配置してみます。1つ目ですので Nameプロパティは「PageControl1」となります。ダブルクリックで配置するとタブコントロールと同じくページコントロールも少し大きめに配置されますので位置・大きさを具合のよいように調整します。

 
ページコントロールは、タブコントロールと同様、設定画面等で利用されるような、複数ページの表現手法を提供してくれます。タブコントロールとは異なり、コンテナ上に配置する各コンポーネントはページ毎に異なるものを指定する事が出来、タブコントロールのように切替時にプログラムコードで割り振りを行う必要はなく、ページ毎に別々のコンポーネントの配置となりますので、それぞれの内容を参照すれば良いのでプログラムコードはそれほど煩雑にならなくて済みます。しかしその分、配置コントロール数が多くなるのでリソースメモリを消費してしまう事となります。
 
勿論、ページ(タブ)切替時に、何らかの処理をプログラムコードで記述することは可能です。ページ切替時には、タブコントロール同様のイベントが発生します。、ページを切り替える直前に発生する OnChangingイベントと、ページを切り替えた直後に発生する OnChangeイベントの双方があります。OnChangingイベントハンドラには、切り替える直前に行う処理を記述します。OnChangeイベントハンドラには、切り替えた直後に行う処理を記述します。
 
 
ページ(タブ)を作るには、<フォームデザイナ>にて、配置したページコントロール PageControl1 の上でマウス右クリックメニュー「ページ新規作成」を行います。するとページコントロールの子としてタブシート(TabSheet)コントロールが作成されます。1つ目のNameプロパティは「TabSheet1」となります。この上に各コンポーネントを配置していく事になります。



このタブシート内をマウスクリックすると、タブシートの選択になります。タブ辺りをクリックすると、ページコントロールの選択になります。特に<オブジェクトインスペクタ>でプロパティを指定する場合には、ページコントロールのプロパティ/イベントの指定と、タブシートのプロパティ/イベントの指定は、別物になりますので注意して下さい。
 
あと2つページを追加してみます。ページコントロールを選択した状態で上記同様に「ページ新規作成」を行います。

 
タブ文字の指定は、タブコントロールであれば Tabsプロパティを指定していましたが、ページコントロールの場合は、各タブシートの Captionプロパティを指定します。ページコントロールでのタブシート切替=現在のタブシートの取得・選択は、タブコントロールと同じく TabIndexプロパティもあるようですが、ActivePageプロパティ、プログラム実行時であれば ActivePageIndexプロパティの利用も可能です(このプロパティは<オブジェクトインスペクタ>では表示されていません)ActivePageプロパティは、TTabSheet型、つまり、TabSheet1、TabSheet2、・・・という値(オブジェクト)になります。
 
まずは、タブシート TabSheet1 のタブ文字を指定します。ページコントロールのActivePageプロパティを「TabSheet1」にするか、或いは、 TabIndexプロパティを「0」にします。<フォームデザイナ>のページコントロールのタブをマウスで指定する事も可能です。

タブシート「TabSheet1」を選択します。

例として Captionプロパティを「設定(&1) ABCDE」としてみます。

同様に、TabSheet2、TabSheet3のタブ文字も変更してみます。

 
各タブシートを選択し、それぞれにテキトウにコンポーネントを配置してみます。

 

 

この状態で、保存・コンパイル(再構築)・実行を行うと、そのような切替可能な設定画面というのが実現できるのがすぐに分かります。
 
タブコントロールのように、タブ切替毎に、内容を変数や配列変数等に保存・読み出しを行う必要はなく、例えば、[適用]ボタンを用意して、それをクリックしたら変数に保存するようにしたり、[OK]ボタンをクリックしたら変数に保存をして画面を閉じたり、[キャンセル]ボタンをクリックしたら変数に保存せず画面を閉じたりします。
 
 
それでは、<オブジェクトインスペクタ>を見ていきます。
その前に、実行時プロパティで <オブジェクトインスペクタ>には表示されていませんが、Pagesプロパティは、ページコントロール内にある全タブシート一覧(読み取り専用)を取得する事が出来、PageCountプロパティは、全ページ数を取得する事が出来ます。
 
 
Alignプロパティはお約束、タブコントロールを上下左右の端にぴったり合わせるか、(残りの)画面一杯に合わせるか、合わせない(デフォルト)かを指定します。
HotTrackプロパティは、ヘルプによると
マウスを置くとタブのラベルが自動的に強調表示されるかどうかを決めます。
HotTrack プロパティを true に設定すると,マウスボタンをクリックした場合にどのタブが選択されるかをユーザーにビジュアルに示せます。HotTrack はタブコントロールに複数のタブ行がある場合に便利です。
とありますが、Windows7のAero環境だからなのか、どうも反映されていない様子で True と False(デフォルト)の違いが全く分かりません。ですが必要であれば True にしておくのも良いでしょう。
ImageListプロパティはこれもお約束、イメージリストを用意しておき、アイコン/画像を登録しておくと、タブ文字の箇所にそのアイコン/画像を表示する事が出来ます。例として前回作成したアイコンを表示させてみます。アイコンは順番に表示されていく様子です。

 
MultiLineプロパティをTrueにすると(デフォルトは False)、タブ文字が画面に納まりきらない場合、複数行表示するようになります。タブコントロールとは異なり、タブが大きさを占有した分、タブシートが小さくなってしまい、タブシート内のコントロールをキチキチに配置していた場合、下記のように画面からはみ出す事になって見えなくなってしまいますから注意が必要です。

タブ文字内容をプログラム実行時に変更するような場合は、レイアウトが崩れてしまうと問題なのでそういう事はしないほうがいいかもしれません。
 
RaggedRightプロパティは、MultiLineプロパティをTrueにして複数行状態の場合に有効で、以下のようになるようです。
FalseTrue
 
ScrollOppositeプロパティも、MultiLineプロパティをTrueにして複数行状態の場合に有効で、True にすると以下のように、選択行以外が反対側に行くようです。
 
Styleプロパティはタブの外観を決めます。
tsButtons
tsFlatButtons
tsTabs
(デフォルト)
 
TabPosition プロパティは、タブの位置をどこにするのかを決めます。
tpBottomtpLefttpRighttpTop
上(デフォルト)
tpLeft・tpRightを利用する場合は、Styleプロパティは「tsTabs」、MultiLineプロパティは「True」となります。プログラムコードで切り替える場合には注意が必要です。
 
 
そのほか、<オブジェクトインスペクタ>をざっと見る限り、他のコンポーネントと共通のものばかりのようです。タブシートのプロパティもさほど変わりもないようですので、このあたりにしておきます。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/10/01
 2010/10/02
▼2010/10/03
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.