我需要制作一个程序,输入并显示产品的信息(品牌名称,内容,质量以及库存量)。
问题:即使编写代码以按顺序显示代码,此代码中的输入框也不会按顺序完全显示。输入框按以下顺序排列:"内容"," Mass"," Stock","品牌名称"它应该实际上是"品牌名称","内容"," Mass"," Stock&#34 ;.(这些是输入的标题框)。
- 我认为这可能是源(向下滚动程序的其余部分):
StrObj := TProducts.Create(Inputbox('Brand name', 'Input the brand name', ''),Inputbox('Contents', 'Input the contents', ''), StrToInt(Inputbox('Mass', 'Input the mass', '')), StrToInt(Inputbox('Stock', 'Input the number in stock', '')));
注意:
- 所有数据都会转到预定的位置,因此输入框的顺序根本不会影响程序。我想知道是否有办法让输入框按顺序显示。
- 这是一项作业,但输入框的顺序不会计算标记。
整个代码:
申请:
unit TProducts_U;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, TProducts_class;
type
TForm1 = class(TForm)
btnResult: TButton;
redOut: TRichEdit;
procedure btnResultClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnResultClick(Sender: TObject);
var StrObj : TProducts;
begin
StrObj := TProducts.Create(Inputbox('Brand name', 'Input the brand name', ''),Inputbox('Contents', 'Input the contents', ''), StrToInt(Inputbox('Mass', 'Input the mass', '')), StrToInt(Inputbox('Stock', 'Input the number in stock', '')));
redOut.Lines.Add(StrObj.toString);
end;
end.
我的课程:
unit TProducts_class;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math;
type
TProducts = class
private
fBname, fContents : string;
fMass, fNum : integer;
public
Constructor Create; overload;
Constructor Create(Bname, contents : string; mass, num : integer); overload;
Function toString : string;
end;
implementation
{ TProducts }
constructor TProducts.Create;
begin
fBname := '';
fContents := '';
fMass := 0;
fNum := 0;
end;
constructor TProducts.Create(Bname, contents: string; mass, num: integer);
begin
fBname := Bname;
fContents := contents;
fMass := mass;
fNum := num;
end;
function TProducts.toString: string;
begin
result := 'Brand Name is : ' + fBname + #13 +
'Contents is : ' + fContents + #13 +
'Mass is : ' + IntToStr(fMass) + #13 +
'We have ' + IntToStr(fNum) + ' in stock';
end;
end.
答案 0 :(得分:5)
参数评估顺序未在Delphi中定义。
您需要为每个InputBox()
调用编写单独的指令,然后再将它们连接起来。
例如:
procedure TForm1.btnResultClick(Sender: TObject);
var
StrObj: TProducts;
sBrandName, sContents, sMass, sStock: string;
begin
sBrandName := Inputbox('Brand name', 'Input the brand name', '');
sContents := Inputbox('Contents', 'Input the contents', '');
sMass := StrToInt(Inputbox('Mass', 'Input the mass', ''));
sStock := StrToInt(Inputbox('Stock', 'Input the number in stock', ''))
StrObj := TProducts.Create(sBrandName, sContents, sMass, sStock);
// Added try .. finally, otherwise you will leak StrObj
try
redOut.Lines.Add(StrObj.toString);
finally
StrObj.Free;
end;
end;