比方说:Application.CreateForm(TfrmInput,frmInput) ;//此句是生成一个实体我的意思就是,如果该实体已经生成,我就不在重复执行此操作了!请教:!!

解决方案 »

  1.   

    if Assigned(frmInput) then
      showmessage('已经加载了')
      

  2.   

    if Application.FindComponent('frminput')=nil then application.createform(Tfrminput,frminput) else showmessage('该窗口已经创建');
      

  3.   

    那我这句话错在那呢?
    if Not Assigned(frmSMInput)then
         Application.CreateForm(TfrmSMInput,frmSMInput);
      frmSMInput.Show;第二次无法Show!
      

  4.   

    关闭窗体后要frmSMInput:=nil ;
    创建时if frmSMInput=nil then
        Application.CreateForm(TfrmSMInput,frmSMInput);
      

  5.   

    show以后应该改变windowsState为wsMaximized或wsNormal;
      

  6.   

    在Show前要先Free掉存在的窗体
      

  7.   

    未必,但在关闭时就该FREE掉原来的窗体
      

  8.   

    我的问题还是没有解决在菜单中写有如下语句:Application.CreateForm(TfrmInput,frmInput);
                          frmInput.Show;因此会有这样的情况,即使当前活动窗体是frmInput,我在点该菜单,它还是会重新加载一次,而且会有个闪烁的过程,我不想这样的效果
      

  9.   

    if Not Assigned(frmSMInput)then
      begin 
      Application.CreateForm(TfrmInput,frmInput);
      frmInput.Show;
      end;
      

  10.   

    在show出来的窗体的onclose事件中:
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form1:=NIL;
      Action:=caFree; //在MDI应用中要加上这句
    end;
      

  11.   

    if Assigned(frmInput) then
      showmessage('已经加载了')
    用这个!!!而且,你FREE窗体后,还要加FrmInput:=Nil.否则