主界面左边是一个动态生成的树菜单,树的每一个结点在数据库都会对应一个窗体名称。想实现点击树结点根据不同的窗体名称显示不同的窗体的功能(窗体由Delphi自动创建),但现在总报内存的错误,请高手指定一下困惑!
代码如下,FrmName是String型,保存每个结点对应的Form名称
procedure TForm2.TreeView1DblClick(Sender: TObject);
begin
TForm(FrmName).ShowModal;
end;

解决方案 »

  1.   

    var
       aForm:TForm;
    begin
       Application.CreateForm(TComponentClass(FindClass(FrmName),aForm);
       aForm.Show;
    end
      

  2.   

    窗体还没有创建当然不能show了,string不会自动转换成TFormClass类型的1、各个需要动态创建的子窗体单元最后end.前注册一下窗体类。TForm1是类名
    initialization
      RegisterClasses([TForm1]);2、主界面中根据窗体类名动态创建
    procedure TMainForm.TreeView1DblClick(Sender: TObject);
    var
       myForm: TForm;
    begin
      myForm := TFormClass(FindClass(FrmClassName)).Create(Application);
      myForm.ShowModal;
    end;
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      with TFormClass(FindClass(FrmName)).Create(nil) do
      try
        ShowModal;
      finally
        Free;
      end;
    end;
      

  4.   

    FindClass(FrmName)最好再判斷一下是否找到
      

  5.   

    因为他们是自动创建的,但你要在多个窗口之间进行切换,所以不用showmodle,要用show.
      

  6.   

    欢迎加入Borland DELPHI程序员,参与群里技术讨论!欢迎女孩子,也欢迎男孩子参与技术讨论!群号15154361