关于在未知数量的情况下动态创建控件的困惑
比如以下delphi代码:
https://static.52pojie.cn/static/image/hrline/2.gif
procedure TMain_Form.动创3个ComboBoxClick(Sender: TObject);
var
ComboBox1, ComboBox2, ComboBox3: TComboBox;
begin
ComboBox1 := TComboBox.Create(DTSC_Panel);
ComboBox1.Parent := DTSC_Panel;
ComboBox1.Left := 500;
ComboBox1.Top := 10;
ComboBox2 := TComboBox.Create(DTSC_Panel);
ComboBox2.Parent := DTSC_Panel;
ComboBox2.Left := 500;
ComboBox2.Top := 80;
ComboBox3 := TComboBox.Create(DTSC_Panel);
ComboBox3.Parent := DTSC_Panel;
ComboBox3.Left := 500;
ComboBox3.Top := 150;
end;
问题是我不知道ComboBox到底是几个?数量是(动态的不确定的)跟随机很像
ComboBox 加 序号 ,这咋表达? 以下没报错,咋显示了一个呢?
unit Unit7;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus,
Vcl.StdCtrls;
type
TForm7 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
A1: Integer;
implementation
{$R *.dfm}
procedure TForm7.FormCreate(Sender: TObject);
begin
Randomize; //初始化随机数发生器
A1 := Random(5);
end;
procedure TForm7.Button1Click(Sender: TObject);
var
i: Integer;
num: array of TComboBox;
begin
for i := 1 to A1 do
begin
num := TComboBox.Create(Form7);
num.Parent := Form7;
num.Left := 10 + 100;
num.Top := 10 + 50;
end;
end;
end.
冥界3大法王 发表于 2023-11-19 22:37
以下没报错,咋显示了一个呢?
unit Unit7;
只显一个是因为都重叠在一起了:
num.Left := 10 + 100;
num.Top := 10 + 50; 每一个TComponent类都有一个Components属性,表示该组件作为容器时拥有对象所有权的子控件列表。
可以在动态创建控件时为其生成一个独一无二的Name属性,或者一个Tag属性来区分它们,而查找一类控件通常需要利用TObject的ClassName属性来区分。
由于Name属性对于任意类型组件都是唯一的,而某种类型的组件用ClassName和Tag来区分是更合适的。
页:
[1]