1.窗体容器控件可继承TWinControl
2.这个控件其实根本不用做,TFrame就是这样的控件。你可以做好一个Frame,将它保存起来,将来要用时,将他加入工程,BCB中控件面板上有个Frames按钮,就在Standard第一个将其加到Form上,或者动态创建后,将Form赋给他的Parent属性。
3.所有的可视化控件都是从TControl派生的。而且可以通过ClassName和typeid来判断是什么类型的控件。

解决方案 »

  1.   

    谢谢圣火。你的指点很有用。
    这个控件还是要做的。因为我的程序将会这样:
    一开始发一个主程序给客户,该程序只有一些筐架,实现一些简单基本的功能。
    然后,根据客户的需求,给他不同的控件。这些控件要影响到用户的界面显示,
    数据库操作等。连我自己都不知道会将用到什么样的控件。
    这样的编程方式,不可能作成TFrame,因为不能重新在工程上直接修改。还是要作成
    控件,通过一些配置,比如把名字或GUID给主程序,让主程序激活控件并和控件通信。
    这样的程序是不是要支持什么“容器”请继续指教。
      

  2.   

    我手头的一本书,讲ActivX Control的时候,只能把VCL构件包装一下成为Activx Control,
    比如继承一个TButton出来的activx控件还是一个简单的跟Delphi里完全一样的Button.
    不是这样的吧?
      

  3.   

    要用到不确定的控件啊。
    这个比较麻烦,只用VCL好象很麻烦,不过所有的可视化控件都是一个窗体,只是Style不同。你可以用一个动态数组保存这些控件,反正他们的基类都是TControl。但是控件不连接到程序里,只有用COM技术了,把这些控件放到DLL中也是个办法。
    你给出的需求不是很清楚,所以方案也很难确定。
    如果所有的控件都是已知的,就不用这么麻烦,把所有的控件都编译进来就是了,剩下来就是动态创建控件再确定父子关系就可以了。
      

  4.   

    再谢谢圣火的指点。
    当然要用到COM或者Activx技术的。
    我现在想应该可以做一个ActivxForm,把东东都摆上去,编译成一个Ocx。
    问题就是我还不知道如何把这个Ocx动态的调用到程序里,假设我知道它的名字和GUID(废话,我自己作的当然知道了)。
    再不行了,我就用TWebBrowser,Navigate一下一个包含该Activx的页面,呵呵。又假设我可以把这个Activx控件拉倒程序里显示了 ,我的程序里可以得到该Activx的接口,我设计的这一系列Activx都应该有一个相同的属性,那么我在程序里对这个属性写一下,就可以把数据交给Activx控件了。问题是:
      我的程序设计编译的时候是不是应该有一个实现了该通用接口的基类TBase,然后
      TBase := TActivX
      TBase.Data := Data 
    即可。
    请高手们指教。
      

  5.   

    作成DLL好象也是一种办法。
    要求这个DLL包含一个Form,并且可以Show.呵呵。用Delphi的我还没有作过,Vc的到是真可以。
    我再看看Delhpi里关于包含资源的DLL用法先。
      

  6.   

    我作了一个有窗口的Dll,export了一个函数GetWindow:TForm
    Create一下这个Form然后把Self返回了。在调用程序中可以对一般Form那样操作这个
    返回的Form变量,包括show,换caption 什么的。
    因为我用Delphi用的少,不知道这样会不会有什么问题,比如内存泄露什么的。
    请指教Activx的同时也指教一下这个问题。
      

  7.   

    还有人发言吗?动态嵌入Activx的问题还是没有解决。