组件设计时如何指定VCL的父容器? (100分)

  • 主题发起人 主题发起人 DiamondKing
  • 开始时间 开始时间
D

DiamondKing

Unregistered / Unconfirmed
GUEST, unregistred user!
我想设计一个由Edit,和Button组合起来的组件,自定义组件名称为TMyButtonEdit ,从TWincontrol 继承下来,
则组件的构造函数有如下代码:
Constructor TMyButtonEdit.Create (AOwner,TComponent);
begin
inherited Create(AOwner);
FEdit:=TEdit.Create(Self);
FEdit.Parent:=Self; //****
FEdit.Height:=21;
.........
end;

****行出错,提示为类型不匹配!
[Error] MyButtonEdit.pas(46): Incompatible types: 'TWidgetControl' and 'TButtonEdit'

如何在创建TMyButtonEdit时,在MybuttonEdit上画出FEdit?
 
可能是 uses 错了,TWidgetControl 是 QControls.pas 中定义的,应该 uses Controls 而
不是 QControls, 一般以 Q 开头的单元都是 CLX 的部分,是跨平台与 Kylix 兼容的组件库.
你是开发 for Kylix 的组件吗?
一般设置了 Control 的 Parent 和 Left,Top 等就它自动会显示在容器父控件上,不用再
去画了.
 
谢谢! 其实 我只是设计一般的组件。
是的, 把uses 里面的controls,stdctrls改为QControls,和QstdCtrls,就好了。
但是一个新的问题就是我把这个组件重新编译,也不再报错了,但是却从组件面板里面
消失了,但是点‘property’又可以看到,
希望继续帮忙!
 
to DiamondKing:
我有点糊涂了.你用的是 Kylix 吗?如果是,我没用过它,你可以到 Kylix 的版块去问问.如果
你用的是 Delphi,开发的组件要在 Windows 下使用,则应该 uses 不带 'Q' 开头的单元,如果
开发的组件要在 Linux 下使用,最好还是用 Kylix 开发.在 Delphi 下使用 CLX,虽然你可以
编译,但 TWidgetControl 要求有 QtLib 的支持,就象 TWinControl 要求 Windows 的支持
一样,否则,设计时你的控件在 Delphi 中或运行时都是无法使用的,
另外,你说的是那个 'property'?你的组件能放置到一个 Form 上吗?
 
BBKXJY:谢谢! 实在不好意思,前一段时间这里一直都上不来。所以一直都没有回复!
我设计的是Vcl,当时我并不很清楚VCl和Clx的区别。得到你的提示,我的问题已经解决了。
并且运行的很好。
请问一下你有没有接触有关于系统托盘的组件,或者可以用的代码,我这里有一个
但是注册了却无法用(图标不进入托盘)。 可以帮忙吗?
 
后退
顶部