function ShowF1(AHandle:THandle;aPnl: TPanel):integer;
var
Form3:TForm3;
begin
Application.Handle:=AHandle;
Form3:=TForm3.Create(Application);
try
Windows.SetParent(Form3.Handle, aPnl.Handle);
Form3.Show; ///--------------------------------------这里
Application.MessageBox('dd','ff',MB_OK);
Result:=1;
finally
Form3.Free;
end;end;
怎么解决阿,showmodal后,整个程序无法操作 ,把showmodal改成show后,show后可能极快的就关闭,就和没有反映似的,但加上Application.MessageBox('dd','ff',MB_OK);
就看到的确SHOW出了一个form,但是没办法在show出的form里操作
我 要实现的目的是:在主FORM里的PANEL中,Show出DLL中的form,然后进行处理、操作,用完后释放dll的form
整个过程就是在一个form里放了一个,panel然后调用dll的form,在panel里显示出来,就实现了一个类似MDI了,这样怎么样,你们还有更好的办法么???

解决方案 »

  1.   

    你在show以后立刻执行了Form3.Free;,当然窗体立刻关闭了。而加上Application.MessageBox后之所以可以看到form3,是因为系统要等待你点击MessageBox的OK按钮以后才执行Form3.Free。你能否考虑稍微修改一下你的逻辑,把form3.free挪挪位置?照你这个写法,任何窗体都必须用showmodal了。----------------------------------------------
                       riff ur life
      

  2.   

    你先把form3.free注掉,看看能否操作form3。
    ----------------------------------------------
                       riff ur life
      

  3.   

    不行,我早试过,form3.free去掉,也一样
      

  4.   

    你试试这样写:
        form3:=Tform3.CreateParented(aPnl.Handle);
        form3.Align:=alclient;
        form3.Visible:=true;我这样写是可以用的(窗体也是在dll中的),只要注意form3的释放就可以了。----------------------------------------------
                       riff ur life
      

  5.   

    用SetWindowPos(Form3.Handle,left,top,width,height,SW_TOPMOST);
      

  6.   

    请试试将Form3声明在全局变量中,这样DLL将使用调用进程的堆进行内存分配,
    可以进行ShowModal进行窗体的显示了。
    当然也必须在过程中创建Form的实例,在过程的结束释放实例。
      

  7.   

    form3:=Tform3.CreateParented(aPnl.Handle);  
           form3.Align:=alclient;  
           form3.Visible:=true;  
    这样出来运行后一大队错误提示
      

  8.   

    var
      form3: Tform;implementationfunction ShowF1(AHandle:THandle;aPnl: TPanel):integer;
    begin 
      try
      
      form3:=tform.Create(nil);
      Application.Handle:=AHandle;
      
      Form3.ShowModal; 
      Application.MessageBox('dd','ff',MB_OK);
      Result:=1;
      
      finally
        Form3.Release;
        Form3.Free;
      end;end;
      

  9.   

    什么阿,这样和不在panle里Show的一样阿