有个问题,还望知道的朋友不吝赐教。我做了一个主窗体,其中有一个容器PANEL,PANEL中在主窗体加载后会LOAD许多的子窗体进来,从而
实现在主窗体中的翻页效果,现在这些功能都正常,但存在一个问题:主窗体中有一个对象,而这个对象将被所有的子窗体共用,但因为子窗体存在于主窗体的PANEL中,我
一时还没有好的办法让这些所有的子窗体共用这个对象。
试过在子窗体中用 self.parent.parentwindow ,但这个属性返回的是窗体句柄(HWND),我试过用
Getwindow()函数取得主窗体实例也未能成功,还请各位指教!另外,这个模式不能用全局变量,换言之,就是我需要的是局部共享对象,因为前面提到的主窗体其
实都属于一个MDI父窗体之中,也就是说,MDI中包含多个这样的主窗体,主窗体中的PANEL中又包含
许多的子窗体,前面提到的主窗体是根据需要而进行实例化的,如果用全局共享的话将不能满足需求。

解决方案 »

  1.   

    能不能
    TForm(Self.Parent.Parent).
    行么?
      

  2.   

    谢谢楼上的朋友,这个方法我用过,但提示:Access violation at address 004DCC9E in module 'BankProc.exe'.Read of address 0000000030
      

  3.   

    按道理,TForm(Self.Parent.Parent). 这样的方法应该可以,但不知道为什么会发生这样的状况。
      

  4.   

    如果内部无法访问到外部,就从外部把数据送进去,通过参数传递不就可以了?
    为每个子窗体增加一个私有变量,然后每个子窗体增加一个方法SetXXX(),接受外部数据。然后每次换页的时候将主窗体的数据通过SetXXX设置进去就好了。
      

  5.   

    把你panel下子窗体创建函数帖出来看看呢,会不会是因为AOwner:=nil啊
    所以访问不到parent
    我也是猜猜啊
      

  6.   

    多谢楼上的朋友!!!确实是因为我的疏忽所致,我在窗体CREATE的时候就使用了上级组件的父窗体对象,所以导致为NIL出错,实在惭愧.... 非常感谢各位的热情回复。