我有一个表单TForm1
,其中包含5个TEdit
和2个TBitBtn
。
我还需要一个程序,在BitBtn1Click
后,在Edit1
和Edit2
中输入数字数据后,将对Edit1
和Edit2
的值求和,并显示在Edit3
中。
我有一个表单TForm1
,其中包含5个TEdit
和2个TBitBtn
。
我还需要一个程序,在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);
var
val1, val2, sum: Double;
...
val1 := StrToFloat(Edit1.Text);
val2 := StrToFloat(Edit2.Text);
sum := val1 + val2;
Edit3.Text := FloatToStr(sum);
要读取和设置TEdit
控件的值,只需引用控件的Text
属性。Text属性的类型为String。
由于Text是一个String属性,您可以在代码中将其视为String变量。您可以将它传递到一个需要String常量的函数中:
// Edit1 is the name of the TEdit control
// Display the value in the edit control to the user
ShowMessage(Edit1.Text);
var
// My string variable
myString: String;
begin
// Edit1 is the Name of the control
myString := Edit1.Text;
end;
要设置TEdit控件的值,只需要将一个字符串赋值给Text属性即可。这可以是一个字符串常量:
Edit1.Text := 'hello';
或者它可以来自一个字符串变量:
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()
。
如果要将整数赋值回文本属性,则需要在分配之前将整数转换为字符串:
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;
或者一步到位:
Edit3.Text := FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));
如果您只想允许数字数据,最好禁止编辑框中的非数字数据。因此,在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=Exceptionsmaskedit
,或编写自己的筛选器(如果很容易做)。1254-121-1512
。 - Johan