关于TColumn类型的组件编辑器 ---- 真的没人帮我了吗? (50分)

  • 主题发起人 主题发起人 ego
  • 开始时间 开始时间
E

ego

Unregistered / Unconfirmed
GUEST, unregistred user!
我在自己编写的控件(继承自TStringGrid)中使用了TColumn类,想让它能象TDBGrid一样,
能在设计时双击控件后,就自动弹出调用Columns窗体。
我查阅了一下资料,发现只有使用组件编辑器(TComponentEditor)才能做到。
但我不知道怎样在ExecVerb事件中调用Columns窗体。如:
procedure TmyColEditor.ExecuteVerb(index: integer);
begin
case index of
0: //怎样在这里调用Columns属性窗体?
  1: ......
end;
end;
 
或者在Edit事件中调用也可以......
没人知道吗?
 
给点提示也好呀!
 
还有,TDefaultEditor的Property是怎样用的?能举个例子吗?呵呵,最好能讲解一下,谢谢!
 
自己up一下
 
在D的Demo中有一些Property编辑器的源程序,你可以去看看,还要要注意注册代码要和
控件代码分开最好
 
诸葛兄,Delphi关于TComponentEditor的源码示例我都看过了,可惭愧得很,
因为水平太低,看过之后一点头绪都没有 :( , 所以在此请高手指点指点,以解禺惑。
 
没有人......
 
没找到,你去找找第三方DBGrid控件的这个源代码来看看吧,应该有的
 
诸葛先生,我能找到的资料我都找了,除了hubdog写了两篇关于组件编辑器的文章,以及《Delphi5.0编程指南》
《Delphi6.0从入门到精通》都提了一点以外,根本就没有一个说到实质性问题上的,全都泛泛而谈。
至于第三者组件用到TColumnsod类的TComponentEditor更是少之有少,即使用到了,源码也是恶长,比DBGrid还复杂!晕~~~~~~~~~~~~~~
先生能不能指点迷津,重振汉室,以安天下?
 
能把代码给我看看吗?
hzg115@sina.com
 
取自Delphi的联机帮助:
Use TComponentEditor or one of its descendants as a base class when defining
a design-time editor for working with a new component class. Although you can
create component editors that descend directly from TBaseComponentEditor, it is
convenient to use TComponentEditor, because this classs supplies a default
implementation of the IComonentEditor interface.

Create a new component editor class for a component class to add verbs to
its context menu, change its default double-click behavior, or allow the
component to use a new clipboard format.

Once the component editor is defined, it can be registered to work with a
particular component class. A registered component editor is created for each
component of that class when it is selected in the form designer. When the
component is double-clicked, the Edit method of the component editor is called.
When the user right-clicks the component, the GetVerbCount and GetVerb methods
of the editor are called to build context menu. To create the association
between a component editor and a component class, call RegisterComponentEditor.

Delphi provides a descendant of TComponentEditor (TDefaultEditor) which all
components use if they have no registered association with a component editor.

意即你从TBaseComponentEditor或TComponentEditor继承下来,为一个构件写一个构
件编辑器,这样当在设计时双击你的构件时,它获得你现在赋予它的能力,即会执行Edit之
中的方法。建议从后者继承,这样的话,因为它已经有一个IComponentEditor的默认实现了。

在写继承TComponentEditor以,访问Component属性,就可以得到当前被编辑的构件。

 
意即你从TBaseComponentEditor或TComponentEditor继承下来,为一个构件写一个构
件编辑器,这样当在设计时双击你的构件时,它获得你现在赋予它的能力,即会执行Edit之
中的方法。建议从后者继承,这样的话,因为它已经有一个IComponentEditor的默认实现了。

在写继承TComponentEditor以,访问Component属性,就可以得到当前被编辑的构件。
 
如果你是急于解决问题的话,有以下选择
1.刘艺的第三方控件大全中,有过介绍:属性表格propertygrid
来源www.he.cninfo.net/delphi/
d3 4 5 性质:免费软件
2.深度历险中好象也有
 
to mypine:
>>在写继承TComponentEditor以,访问Component属性,就可以得到当前被编辑的构件。
不好意思,不太明白您说的意思。Component属性我知道,但不知怎样才能从Component中调用Columns属性的弹出窗体。
至于默认的调用,应该是指ExecuteVerb事件的index值为0的菜单吧?如果是这样的话,我仅仅知道怎样进行简单的应用,如:
procedure TmyColEditor.ExecuteVerb(index: integer);
begin
case index of
0: begin
showmessage('ok'); //呵呵,偶只会在此进行简单应用,但怎样调用Columns属性窗体就不知道了
    end;
  1: ......
end;
end;

to 活化石:
谢谢你的消息,我去看看。
 
propertygrid好象并没有我想要的功能 :(
哪位大侠再想想办法啊?
 
算了,谢谢大家了!
 

Similar threads

后退
顶部