判断子Form是否存在(200分)

  • 主题发起人 主题发起人 violetxh
  • 开始时间 开始时间
V

violetxh

Unregistered / Unconfirmed
GUEST, unregistred user!
主窗体中有一个PageControl,动态创建Tabsheet,和form,将form的parent指定为tabsheet
procedure TForm1.ShowForm(FormClass: TFormClass;
Form: TForm);
var
i:Integer;
begin
Form := FormClass.Create(nil);
if <窗体不存在> then
begin
tabsheet:=TTabSheet.Create(nil);
Tabsheet.Name:=Form.Caption;
Tabsheet.PageControl:=PGC;
Form.Parent:=Tabsheet;
Form.Align:=alClient;
Form.BorderStyle:=bsNone;
Tabsheet.Caption:=Form.Caption;
Formlist.Add(Form.Caption);
Form.Show;
pgc.ActivePage:=Tabsheet;
end
else
begin
For i:=0 to pgc.PageCount-1do
if pgc.Pages.Name=Form.Caption then
begin
pgc.ActivePage:=pgc.Pages;
Exit;
end;
end;
end;
<窗体不存在>怎么判断?请高手指点
我自己用了一个变通的方法
详见示例:
Ftp://218.90.234.214/demo.rar
 
findwindow....
 
procedure TForm1.btn1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to self.ComponentCount - 1do
if self.Components is TForm then
lst1.Items.Add(TForm(self.Components).caption);
end;
 
if not assined(form1) then
//窗体不存在
begin

end;
 
既然你的窗口是 formclass ,并且formclass = class of TForm;
直接
if not assigned(TForm(form) then
就ok
 
你的问题我已经帮你解决了。[:D][:D]
 
先找到控件上的窗体然后关闭下,在窗体的关闭事件中在=nil
 
TO:mystudy
我试过不行
 
再请教一个问题:
1,动态创建Form2于Form1.pgc.sheet中即 Form2.parent:=form1.pgc.sheet
2,在Form2中再创建一个窗体Form5
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
Application.CreateForm(TForm5,form5);
Form5.Show;
end;
3,Form5中引用Form2中的值出错,即引用Form2出错
procedure TForm5.Button1Click(Sender: TObject);
begin
edit1.Text:=Form2.Memo1.Text;
end;
请问怎么解决!!!![?]
详细情况见示例
Ftp://218.90.234.214/demo.rar
 
不是有一个时间PageContrlChange吗?
Var GlobeForm:TForms=Nil;
Procedure PageContrlChange();
begin
If GlobeForm<>Nil then
GlobeForm.Free;
GlobeForm:=某个Form 或 Create
GlobeForm.Parent:=PageContrl
end;
 
To: wql 你帮我把这个看看
Ftp://218.90.234.214/demo.rar
 
To: wql 有没有QQ?
交个朋友
 
这么多天了,还没有个满意的答案.还是用我以前的方法!还是散分吧!!!
 
后退
顶部