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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
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 でも動作することが確認出来ます。

指定無し

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