私はフォームTEdit
と2 TBitBtn
を持っています。TEditコントロールの値を読み込んで変更するにはどうすればよいですか?
BitBtn1Click
にEdit1
とEdit2
で数値データを入力した後、Edit1
とEdit2
値が加算されますとEdit3
に表示されるように、私はまた、プログラムが必要です。あなたはこのような何かやりたい
私はフォームTEdit
と2 TBitBtn
を持っています。TEditコントロールの値を読み込んで変更するにはどうすればよいですか?
BitBtn1Click
にEdit1
とEdit2
で数値データを入力した後、Edit1
とEdit2
値が加算されますとEdit3
に表示されるように、私はまた、プログラムが必要です。あなたはこのような何かやりたい
:あなたは浮動小数点演算をしたい場合は
var
val1, val2, sum: Integer;
...
val1 := StrToInt(Edit1.Text);
val2 := StrToInt(Edit2.Text);
sum := val1 + val2;
Edit3.Text := IntToStr(sum);
がTEDITコントロールの値を読み、設定するには、この
var
val1, val2, sum: Double;
...
val1 := StrToFloat(Edit1.Text);
val2 := StrToFloat(Edit2.Text);
sum := val1 + val2;
Edit3.Text := FloatToStr(sum);
のようにそれを行うには、単に参照しますコントロールのText
プロパティ。 TextプロパティはString型です。
TextはStringプロパティなので、コード内でString変数として扱うことができます。あなたは、
var
// My string variable
myString: String;
begin
// Edit1 is the Name of the control
myString := Edit1.Text;
end;
TEDITコントロールの値を設定するには:あなたは、単純な代入をString変数に割り当てることができ
// Edit1 is the name of the TEdit control
// Display the value in the edit control to the user
ShowMessage(Edit1.Text);
:あなたは、文字列定数期待する関数に渡すことができますTextプロパティに文字列を代入するだけです。これは、文字列定数のようになります。
Edit1.Text := 'hello';
それとも、String型の変数から次のようになります。算術演算のために、あなたが機能を使用する必要がありますので、
Edit1.Text := myString;
数学は、数値型で行われます文字列の値を数値に変換します。整数演算用
、あなたはStrToInt()
やStrToIntDef()
を使用することができます。
var
myInteger: Integer;
begin
// Convert Edit1.Text string to a number and assign to numeric type for math
// If the value in Edit1.Text cannot be converted, an exception will be raised
myInteger := StrToInt(Edit1.Text);
end;
StrToIntDef()
を使用する:
var
myInteger: Integer;
begin
// If Edit1.Text cannot be converted, the default value of 0 will be used
myInteger := StrToIntDef(Edit1.Text, 0);
end;
浮動小数点演算のために、代わりにStrToFloat()
またはStrToFloatDef()
を使用しています。
あなたはそれを割り当てる前に、バックTextプロパティに整数を割り当てるには、整数を文字列に変換する必要があります:浮動小数点の場合
var
myInteger: Integer;
begin
myInteger := 12;
Edit1.Text := IntToStr(myInteger);
end;
、FloatToStr()
を使用しています。
var
// Floating point variables
value1: Real;
value2: Real;
sum: Real;
begin
// Get the values from the edit boxes, converting them to floating point types
value1 := StrToFloat(Edit1.Text);
value2 := StrToFloat(Edit2.Text);
// Sum them
sum := value1 + value2;
// Convert the sum to string and assign back to edit box
Edit3.Text := FloatToStr(sum);
end;
をまたは1つのステップで:
最後に、2つのエディットボックスの数値を取得し、第三編集ボックスに合計を表示するために、一緒にすべてを置くために、単純にこれを行う
Edit3.Text := FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));
try ... except文を入力して、非数値入力をチェックするのを忘れてしまった。 – Johan
@Johan、私は例外について警告しましたが、それは意図的でした。それを簡単に保つ。 –
私は、次のスニペットに気づい:ようEDIT1とEDIT2
で数値データを入力した後を
数値データのみを許可する場合は、編集ボックスで数値以外のデータを許可しないことをお勧めします。
これを行う方法は次のとおりです。
const
TabKey = #9;
Backspace = #8;
Enter = #13;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9','-',TabKey,Enter,Backspace]) then Key:= #0; //integers
//realnumbers: if not (Key in ['0'..'9','-','e','E','.',TabKey,Enter,Backspace]) then Key:= #0;
end;
だけ整数データを持っている場合、これはあなたが科学的な数字を持っている場合は、無理数を可能にするだけでなく、文字e
と小数点のためのいくつかのテストを行う必要があり、行います。
何をしても、入力が有効な番号であることを確認してユーザーに知らせることをお勧めします。
procedure TForm1.Edit1Change(Sender: TObject);
var
MyEdit: TEdit;
OtherEdit: TEdit;
TryNumber: double;
OtherNumber: double;
Success: boolean;
begin
Success:= true;
if (Sender is TEdit) then begin
MyEdit:= TEdit(Sender);
try
if MyEdit.Text = '' then TryNumber:= 0
else TryNumber:= StrToFloat(MyEdit.Text);
MyEdit.Color:= clWindow; //all is OK make edit standard white.
MyEdit.Hint:= '';
except
MyEdit.Color:= clRed; //Let the user know the output will not compute.
MyEdit.Hint:= MyEdit.Text + ' is not a valid number ';
Success:= false;
end;
end;
if (MyEdit = Edit1) then OtherEdit:= Edit2
else OtherEdit:= Edit1;
try
if OtherText.Text = '' then OtherNumber:= 0
else OtherNumber:= StrToFloat(OtherEdit.Text);
except
Success:= false;
end;
if Success then Edit3.Text:= FloatToStr(TryNumber + OtherNumber);
end;
あなたはEdit1
とEdit2
の両方に、このイベントを添付することができますので、あなたは二度のコードを記述する必要はありません。 (しかし、私はあなたがすでにそれを知っていたと確信しています)。
(どちらも同じイベントを共有します)。常に見、あなたのプログラムがエラーで破損しないようにエラーをキャッチするためにtry..except
を使用
重要なもの:http://www.delphibasics.co.uk/Article.asp?Name=Exceptions
maskedit
を使用するか、独自のフィルタをコード化することを検討してください(そうしなければ簡単です)。私は色のアプローチが好きです。私は、OnKeyDownを使って数字以外の文字を入力することをしばしば防ぎます。これは少し難しくなります。 –
@MarcusAdams、私は数値フィールドにも "アルファなし"を使用しますが、ユーザーが純粋な整数データのためのフィールドに '1254-121-1512'を入力することを妨げません。 – Johan
複雑になることがあります。私はTSpinEditもたくさん使います。 –
あなたの質問にあなたの名前を教える必要はありません。それは質問の真下にある。また、delphi-xe2タグに加えて、一般的なdelphiタグを追加しました。これは、より多くの潜在的な回答者の前であなたの質問を得るためです。最後に、質問にダウンロードリンクを入れないでください。私たちは物事をダウンロードしたくありません。コードを質問に入れてフォーマットします。 –