procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
vCount: Integer;
vForm: TForm;
vCheckBox: TCheckBox;
begin
vForm := TForm.Create(Self);
try
for I := 0 to 9 do begin
vCheckBox := TCheckBox.Create(Self);
vCheckBox.Top := I * vCheckBox.Height;
vCheckBox.Parent := vForm;
vCheckBox.Caption := Format('测试%d', [I]);
end;
vForm.ShowModal;
vCount := 0;
for I := 0 to vForm.ControlCount - 1 do
if vForm.Controls[I] is TCheckBox and
TCheckBox(vForm.Controls[I]).Checked then
Inc(vCount);
Caption := IntToStr(vCount);
finally
vForm.Free;
end;
end;
var
I: Integer;
vCount: Integer;
vForm: TForm;
vCheckBox: TCheckBox;
begin
vForm := TForm.Create(Self);
try
for I := 0 to 9 do begin
vCheckBox := TCheckBox.Create(Self);
vCheckBox.Top := I * vCheckBox.Height;
vCheckBox.Parent := vForm;
vCheckBox.Caption := Format('测试%d', [I]);
end;
vForm.ShowModal;
vCount := 0;
for I := 0 to vForm.ControlCount - 1 do
if vForm.Controls[I] is TCheckBox and
TCheckBox(vForm.Controls[I]).Checked then
Inc(vCount);
Caption := IntToStr(vCount);
finally
vForm.Free;
end;
end;
关键是你的参数的调用;
一个窗体一定要是自动创建的;
嘻嘻;不过有点麻烦,写吧
Procedure...
var
I : Integer;
Box : TCheckBox;
Form2 : TForm2;
begin
Form2 := TForm.Create(Application);
for I := 0 to Random(100) do//嘻嘻,来个大的;
begin
Box := TCheckBox.Create;
Box.Parent := Form2;
Box.Left := ..//Integer;
Box.Top := ..//;
Box.Width := ..;//
Box.Height := ..;
Box.Nzme := 'Box' + IntToStr(I);
Box.Visible := True;
end;
Form2.ShowModal;
end;
Form2 ;
begin
for J : 0 to Form2.ComponentCount-1 do
begin
if Form2.Components[J] is TCheckBox then
Inc(H);//你自己定义,全局的就行了,然后,form1引用
end;
eng
begin
for J : 0 to Form2.ComponentCount-1 do
begin
if Form2.Components[J] is TCheckBox then
if TCheckBox(Form2.Components[J]).OnEnter then
begin
//嘻嘻,就是它啊;
Showmessage(TCheckBox(Form2.Components[J]).Caption);
end;
end;
eng
1。在A窗体调用B窗体的时候,B窗体的生成时动态的,使用B类的共有函数或重载Create函数,这样可以实现动态产生控件,对于控件的管理,可以使用其父类控件来控制。
2。在B窗口返回的时候使用一个公用变量来表明选择结果,这样更好。