我的dll窗体是MDI类型的,我点击主窗体的一个按钮,显示dll窗体,然后对子窗体进行操作,操作完成后关闭子窗体并返回一个值,主窗体根据这个返回值进行一些操作.不知道怎么返回这个返回值??急啊!!

解决方案 »

  1.   

    咋没人回答呢?偶在等呐!waiting!!!
      

  2.   

    那你在DLL里输出一个带有返回值的函数啦
      

  3.   

    Dll中把调用方式改为带返回值的函数。
      

  4.   

    写成有返回值的函数了,它把函数执行完了才出现子窗体的呀.这时候相当于返回值还没有呢,所以就不对了,这里里面又不能用ShowModal!
      

  5.   

    我用笨方法,在结束时发送消息给主窗体:
    SendMessage ( FindWindow ( nil, 'MainForm'), WM_COPYDATA, 1, Integer (@Value2Send) );
      

  6.   

    同意etomahawk的说法,实际可以把mainform指针传进dll里来的.
      

  7.   


    现在去米鼠网注册会员就能回答趣味题目赢的米鼠积分1积分=1RBM  可以直接网上购物网址:www.mylinux.com.cn
      

  8.   

    楼主的问题非常有意思:有几个建议:1.使用API的ErrorMessage机制,在Dll中添加一个类似与GetClosedValue的函数。在Dll中,增加一个全局变量,而主程序中调用GetClosedValue去主动获取。
    2.在Dll的窗体的关闭操作中,定义一个回调函数接口,主程序创建子窗体的时候,传入回调函数指针,那么可以在关闭子窗体的时候,第一事件获取到你要返回的值。
      

  9.   

    1、关闭窗体,并不意味着对象Destroy。你可以在关闭窗体后继续访问这个窗体对象的成员。2、你这种情况理论上应当使用模态窗体。3、如果不能使用模态窗体,有这些做法供参考。把处理逻辑移入DLL中,不仅仅显示窗体,还处理数据如果必须在主程序中处理数据,并且主程序需要获得窗体输入后才能进一步执行,那么理应使用模态窗体,我找不到其他理由。如果主程序和DLL窗体是相互独立的,他们之间存在复杂的交互,那么使用事件(或者回调函数)是比较好的方式,你可以传入一个interface,里面包含了所有的事件回调函数,如果直接传入主窗体对象,那么DLL中必须引用主窗体单元,这是不恰当的。使用interface来处理这种复杂交互动作是合理的。
      

  10.   

    "必须在主程序中处理数据,并且主程序需要获得窗体输入后才能进一步执行,那么理应使用模态窗体",是你说的那样的.
    可是它创建窗体的时候就同时把窗体显示出来了,用不了ShowModal;
      

  11.   

    我把窗体先visible := False;窗体不用MDI类型,就可以用showModal了,但是先在我要用MDI窗口,如果用这个它会报错,说MDI窗口不能visible := False;
    请问该怎么做呢?
      

  12.   

    模态窗体不要使用MDI子窗体。
      

  13.   

    我问的不是你说的那个问题
    zhangcheng125(老狼),你个猪头把问题看清楚再说好不?