|
DelphiXE4 [FMX]スクロールバー(ScrollBar) 2015/04/12 |
前回は[Standard]内の「プログレスバー(ProgressBar)」について記述しましたので、今回は、同じく[Standard]内の「スクロールバー(ScrollBar)」について記述します。
【Delphi2010の記事はこちら】
【DelphiXE3[VCLアプリケーション]の記事はこちら】
【DelphiXE3[FMXアプリケーション]の記事はこちら】
XE4(FMX)
FMX.StdCtrls.TScrollBar |
XE3(FMX)
FMX.Controls.TScrollBar |
| |
| |
ユニットが変わっていますが、オブジェクトインスペクタでは、プロパティ・イベント共に変わっていない様子です。
(ヘルプより)
Max
スライダーの最大位置に相当するこのスクロールバーの最大値を示します。
Maxプロパティを使用すると、このスクロールバーのスライダーが移動できる最大の値を設定することができます。たとえば、Maxが100(デフォルト値)に設定されている場合、スライダーを最大まで移動させると、Valueは100となります。 |
Min
スライダーの最小位置に相当するこのスクロールバーの最小値を示します。
Minプロパティを使用すると、このスクロールバーのスライダーが移動できる最小の値を設定することができます。たとえば、Minが0(デフォルト値)に設定されている場合、スライダーを最小まで移動させると、Valueは0となります。 |
Orientation
このスクロールバーの方向を示します(左から右、または、下から上)。
Orientationプロパティを使用すると、このスクロールバーがどのように表示されるか(左から右へか、下から上か)を指定できます。Orientationは、次の値のいずれかを取ります:
orVertical
スクロールバーは、下から上の方向へレンダリングされます。
orHorizontal
スクロールバーは、左から右の方向へレンダリングされます。 |
Value
このスクロールバーの現在値を示します。
Valueを設定または取得することにより、このスクロールバーの現在値を指定または取得することができます。実行時に、ValueをプログラムまたはUIで設定することができます。この値は、MinおよびMaxで区切られる範囲以内の値となります。 |
SmallChange
このスクロールバーのスライダーが、minまたはmaxボタンを押すたびに移動することができる位置の数を制御します。
SmallChangeプロパティを使用すると、このスクロールバーのスライダーが、maxまたはminボタンを押すのに応じて前後に動く位置の数を制御することができます。
たとえば、SmallChangeを10に設定すると、maxまたはminボタンを押すたびに、スライダーはちょうど10個分、位置を前後に移動します。
| ヒント:スライダーの現在の位置(Valueを反映している)が、SmallChangeよりも少ない数だった場合、minボタンを押すとValueは0になります。 |
|
ViewportSize
このスクロールバーのスライダーのサイズを、ピクセルで示します。
ViewportSizeプロパティを使用すると、スクロールバーのビューポート、つまり、スクロールのスライダーの領域のサイズを、ピクセルで指定することができます。
| ヒント:ViewportSizeプロパティを変更しても、スクロールバーのValueの制限(MinまたはMax)には影響しません。 |
|
ウィンドウ、フォーム、コントロールの内容をスクロールするのに使用される標準的なスクロールバーを表します。
TScrollBarは、独立のスクロールバーをフォームに追加するものです。多くのコントロールには、コントロールの不可欠な部分となるスクロールバーを追加するプロパティがあります。ただし、TScrollBarを使用すると、スクロールバーが組み込まれていないコントロールや、コントロールグループを、ユーザーによるTScrollBarオブジェクトの操作時にスクロールさせることができます。 |
|
というわけで、画面上に表示させる別のコンポーネント等を移動表示したい、というような場合を想定している感じですが、数値入力をスライダーで行いたい場合とか、プログレスバーのような状況表示に使いたい場合とか、利用方法は色々とあるかもしれません。
たとえば、下図のように配置し、下記のようなプログラムコードを書きます。
procedure TForm1.FormShow(Sender: TObject);
begin
ScrollBar1.Max := Panel1.Width ;
ScrollBar2.Max := Panel1.Height ;
ScrollBar1.Value := Label1.Position.X ;
ScrollBar2.Value := Label1.Position.Y ;
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
Label1.Position.X := ScrollBar1.Value ;
end;
procedure TForm1.ScrollBar2Change(Sender: TObject);
begin
Label1.Position.Y := ScrollBar2.Value ;
end; |
保存・コンパイル・実行を行います。
スクロールバーを操作すると、ラベル(Label1)の位置が変わります。
動かせばすぐに分かりますが、スクロールバーの位置とラベルの位置が若干ずれていますが、これは、スクロールバーの端にあるMinボタン・Maxボタンの大きさを考慮していないからです。
なお、スクロールバーは、フォーカスを持てない様子です。
マウスホイール動作も自動では行われませんので、OnMouseWheel イベントハンドラを自分で記述する必要があります。例えば、
procedure TForm1.ScrollBar1MouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
begin
ScrollBar1.Value := ScrollBar1.Value + 10*Sign(WheelDelta);
end; |
等のような感じにすると、マウスをスクロールバー上に移動してマウスホイール動作を行えば、上記のイベントハンドラでスクロールバーが変化し、スクロールバーのOnChangeイベントハンドラが実行されるようになります。
以下、スタイルブックを指定した画面状態です。
指定無し |
Air.Style |
Amakrits.Style |
AquaGraphite.style |
Blend.Style |
Dark.style |
GoldenGraphite.Style |
Light.Style |
RubyGraphite.style |
Transparent.Style |
MacOSX でも動作することが確認出来ます。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
>DelphiXE4
△TOP
▲2015/04/11
2015/04/12
▼2015/04/13
シェアウェア
Script!World
データベース
|