关于“动态建立”组件的有关问题
关于“动态建立”组件的问题
大家好!
窗体中有1个TComboBox组件、4个TEdit组件、1个TGroupBox、1个按钮组件。我现在想实现这样的目的:
1、设置TComboBox组件的选项为1~10,运行后,选择2,则在TGroupBox组件中动态建立2行TLabel组件,每行3个TLabel。选择10,则在TGroupBox组件中动态建立10行TLabel组件,每行3个TLabel组件。
2、在第1个TEdit组件中输入文本内容,并且在另3个TEdit组件中输入数字内容,单击按钮后,如果是第1次输入,则将第1个TEdit组件Text(文本)做为第1行第1个TLabel组件的Caption,将另3个TEdit组件的Text(数字)进行计算,并将计算结果做为第1行第3个TLabel组件的Caption;如果是第2次输入,则按以上规则分别修改第2行的TLabel组件,每行第2个TLabel组件的Caption属性为固定,在动态建立时确定。
我现在已经实现第1步了,第2步不会实现了。如果在代码中加入Continue或Break,则只修改第1行的TLabel组件(第1个和第3个);如果不在代码中加入Continue或Break,则所有行的TLabel组件(第1个和第3个)都修改了。我不知道该怎么修改才能实现这个目的,请大家帮我看看这个问题并提供帮助。
我的代码如下:
K := 0;
L := 0;
With GroupBox13 Do
begin
For j := 0 To ControlCount -1 Do
begin
IF Controls[j] IS TLabel Then
begin
IF TLabel(Controls[j]).Tag = K + 10 Then
begin
TLabel(Controls[j]).Caption := edtMinName.Text + '的风量计算结果为:';
Continue;
Inc(K);
end;
end;
end;
For j := 0 To ControlCount -1 Do
begin
IF Controls[j] IS TLabel Then
begin
IF TLabel(Controls[j]).Tag = L + 30 Then
begin
TLabel(Controls[j]).Caption := FormatFloat('.00',StrToFloat(FormatFloat('.0', WindQuantity_Weath))) + ' m3/min';
Continue;
Inc(L);
end;
end;
end;
end;
我已经将第1行的TLabel组件的Tag属性设定为10~19的数、第2行的TLabel组件的Tag属性设定为20~29的数、第3行的TLabel组件的Tag属性设定为30~39的数。
------解决思路----------------------
兄弟,这种要求,完全就应该用TStrngGrid来实现。拉一个Edit在界面上,说明需要输入几组测试数据,然后根据这个值来指定StringGrid的行数(列数嘛,我猜应该是4)。然后在每一行的前三个单元格里手工录入实验数据,最后放一个按钮在窗体上,点击时进行计算,并把计算结果放到第4列单元格中。
大家好!
窗体中有1个TComboBox组件、4个TEdit组件、1个TGroupBox、1个按钮组件。我现在想实现这样的目的:
1、设置TComboBox组件的选项为1~10,运行后,选择2,则在TGroupBox组件中动态建立2行TLabel组件,每行3个TLabel。选择10,则在TGroupBox组件中动态建立10行TLabel组件,每行3个TLabel组件。
2、在第1个TEdit组件中输入文本内容,并且在另3个TEdit组件中输入数字内容,单击按钮后,如果是第1次输入,则将第1个TEdit组件Text(文本)做为第1行第1个TLabel组件的Caption,将另3个TEdit组件的Text(数字)进行计算,并将计算结果做为第1行第3个TLabel组件的Caption;如果是第2次输入,则按以上规则分别修改第2行的TLabel组件,每行第2个TLabel组件的Caption属性为固定,在动态建立时确定。
我现在已经实现第1步了,第2步不会实现了。如果在代码中加入Continue或Break,则只修改第1行的TLabel组件(第1个和第3个);如果不在代码中加入Continue或Break,则所有行的TLabel组件(第1个和第3个)都修改了。我不知道该怎么修改才能实现这个目的,请大家帮我看看这个问题并提供帮助。
我的代码如下:
K := 0;
L := 0;
With GroupBox13 Do
begin
For j := 0 To ControlCount -1 Do
begin
IF Controls[j] IS TLabel Then
begin
IF TLabel(Controls[j]).Tag = K + 10 Then
begin
TLabel(Controls[j]).Caption := edtMinName.Text + '的风量计算结果为:';
Continue;
Inc(K);
end;
end;
end;
For j := 0 To ControlCount -1 Do
begin
IF Controls[j] IS TLabel Then
begin
IF TLabel(Controls[j]).Tag = L + 30 Then
begin
TLabel(Controls[j]).Caption := FormatFloat('.00',StrToFloat(FormatFloat('.0', WindQuantity_Weath))) + ' m3/min';
Continue;
Inc(L);
end;
end;
end;
end;
我已经将第1行的TLabel组件的Tag属性设定为10~19的数、第2行的TLabel组件的Tag属性设定为20~29的数、第3行的TLabel组件的Tag属性设定为30~39的数。
------解决思路----------------------
兄弟,这种要求,完全就应该用TStrngGrid来实现。拉一个Edit在界面上,说明需要输入几组测试数据,然后根据这个值来指定StringGrid的行数(列数嘛,我猜应该是4)。然后在每一行的前三个单元格里手工录入实验数据,最后放一个按钮在窗体上,点击时进行计算,并把计算结果放到第4列单元格中。