DelphiXE4 [FMX]トラックバー(TrackBar)
2015/04/15
前回は[Standard]内の「エクスパンダー(Expander)」について記述しましたので、今回は、同じく[Standard]内の「トラックバー(TrackBar)」について記述します。
【Delphi2010の記事はこちら】
【DelphiXE3[VCLアプリケーション]の記事はこちら】
【DelphiXE3[FMXアプリケーション]の記事はこちら】
XE4(FMX)
FMX.StdCtrls.TTrackBar
XE3(FMX)
FMX.Controls.TTrackBar
ユニットが変わっており、オブジェクトインスペクタでは、OnTrackingイベントが追加されています。
(ヘルプより)
Max
スライダーの最大位置に相当するこのトラックバーの最大値を示します。
Maxプロパティを使用すると、このトラックバーのスライダーが移動できる最大の値を設定することができます。たとえば、Maxが100(デフォルト値)に設定されている場合、スライダーを最大まで移動させると、Valueは100となります。
Min
スライダーの最小位置に相当するこのトラックバーの最小値を示します。
Minプロパティを使用すると、このスクロールバーのスライダーが移動できる最小の値を設定することができます。たとえば、Minが0(デフォルト値)に設定されている場合、スライダーを最小まで移動させると、Valueは0となります。
Tracking
サムトラッキングが有効化どうかを示します。
Value
このトラックバーの現在値を示します。
Valueを設定または取得することにより、このトラックバーの現在値を指定または取得することができます。実行時に、ValueをプログラムまたはUIで設定することができます。この値は、MinおよびMaxで区切られる範囲以内の値となります。
Frequency
スライダーの位置が、各動作毎に進む量を示します。
Frequencyプロパティを使用すると、スライダーが各動作毎に進むステップ数を示します。たとえば、Frequencyを10、Minを0、Maxを100に設定すると、このスライダーは、0から100の範囲で、10ステップしかありません。Valueは10分割の中で増減します。
Frequencyは浮動小数点のSingle値で、Frequencyを0に設定することにより、このトラックバーを、ステップ単位で0.01区切りずつ増減させることができます。Frequencyを、任意の整数値(たとえば、1や5など)に設定すると、このトラックバーを、その指定した値で増減させることができます。
ただし、Frequencyを0より大きい任意の値に設定し、その後プログラムで値をValueに設定した場合、値は、Frequencyのもっとも近い倍数に変換される点に注意してください。
たとえば、Frequencyを5に設定し、その後プログラムでValueを12にすると、実際にValueに設定される値は10になります。
OnTracking
IsTrackingがTrueの際に、このトラックバー上のスライダーの位置が変更された後すぐに発生します。
サムトラッキングが有効である間に、OnTrackingイベントハンドラを記述すると、このトラックバーコンポーネントのスライダーの位置が変更された際、追加機能を提供することができます。
IsTrackingとありますが、IsTrackingプロパティというのはありませんので、Trackingプロパティのことでしょうか?
OnChangeイベントハンドラは、TrackingプロパティがTrueの場合はドラッグ中の変化にも反応しますが、Falseの場合は反応しません。
しかしこのOnTrackingイベントハンドラは、TrackingプロパティがTrueであろうとFalseであろうと、ドラッグ中の変化に反応します。
ですのでこのヘルプ記述とは異なる動作となっている様子です。
トラック操作が必要なアプリケーションで使用する汎用のトラックバーを表します。
TTrackBarは、さまざまな種類のトラック操作に使用できるFireMonkeyのスタイル付きトラックバーを表します。たとえば色や音量や明るさといったプロパティの調整に使用すると便利です。スライダをドラッグして特定の位置に移動するか、バー上の位置をクリックすると、Valueが変化します。このトラックバーのビューポートを調整するには、ViewportSizeプロパティの値を変更します。
MaxプロパティおよびMinプロパティを使って、トラックバーの上下の範囲を設定します。Orientationプロパティにより、トラックバーを縦に表示するか横に表示するかが決まります。
というわけで、下図のように配置してみます。
procedure TForm1.FormShow(Sender: TObject);
begin
TrackBar1.Max := Panel1.Width ;
TrackBar2.Max := Panel1.Height ;
TrackBar1.Value := Label1.Position.X ;
TrackBar2.Value := Label1.Position.Y ;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Label1.Position.X := TrackBar1.Value ;
end;
procedure TForm1.TrackBar2Change(Sender: TObject);
begin
Label1.Position.Y := TrackBar2.Value ;
end;
保存・コンパイル・実行してみます。
Frequencyプロパティに「10」を指定していると、10ピクセル毎にカクカクと動くようになります。
トラックバーはフォーカスを持つことが出来ます。フォーカスを持っている際に矢印キーを押すと、トラックバーを動かすことが出来ます。自動でマウスホイール対応は行われませんが、
procedure TForm1.TrackBar1MouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
begin
TrackBar1.Value := TrackBar1.Value + 10*Sign(WheelDelta) ;
end;
等のようにすれば、マウスをトラックバーの上に移動している状態でマウスホイール操作を行えばトラックバーを動かす事が出来るようになります。なお、OnTrackingイベントハンドラを利用している場合も、トラックバーを動かせラベル位置も変更させる事が出来ます。
以下、スタイルブックを指定した画面状態です。
TrackBar1にフォーカスをセットしている状態です。
指定無し
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/14
2015/04/15
▼2015/04/16
シェアウェア
Script!World
データベース
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.