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.ShowModal;
Result:=1;
finally
Form3.Free;
end;
end;
怎么解决阿,showmodal后,整个程序无法操作 ,把showmodal改成show后,show后可能极快的就关闭,就和没有反映似的,
我 要实现的目的是:在主FORM里的PANEL中,Show出DLL中的form,然后进行处理、操作,用完后释放dll的form

解决方案 »

  1.   

    如果实在不会,使用AHM提供的Form控件就可以实现你的要求!!!另外实在不明白你为什么要这样操作?是不是为了进行消息处理呢?
      

  2.   

    不是了,这样作就类似的实现了一个midi阿
      

  3.   

    try,finally都去掉,只要中间的!
      

  4.   

    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了,这样怎么样,你们还有更好的办法么???