作成 1998.12.16
更新 1999.11.11

コンポーネントアイコンSaNumEdit Version 1.40

はじめに

Delphi3/4/5、C++Builder3/4 対応の数値専用Editコンポーネントです。
TEdit コンポーネントの動作に似せて作成してあります。入力した数値は文字列で取り出します。

特徴としてはカンマ、上下左右の余白、縦横の配置、整数部と小数部の桁数、マイナス記号の許可等の指定が可能です。
 

【使用イメージ】
動作イメージ
 

このコンポーネントはフリーコンポーネントとして、ソース付きで配布しています。

ご意見、ご感想をお待ちしています。
HOMEPAGE:http://www.threeweb.ad.jp/~satou/
E-MAIL:satou@osk.3web.ne.jp


目次

凡例
記号 説明
TEditにない機能
TEditとほぼ同等の機能
× 実装していない機能

継承

TObject
 ↓
TPersistent
 ↓
TComponent
 ↓
TControl
 ↓
TWinControl
 ↓
TCustomControl
 ↓
TSaNumEdit


設計時プロパティ

プロパティ名 タイプ
()内はC++Builder
対応 説明 初期値
D3 CB3 D4 CB4 D5
Alignment TAlignment 横方向の配置の指定
  • 左寄せ − taLeftJustify
  • 右寄せ − taRightJustify
  • 中央 − taCenter
詳しくは「余白(マージン)と縦横の配置について」を参照
taRightJustify
ArrowFocusMove Boolean
(bool)
上下矢印キーでフォーカス移動を指定

Windows ユーザーインターフェイスデザインガイドから外れた操作となりますが、便利なので対応しています。ただし、デフォルトはFalse です。
  • 前のコントロールへフォーカス移動 − 上矢印キー
  • 次のコントロールへフォーカス移動 − 下矢印キー

上下矢印キーを別々に制御する場合、 Options プロパティの eoArrowUp、eoArrowDown を利用します。
False
Anchors TAnchors × × アンカー設定の指定
(TEditのヘルプ参照)
akTop, akLeftがTrue
AutoSelect Boolean
(bool)
フォーカスを得たとき、すべての文字列の自動選択を指定
(TEditのヘルプ参照)
True
AutoSize Boolean
(bool)
フォントに合わせてコントロールの高さを自動的に変更

設計時、Options.eoAutoWidthSize が True ならば幅も自動的にサイズを変更します。

(TEditのヘルプ参照)
True
BorderStyle TBorderStyle クライアント領域の周囲に単一線の境界の指定
  • 境界線なし − bsNone
  • 一重境界線 − bsSingle
(TEditのヘルプ参照)
bsSingle
BottomMargin Integer
(int)
下余白の指定

詳しくは「余白(マージン)と縦横の配置について」を参照
2
Color TColor コントロールの背景色指定
(TEditのヘルプ参照)
clWindow
Comma Boolean
(bool)
3桁ごとのカンマ区切り
  • カンマ区切りする − True
  • 区切らない − False
True
Constraints TSizeConstraints × × コントロールのサイズ制約を指定
(TEditのヘルプ参照)
全て0
Ctl3D Boolean
(bool)
コントロールが 3 次元または 2 次元の指定
(TEditのヘルプ参照)
True
Cursor TCursor コントロールの対象領域上にマウスがあるときにマウスカーソルの指定
(TEditのヘルプ参照)
crIBeam
DecimalFixed Boolean
(bool)
小数部固定表示の指定

小数部の入力が行われていなくても、常に小数桁を表示します。

詳しくは「DecimalFixed プロパティについて」を参照
False
DecimalLength Integer
(int)
小数桁数の指定

小数部の入力が必要なときに桁数を指定します。この値を0にすると小数点の入力は出来なくなります。
3
DisabledColor TColor 非応答時の文字色の指定

EnabledプロパティがFalseの場合の文字色を指定します。背景色を変更した場合などに使用します。
clGrayText
DragCursor TCursor ドラッグされているときに表示されるマウスポインタの指定
(TEditのヘルプ参照)
crDrag
DragKind TDragKind × × 通常どおりにドラッグされるか,ドッキングのためにドラッグされるかを指定
(TEditのヘルプ参照)
dkDrag
DragMode TDragMode コントロールのドラッグアンドドロップの方法を指定
(TEditのヘルプ参照)
dmManual
Enabled Boolean
(bool)
コントロールがイベントに応答するかを指定
(TEditのヘルプ参照)
True
EnterFocusMove Boolean
(bool)
Enterでフォーカス移動を指定

Windows ユーザーインターフェイスデザインガイドから外れた操作となりますが、便利なので対応しています。ただし、デフォルトはFalse です。
  • Enterキーでフォーカス移動 − True
  • Tabキーでフォーカス移動 − False
False
ErrorBeep Boolean
(bool)
エラー音有無

入力ミスなどでエラー音の有無を指定できます。
  • エラー音あり − True
  • エラー音なし − False
True
Font TFont フォントの指定
(TEditのヘルプ参照)
親(フォーム、コンテナ等)のFont設定と同じ
Height Integer
(int)
コントロール縦方向のピクセル数を指定
(TEditのヘルプ参照)
20
HelpContext THelpContext 状況感知型のヘルプの呼び出しに使うコンテキスト番号を指定
(TEditのヘルプ参照)
0
HideSelection Boolean
(bool)
フォーカスが移動後もテキスト選択状態で表示
(TEditのヘルプ参照)
True
Hint string
(AnsiString)
マウスがコントロール上を移動するときに表示するヒント文字列の指定
(TEditのヘルプ参照)
未指定
ImageCopy Boolean
(bool)
表示イメージをコピーする

CommaプロパティがTrueの場合、このプロパティをTrueにするとクリップボードへコピー/切り取りする場合、カンマの入った文字列を代入します。
  • 表示イメージをコピー − True
  • 入力文字列をコピー − False
False
ImeMode TImeMode IMEの動作を指定
(TEditのヘルプ参照)
imDontCare
ImeName TImeName IMEを指定
(TEditのヘルプ参照)
空文字
IntegerFixed Boolean
(bool)
整数部固定表示の指定

整数部の入力が行われていなくても、常に最大入力桁分の余白を表示します。

詳しくは「IntegerFixed プロパティについて」を参照
False
IntegerLength Integer
(int)
整数桁数

整数部の入力が必要なときに桁数を指定します。この値を0にすると整数部の入力は出来なくなります。
9
Left Integer
(int)
コンポーネント左端の位置をピクセルで指定
(TEditのヘルプ参照)
設計時に配置した座標
LeftMargin Integer
(int)
左余白の指定

詳しくは「余白(マージン)と縦横の配置について」を参照
2
LeftMark string
(AnsiString)
入力文字列の左側に表示する記号

表示専用です。詳しくは「LeftMark プロパティについて」を参照
空文字
Minus Boolean
(bool)
マイナス記号の許可を指定

マイナス記号が許可されている場合、「-」キーでマイナス記号の有無を切り替えることができます。既にマイナス記号が入力されているときに、このプロパティをFalseにすると、文字列をクリアしますので注意してください。
  • マイナス記号を許可 − True
  • マイナス記号を禁止 − False

マイナス記号のみを許可する場合、Options プロパティの eoMinusOnly を利用します。
True
Name TComponentName コントロールの名前
(TEditのヘルプ参照)
設計時に自動的に決まる
Options TSaNumEditOptions 各種動作設定
  • eoMinusOnly
    マイナス記号のみの許可。このフラグが False の場合、マイナス記号のみは無効とし文字列をクリアします。True の場合はマイナス記号のみでも有効な文字列とみなします。

  • eoArrowUp
    ArrowFocusMove プロパティが True の場合、このフラグが True ならば、矢印上キーでのフォーカス移動を許可します。

  • eoArrowDown
    ArrowFocusMove プロパティが True の場合、このフラグが True ならば、矢印下キーでのフォーカス移動を許可します。

  • eoAutoWidthSize
    AutoSize プロパティが True の場合、このプラグが True ならば、設計時にコンポーネントの幅を自動的に変更します。
    (幅は、IntegerLength、DecimalLength、Minus、Comma、IntegerFixed、DecomalFixed プロパティ等でサイズを決定します)

  • eoORInputStop  (OR= Out Range) New!
    描画範囲を越える入力の許可。False の場合、入力桁数が描画範囲を越えていても入力可能です。(Ver1.4より) True の場合、描画範囲を越える入力は出来ません。
eoMinusOnly は
 False

eoArrowUp は
 True

eoArrowDown は
 True

eoAutoWidthSize は
 False

eoORInputStop は
 False
PopupMenu TPopupMenu ポップアップメニューを指定

ここが未指定の場合、右クリックで編集メニューを表示します。この編集メニューはコンポーネント内で実装しているものなので、TEditの編集メニューと一部異なります。
(TEditのヘルプ参照)
未指定
ReadOnly Boolean
(bool)
文字列変更の可否の指定
(TEditのヘルプ参照)
False
RightMargin Integer
(int)
右余白の指定

詳しくは「余白(マージン)と縦横の配置について」を参照
2
RightMark string
(AnsiString)
入力文字列の右側に表示する記号

表示専用です。詳しくは「RightMark プロパティについて」を参照
空文字
ShowHint Boolean
(bool)
ヘルプヒントを表示を指定
(TEditのヘルプ参照)
False
TabOrder TTabOrder フォーカスを受ける順序の指定
(TEditのヘルプ参照)
設計時に決定
TabStop Boolean
(bool)
タブ操作でフォーカス移動の指定
(TEditのヘルプ参照)
True
Tag Longint
(int)
アプリケーション作成者が自由に使える整数値の指定
(TEditのヘルプ参照)
0
Text string
(AnsiString)
コントロールに関連付けられているテキスト文字列

このプロパティから編集したテキストを取り出す場合、カンマの無い文字列となります。カンマが必要な場合は、実行時プロパティのValTextを利用してください。
テキストを代入する場合、カンマが含まれていると自動的に削除します。
(TEditのヘルプ参照)
空文字
Top Integer
(int)
コンポーネント上端の位置をピクセルで指定
(TEditのヘルプ参照)
設計時に配置した座標
TopMargin Integer
(int)
上余白を指定

詳しくは「余白(マージン)と縦横の配置について」を参照
2
VertAlignment TVertAlignment 縦方向の配置を指定
  • 上寄せ − taTopJustify
  • 下寄せ − taBottomJustify
  • 中央 − taVCenter
詳しくは「余白(マージン)と縦横の配置について」を参照
taVCenter
Visible Boolean
(bool)
コンポーネントの画面表示を指定
(TEditのヘルプ参照)
True
Width Integer
(int)
コントロール横方向のピクセル数を指定
(TEditのヘルプ参照)
121

上記に存在しない設計時プロパティは、現在実装していません。


実行時プロパティ

プロパティ名 タイプ
()内はC++Builder
対応 Read
Only
説明 初期値
D3 CB3 D4 CB4 D5
CanUndo Boolean
(bool)
RO 編集取り消しが可能かを示します。
  • 編集取り消し可能 − True
  • 編集取り消し不可 − False
False
Modified Boolean
(bool)
RW ユーザが文字列を編集したかどうかを示します。

Textプロパティに直接代入した場合、このプロパティは変化しません。
必要に応じてユーザ自身が代入してください。
  • 編集されている − True
  • 編集されていない − False
False
SelLength Integer
(int)
RO 選択されている文字の数を示します。

このコンポーネントの特性上、全選択か選択していないのどちらかにしかなりません。
このプロパティ値が0ならば、選択されていない。0以外なら選択されていると判断しても問題ありません。
なお、選択文字数はFValTextプロパティの文字列数となります。
0
SelStart Integer
(int)
RO 文字列選択の先頭文字の位置を示します。

このコンポーネントの特性上、このプロパティ値は常に0(文字列の先頭位置)となります。
0
ValText string
(AnsiString)
RO 編集中の表示文字列を示します。

このプロパティはTextプロパティと違い、CommaプロパティがTrueの場合、カンマが含まれます。
表示イメージが必要な場合は、このプロパティの値を利用してください。
空文字

上記に存在しない実行時プロパティのうち、TCustomControlレベルで公開させているものは使用可能です。


メソッド

メソッド名 対応 説明
D3 CB3 D4 CB4 D5
Clear 編集中の文字列をすべて削除します。
  • Delphi
    procedure Clear;
  • C++Builder
    void __fastcall Clear(void);
ClearSelect 選択状態を解除します。
  • Delphi
    procedure ClearSelect;
  • C++Builder
    void __fastcall ClearSelect(void);
ClearSelection 選択文字列を削除します。
  • Delphi
    procedure ClearSelection;
  • C++Builder
    void __fastcall ClearSelection(void);
ClearUndo Undoバッファを消去します。
同時にCanUndoプロパティをFalseにします。
  • Delphi
    procedure ClearUndo;
  • C++Builder
    void __fastcall ClearUndo(void);
CopyToClipboard 選択文字列をクリップボードへCF_TEXTフォーマットでコピーします。
  • Delphi
    procedure CopyToClipboard;
  • C++Builder
    void __fastcall CopyToClipboard(void);
Create DelphiはTSaNumEdit のインスタンスを作成します。
C++Builderはコンストラクタが同等の処理です。
  • Delphi
    constructor Create(AOwner: TComponent);
  • C++Builder
    __fastcall virtual TSaNumEdit(Classes::TComponent* AOwner);
CutToClipboard 選択文字列をクリップボードへCF_TEXTフォーマットでコピーし、その後選択文字列を削除します。
  • Delphi
    procedure CutToClipboard;
  • C++Builder
    void __fastcall CutToClipboard(void);
PasteFromClipboard クリップボードの内容がCF_TEXTの場合、選択内容と置き換えます。
選択していない場合は、文字列の後ろに追加します。
  • Delphi
    procedure PasteFromClipboard;
  • C++Builder
    void __fastcall PasteFromClipboard(void);
SelectAll 全ての文字列を選択状態にします。
  • Delphi
    procedure SelectAll;
  • C++Builder
    void __fastcall SelectAll(void);
Undo CanUndoプロパティがTrueの場合、編集中の文字列をUndoバッファの内容に戻します。
  • Delphi
    procedure Undo;
  • C++Builder
    void __fastcall Undo(void);

上記に存在しないメソッドのうち、TCustomControlレベルで公開させているものは使用可能です。


イベント

イベント名 対応 説明
D3 CB3 D4 CB4 D5
OnChange 編集中の文字列が変更された場合にイベントを発生。
(TEditのヘルプ参照)
OnClick コントロールをクリックしたときにイベントを発生。
(TEditのヘルプ参照)
OnDblClick コントロールをダブルクリックしたときにイベントを発生。
(TEditのヘルプ参照)
OnDragDrop ユーザーがドラッグしているオブジェクトをドロップしたときにイベントを発生。
(TEditのヘルプ参照)
OnDragOver ユーザーがコントロール上でオブジェクトをドラッグしたときにイベントを発生。
(TEditのヘルプ参照)
OnEndDock × × コントロールがドッキングされた直後にイベントを発生。
(TEditのヘルプ参照)
OnEndDrag オブジェクトのドロップかドラッグの取り消しによってオブジェクトのドラッグが終了したときにイベントを発生。
(TEditのヘルプ参照)
OnEnter コントロールが入力フォーカスを受け取ったときにイベントを発生。
(TEditのヘルプ参照)
OnExit 入力フォーカスがコントロールから別のコントロールへ移ったときにイベントを発生。
(TEditのヘルプ参照)
OnKeyDown ユーザーが任意のキーを押すとイベントを発生。
(TEditのヘルプ参照)
OnKeyPress ユーザーが単一の文字キーを押したときにイベントを発生。
(TEditのヘルプ参照)
OnKeyUp ユーザーが押したキーから指を離したときにイベントを発生。
(TEditのヘルプ参照)
OnMouseDown マウスボタンを押したときにイベントを発生。
(TEditのヘルプ参照)
OnMouseMove コントロール上でマウスポインタを移動したときにイベントを発生。
(TEditのヘルプ参照)
OnMouseUp マウスボタンから指を離したときにイベントを発生。
(TEditのヘルプ参照)
OnStratDock × × コントロールがドッキングされる直前にイベントを発生。
(TEditのヘルプ参照)
OnStartDrag ドラッグを開始したときにイベントを発生。
(TEditのヘルプ参照)

上記に存在しないイベントは、現在実装していません。


注意


変更履歴

1999.11.11 Version 1.40 リリース
  • コンパイラバージョンチェックにDelphi5を追加
  • MDI ファームで親フォームにフォーカスがある場合、子フォームにある TSaNumEditをクリックしてもフォーカス移動しない。 nifty:FDELPHI/MES/10/6449 を元に不具合修正。
  • DecimalFixedがTrueで、DecimalLength>0の場合、小数点を入力した場合 キャレットを移動するようにした。不具合修正
  • 描画領域により文字列入力を制限していたが、それを解除。 指定桁数まで入力可能とした。
    ただし、Options のeoORInputStop を Trueにすれば前バージョンと同様に、描画範囲内の入力制限となります。
  • サンプルプログラムをゼロから作り直しました。
1999.04.06 Version 1.30 リリース
  • コンパイラバージョンチェックにC++Builder4を追加。
  • サンプルコードを削除(派生コンポーネントに移動しました)
  • Optionsプロパティの追加。仕様追加
  • IntegerFixedプロパティを追加。仕様追加
  • 内部ロジックを大幅変更(IntegerFixedプロパティのため)
1999.03.04 Version 1.21リリース(非公開)
  • TUpDown コンポーネントと連動可能にした。不具合修正
1999.02.10 Version 1.20 リリース
  • EnterFocusMove=Falseの場合、Enter キーを押してもデフォルトボタンが有効にならない。不具合修正
  • 入力文字列がない場合、LeftMarkを表示しない。仕様追加
  • 矢印キー上下でフォーカス移動するためのプロパティArrowFocusMoveを実装。仕様追加
  • BSキー、DEL キーで1文字削除時に小数点を1文字とカウントしない。仕様追加
  • 小数部を常に固定桁で表示するプロパティDecimalFixedを実装。仕様追加
  • 右側に記号を置くためのプロパティRightMarkを実装。仕様追加
1999.01.12 Version 1.10 リリース
  • ReadOnly時にTextプロパティに代入できない。不具合修正
  • '0'を続けて入力すると'000,000,000'となる。不具合修正
  • '-'のみを入力してフォーカス移動した場合、'-'を破棄する。仕様追加
  • 最初に'.'を入力すると'0.'と表示する。仕様追加
  • 通貨記号等を先頭に置くためのプロパティLeftMarkを実装。仕様追加
1998.12.16 Version 1.00完成 FDELPHIとDelphian Worldに登録
1998.11.26 作成開始