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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX]数値入力ボックス(NumberBox)2013/10/16
 
前頁で[Additional]内の「ImageViewer」(イメージビューワー)について書きましたので次は、同じく[Additional]内の「NumberBox」(数値入力ボックス)について見ていきます。
 
Delphi2010・VCLアプリケーションでは、数値入力専用で行う特別なコンポーネントは無いと思われますが、通常の「Edit」(エディット)にて数値入力のみ行わせる、という事は出来ていました。また、スピンエディット(SpinEdit)というコンポーネントもありました。
 
 


(ヘルプより)
DecimalDigits
表示された数値の桁数。
HorzIncrement
ユーザーがマウスボタンを押しながら水平に動かした際に、インクリメントまたはデクリメントされる数値の値を表します。
HorzIncrement は、ユーザーがマウスボタンを押しながらマウスを左右に動かした際に、数値に追加または減少される値を表します。
VertIncrement
ユーザーがマウスボタンを押しながら垂直に動かした際に、インクリメントまたはデクリメントされる数値の値を表します。
VertIncrement は、ユーザーがマウス ボタンを押しながらマウスを上下に動かした際に、数値に追加まさは減少される値を表します。
Max
編集コントロールによって表示される数値が表すことのできる、最大値を保持します。
Max は、数値のみ操作できる編集コントロールが表示できる、最大値を設定します。
Min
編集コントロールによって表示される数値が表すことのできる、最小値を保持します。
Min は、数値のみ操作できる編集コントロールが表示できる、最小値を設定します。
Text
この編集コントロールで表示されるテキストが保有されています。
Textプロパティを使用すると、この編集コントロールのテキストを読み込んだり、表示する新しい文字列を指定することができます。
Value
編集コントロールに表示されるデフォルト数値を保持します。
ValueType
編集コントロールによって表示される数値の型。
vtInteger:整数
vtFloat :実数
 
(ヘルプより)
TNumberBoxクラスは、数値しか入力できないボックスが必要な場合に使用します。
 
この数値入力ボックスの内容は、ユーザーの入力によって決まります。
 
左にある[オブジェクト インスペクタ]で DecimalDigits の値を変更すると、TNumberBox オブジェクトに入力できる数の長さが変わります。
 
左にある[オブジェクト インスペクタ]で Max の項目の値を変更すると、TNumberBox オブジェクトに入力できる最大値が変わります。
 
左にある[オブジェクト インスペクタ]で Min の項目の値を変更すると、TNumberBox オブジェクトに入力できる最小値が変わります。
 
というわけで、まずは、下記のように配置を行います。
NumberBox1(上のほう)のValueTypeプロパティは「vtInteger」
NumberBox2(下のほう)のValueTypeプロパティは「vtFloat」としています。

NumberBox の 変更イベントハンドラを下記のように記述します。
procedure TForm1.NumberBox1Change(Sender: TObject);
begin
 Label2.Text := NumberBox1.Text ;
 Label3.Text := FloatToStr(NumberBox1.Value) ;
end;
 
procedure TForm1.NumberBox2Change(Sender: TObject);
begin
 Label2.Text := NumberBox2.Text ;
 Label3.Text := FloatToStr(NumberBox2.Value) ;
end;
Label2には Textプロパティの内容、Label3には Valueプロパティの内容を表示させます。なお、ValueTypeプロパティ内容に関わらず Valueプロパティは実数型ですので、IntToStr関数はエラーになります。
 
保存・コンパイル・実行してみます。

NumberBox1で数値入力を行なってみます


整数のほうでは、-、0〜9の半角文字のみ入力可能です
Textプロパティは入力中、そのままの内容が出ていますが
Valueプロパティはいきなり Min〜Max制約を受けています


フォーカスを移動すると、Textプロパティ内容も
Min〜Max制約を受けた内容にかわりました


実数のほうでは、-、.、0〜9の半角文字のみ入力可能です
Textプロパティは入力中、そのままの内容が出ていますが
Valueプロパティはいきなり Min〜Max制約を受けています


フォーカスを移動すると、Textプロパティ内容も
Min〜Max制約を受けた内容にかわりました
 
さて、DecimalDigitsプロパティは「表示された数値の桁数との事ですが、はて?なんの事だろう? MaxLengthのような文字列長さではありませんし、実数型の場合の、整数部分の長さでもありません。試してみたところ



というように、実数型での小数点以下桁数のことのようですね。Textプロパティのほうは四捨五入されて丸め処理されています。しかし、Valueプロパティのほうは丸め処理されていません。この辺りは、どちらを取るのか、注意したほうがいいでしょうね。Valueプロパティは Single型(単精度実数)ですので細かい精度に対応していませんから誤差がついています。より細かい精度の数値を扱う必要がある場合は、Textプロパティのほうから利用されるのが良いでしょうね。
 
あと、面白い機能としては、コンポーネント上でマウス左ボタンを押しながら左右上下へマウス移動すると、内容が+・−されて変わります。また、マウスホイール回転によっても数値が変わります。



Delphi2010・VCLアプリケーションでのスピンエディット(SpinEdit)と若干似ている感じがしますが、こちらの操作系のほうがやりやすいかもしれません。
 
 
それでは各スタイルでの画面状態を確認しておきます。
なし
Air.Style
Amakrits.Style
AquaGraphite.style
Blend.Style
Dark.Style
GoldenGraphite.Style
Light.Style
MetropolisUIBlack.Style
MetropolisUIBlue.Style
MetropolisUIDark.Style
MetropolisUIGreen.Style
RubyGraphite.style
Transparent.Style
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/10/15
 2013/10/16
▼2013/10/16
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.