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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE4 [FMX]エクスパンダー(Expander) 2015/04/14
 
前回は[Standard]内の「小スクロールバー(SmallScrollBar)」について記述しましたので、今回は、同じく[Standard]内の「エクスパンダー(Expander)」について記述します。Delphi 2010、VCLアプリケーションに、これそのもの、というのはありません。
   【DelphiXE3[FMXアプリケーション]の記事はこちら】
 

 
XE4(FMX)

FMX.StdCtrls.TExpander
XE3(FMX)

FMX.Controls.TExpander
 
ユニットが変わっており、オブジェクトインスペクタでは、TabOrder プロパティが追加されています。
 
(ヘルプより)
IsExpanded
展開コントロールのコントロールが展開されているかどうかを示します。
IsExpandedプロパティをTrueに設定すると、展開コントロールのコンテンツを展開し、含まれているすべての項目を表示させることができます。展開コントロールを折りたたむには、IsExpandedをFalseにします。
IsExpandedプロパティのデフォルト値は、Trueです。
次のコードスニペットのように、展開コントロールはプログラムで展開および折りたたむことができます:
var
 Expander1:TExpander1;
 
begin
 {expandtheexpandercontrol}
 Expander1.IsExpanded:=True;
 
 {collapsetheexpandercontrol}
 Expander1.IsExpanded:=False;
end;
ShowCheck
展開コントロールが右上端にチェックボックスを表示するかどうかを示します。
ShowCheckプロパティをTrueに設定すると、展開コントロールオブジェクトの右上端に、チェックボックスが表示されます。ShowCheckをFalseに設定すると、チェックボックスが非表示になります。
IsChecked
展開コントロールのチェックボックスが選択されているかどうかを示します。
IsCheckedプロパティをTrueに設定すると、展開コントロールのチェックボックスを選択状態にすることができます。展開コントロールのチェックボックスをクリア状態にするには、IsCheckedをFalseにします。
IsCheckedプロパティのデフォルト値は、Trueです。
OnCheckChange
この展開コントロールのチェックボックスが状態を変更するたびに発生します。
OnCheckChangeイベントを記述すると、この展開コントロールにアタッチされているチェックボックスが、その状態をTrueからFalse、もしくはその逆に変更するたびに、何を発生させるかを指定することができます。
 
TabOrder
フォーカスが当たっているコントロールです。
最初のタブ順は、コントロールがフォームに追加された順になります。最初にフォームに追加されたコントロールは、TabOrder値が0に、次が1、3番目が2に...となります。この動作は、TabOrderプロパティを変更することによって変えることができます。
各コントロールは、その親の内部で、一意のタブ順が付けられています。
親コントロール内に収められているコントロール数より大きな値をTabOrderプロパティに指定した場合、そのコントロールはタブ順の末尾に移動されます。この場合、コントロールはTabOrderプロパティに割り当てられた値ではなく、コントロールがタブ順の末尾になったと想定した数が指定されます。
とありますが、このエクスパンダーはフォーカスを持ちませんし、TabOrderプロパティ値を指定しても、[Tab]順序は変化しません。新しく追加されたプロパティですが、グループボックス等と同様、全くの無意味です。
 
表示領域を拡大/縮小する可能性のある複数のグラフィカルコントロールを保持するためのグラフィカルコントロールを表します。
 
TExpanderコンポーネントを使用するのは、内容の表示/非表示のために拡大/縮小できる領域にグラフィカルコンポーネントを配置する手段をユーザーに提供する必要がある場合です。
 
というわけで、下図のように配置してみます。

保存・コンパイル・実行してみます。



 



というわけで、普通に配置する分には、折り畳むと余白が出来るだけですから、下に別のコンポーネントを配置しないと余り意味はないですね。そうなるとデザイン時の作業がややこしくなるので、普通こういう事はしない、という事でしょうか。
 
となれば当然のごとく、Alignプロパティに alNone以外の値を指定する、というのが前提となっていくのでしょう。下図は Alignプロパティに alTop を指定した場合です。Panel1のAlignプロパティは alClient にしています。

保存・コンパイル・実行してみます。







 
それでは少しだけイベントの確認を。
エクスパンダーの ShowCheckプロパティを True にしておきます。
procedure TForm1.Expander1CheckChange(Sender: TObject);
begin
 ShowMessage('展開1チェック操作');
end;
 
procedure TForm1.Expander1Click(Sender: TObject);
begin
 ShowMessage('展開1クリック');
end;
 
保存・コンパイル・実行をしてみます。

↓クリック

中に配置したコントロール以外の部分、どこをクリックしても反応します。
展開・折り畳みをしたときのイベント、というのは無い様子?
リサイズイベントは反応しますが画面サイズを変えた時にも
反応しますのでリサイズイベントは少し使いにくいです。

↓チェックをオフに

チェックがオフになった後にイベントハンドラが実行
チェックオフにすると内部が操作不可状態に
 
 
以下、スタイルブックを指定した画面状態です。
「Air.Style」を使用した場合、クリックイベントが動かない様子です。
 

指定無し

Air.Style

Amakrits.Style

AquaGraphite.style

Blend.Style

Dark.style

GoldenGraphite.Style

Light.Style

RubyGraphite.style

Transparent.Style
 
MacOSX でも動作することが確認出来ます。

指定無し

Air.Style
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
>DelphiXE4
△TOP
▲2015/04/13
 2015/04/14
▼2015/04/15
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.