Last Update 2004/01/02

金太郎飴プロジェクト

作成例:数値文字列編集テスト

 ここではCsCom6b.pasのCs_AEditNum関数を利用した、数値文字列の編集を行います。

参考までにCs_AEditNum関数のコメントを見ると以下のように定義してあります。
※ ソースファイルへアクセスするには金太郎プロジェクトページからダウンロードして下さい。

//--------- 2002/04/01 16:54 ---------------------------------------//
//  関数名:Cs_AEditNum
//         数値データを表示や印字データとして編集する
//
//  使用例:
//    Cs_AEditNum( '1234', '99999' ) → 01234
//    Cs_AEditNum( '1234', '99,999' ) → 01,234
//    Cs_AEditNum( '1234', '99,999.ZZ' ) → 01,234
//    Cs_AEditNum( '1234.1', '99,999.ZZ' ) → 01,234.1
//    Cs_AEditNum( '0', 'ZZZ' ) → '   '
//------------------------------------------------------------------//
//  補足:
//    小数部の桁あふれ処理は無し
//------------------------------------------------------------------//
//  引数説明
//  ArgSData......編集元文字列型数値データ
//  ArgEditMode...編集パターン
//------------------------------------------------------------------//
//  戻り値
//  編集された文字列
//------------------------------------------------------------------//
//  履歴:
//    1998/10/06 : 小数以下の編集を修正
//    1998/11/14 : 編集文字が''の場合'ZZZZZZZZZ9'をデェフォルトにする
//    1999/01/19 : 編集文字が'Z9.9'で元データ'.9'
//                (整数の最後の0が省略)された場合でも正しく処理できねようにした
//    1999/06/15 : 編集元サイズ0の確認を追加
//    2000/01/20 : ZZZZ編集でのバグ修正(0→ZZZ0)と表示していた、
//         --9編集でのバグ修正(-123→123)と表示していた、
//    2001/02/05 : ----9編集でのバグ修正(---9→ --9)と表示していた、
//    2001/02/20 : Z,-,+編集の混在を許す
//    2001/05/08 : 編集文字が''の場合'---------9'をデェフォルトにする
//    2002/04/01 : コメント修正
//------------------------------------------------------------------//

図1 Cs_AEditNum関数のコメント

作成手順

1.ソースとオブジェクトが入った書庫をダウンロードして「X:\Source\DELPHI\Samples」フォルダに格納して下さい。

サンプル書庫


2.プロジェクトをコンパイルして実行します。
  下記の画面が表示されたら、数値と編集文字列を入れて色々と試してみて下さい。

図2 CsNumEditP.exe実行画面

解説

「変換実行」ボタンがクリックされると以下のソースが実行されます。 

Label4.Caption := Cs_AEditNum( Edit1.Text, Edit2.Text );

左辺の「Label4.Caption」は表示領域のラベル名(Label4)とラベルの表示領域プロパティである(Caption)を指定しています。 「:=」は代入記号です。Cs_AEditNum( Edit1.Text, Edit2.Text ); が共通関数で、第一引数は編集元の数値文字列なのでEdit1.Text、第二引数は編集文字列なのでEdit2.Textを指定しています。

参考ソース

unit CsNumEdit;
//--------- 2004/01/04 16:46 ---------------------------------------//
// Project Name:金太郎飴プロジェクト
// ProgramID   :EditTest
// Copyright   :CS
// Release     :
// 処理説明    :数値文字列編集テスト
// 変数        :
// 特記事項    :
// 変更履歴    :
//     2004/01/04 V1.0A : 新規(中村)
//------------------------------------------------------------------//

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses
  CS_COM6B;  // ←ここで共通関数を定義している。

{$R *.dfm}

//------------------------------------------------------------------//
//  フォーム作成
//------------------------------------------------------------------//
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := '';
  Edit2.Text := '';
  Label4.Caption := '';
end;

//------------------------------------------------------------------//
//  終了ボタンクリック処理
//------------------------------------------------------------------//
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  Close;
end;

//------------------------------------------------------------------//
//  編集ボタンクリック処理
//------------------------------------------------------------------//
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  Label4.Caption := Cs_AEditNum( Edit1.Text, Edit2.Text );  // ←編集関数呼び出し
end;

end.