procedure TForm1.Button1Click(Sender: TObject); var ddd, bbb: string; f: TForm; b: TBitBtn; begin ddd := 'Form2'; bbb := 'BitBtn1'; if Application.FindComponent(ddd) <> nil then begin f := TForm(Application.FindComponent(ddd)); if f.FindComponent(bbb) <> nil then begin b := TBitBtn(f.FindComponent(bbb)); if Assigned(b.OnClick) then begin b.Click; end; end; end; end;
不知道是不是这个意思,你先看看 procedure TForm1.Button1Click(Sender: TObject); var ddd : string; //存储form信息 begin ddd:='myform'; //建议用一数组保存,好比较 if ddd='myform' then //判断是那一种form begin if myform=nil then begin myform:=Tmyform.create(self); myform.Show; end; end else if ddd='form2' then begin if form2=nil then begin form2:=Tform2.create(self); form2.Show; end; end; ... end;
var newform:tform; begin newform:= Tform1.Create(nil); newform.name:='form2'; newform.VISIBLE:=true; newform.show; end;我动态创建了一个窗口,名称就是form2,但是执行时, if Application.FindComponent(ddd) <> nil then 语句都通不过。
var
ddd, bbb: string;
f: TForm;
b: TBitBtn;
begin
ddd := 'Form2';
bbb := 'BitBtn1';
if Application.FindComponent(ddd) <> nil then
begin
f := TForm(Application.FindComponent(ddd));
if f.FindComponent(bbb) <> nil then
begin
b := TBitBtn(f.FindComponent(bbb));
if Assigned(b.OnClick) then
begin
b.Click;
end;
end;
end;
end;
APPLICATION.CREATEFORM(TFROM,FORM);
FORM.VISIBLE := FALSE;
procedure TForm1.Button1Click(Sender: TObject);
var
ddd : string; //存储form信息
begin
ddd:='myform'; //建议用一数组保存,好比较
if ddd='myform' then //判断是那一种form
begin
if myform=nil then
begin
myform:=Tmyform.create(self);
myform.Show;
end;
end else
if ddd='form2' then
begin
if form2=nil then
begin
form2:=Tform2.create(self);
form2.Show;
end;
end;
...
end;
newform:tform;
begin
newform:= Tform1.Create(nil);
newform.name:='form2';
newform.VISIBLE:=true;
newform.show;
end;我动态创建了一个窗口,名称就是form2,但是执行时,
if Application.FindComponent(ddd) <> nil then 语句都通不过。
Application.FindComponent(ddd)这种方法,在创建窗口时,一定要用
Application.CreateForm(TForm1, Form1);
或
newform:= Tform1.Create(Application);