想做一个类似于ide的轻量级的界面设计器,现在雏形已经有了。有几个问题不明确:1、对于可视控件,是能进行设计的,但是对于不可视组件,比如AdoConnection怎么才能设计。但是我看delphi自己能做到的。我要得是那种可视设计的效果,选定一个adoconnection,然后属性能显示出来的,这个对于可视组件已经做到了。2、如何创建组件面板,delphi有没有接口?难道要自己一个个把控件画到面板上, 然后等候选择吗?3、关于控件事件的处理,我不需要处理全部事件,只要处理很简单的事件,比如button的click事件,但是我需要能有个地方选择事件,delphi自己的属性窗口能为控件创建事件,这个是不是只能rtti取得,然后自己搞list,现成的rtti property控件显示不了控件的事件吧。有知道的吗?

解决方案 »

  1.   

    你是用delphi的ide接口(interface)做的吗?如果是,接口都有呀。
    如果你是想做一个模仿delphi的,你可以阅读delphi附带的代码。
      

  2.   

    1.非可视化组件的设计其实是在设计器上搞一个代理的Control来处理的.这个Control有个属性是Component,获取各种属性的时候就是访问这个Component获取的.
    2.组建面板上的空间,你要获取包里面的Register方法,里面会调用RegisterComponent这个是一个函数指针.只要你实现了给它赋值就行了.然后根据包中组件的DCR资源中的图标贴到面板上就行了
    3.事件也是property,和其他的属性没啥区别.它的类型是成员方法指针而已.RTTI即可.但是下拉列表选择代码设计区中的方法不是RTTI获取的.而是代码解析出来的.基本上就是语法语义解析.如果是IDE的话自身提供了解析功能,并且可以让你使用.但是你自己实现就不行了,只能自己老老实实解析.给你一些我早期的代码.
    http://www.2ccc.com/article.asp?articleid=4367
    http://www.2ccc.com/article.asp?articleid=2334
    大富翁论坛上我早期的的一篇文章.大富翁没了,给你标题你自己搜索一下看哪里有吧
    "研究心得------->Delphi(C++Builder)包(Package)动态加载和动态注册类技术的深入"
      

  3.   

    参考fastreport的设计器。
    早期版本的代码容易理解。
      

  4.   

    你也可看看这个:
    http://www.2ccc.com/article.asp?articleid=1186
      

  5.   

    很感谢诸位的答复,我正是借鉴“wr960204”(武稀松)的文章实现的,也是实现 Designer 接口,做了些修改,以实现诸如获取“当前选择的组件”等功能,我继续研究。
      

  6.   

    to wr960204”(武稀松)http://www.2ccc.com/article.asp?articleid=4367
    http://www.2ccc.com/article.asp?articleid=2334第二个例子我google都下载不到了,如果可以的话, 能不能mail一份给我?[email protected]
      

  7.   

    很感谢诸位的答复,我正是借鉴“wr960204”(武稀松)的文章实现的,也是实现 Designer 接口,做了些修改,以实现诸如获取“当前选择的组件”等功能,我继续研究。