几个已有控件做成一个新控件(100分)

  • 主题发起人 主题发起人 城市小猎人
  • 开始时间 开始时间

城市小猎人

Unregistered / Unconfirmed
GUEST, unregistred user!
要把以下几个控件做成一个新控件:
TGroupBox为容器,里面有TLabel,TSpeedButton,TMemo,TCheckBox,TEdit
但好像公共的继承父类是TControl,整个控件从TControl继承,安装后控件放在窗口上不能看到(同时构造器里的TGroupBox的parent不能为self)
要怎么样才能把这个控件完成?
 
学学CDK控件,开发自己组件的首选。
 
方法一:建立一个Frame,将上面的控件都放入Frame中,然后往窗口上放置该Frame

方法二:

type
TMyCom=class(TGroupBox)
private
FLabel: TLabel;
Fsb: TSpeedButton;
FMemo: TMemo;
FCB: TCheckBox;
FEdit: TEdit;
public
Constructor Create(AOwner: TObject);
Destructor Destroy ;
end;

//以下代码放入implementation中
Constructor TMyCom.Create(AOwner: TObject);
begin
inherited;
Flabel := TLabel.Create(self);
with FLabel do
begin
left := XXX;
Top := XXX;
Parent := Self;
......
end;

...... //把其它控件仿照 Flabel写一遍

self.Parent := AOwner;
end;

Destructor TMyCom.Destroy ;
begin
FreeAndNil(FLabel).;
FreeAndNil(Fsb);
FreeAndNil(FMemo);
FreeAndNil(FCB);
FreeAndNil(FEdit);

inherited;
end;
 
self.Parent := AOwner;<--这局不能执行

还有,我把新控件放到窗体上时,按照我规定的大小,要怎么写?
 
这句不行的话就不要吧,在外面去写(不过按道理是没问题的,我做过很多次了);
要放到窗体上,用下面的办法:
在窗体的oncreate事件中

procedure TForm1.OnCreate(Sender: TObject)
var
aa: TMyCom;
begin
aa := TMyCom.Create(self);
aa.left := XXX;
aa.Top := XXX;
aa.Width := XXX;
aa.Height := XXX;
aa.Parent := self; //这句实现self.Parent := AOwner;相同的功能

......
end;
 
放在里面单独创建
 
用frame吧。
 
后退
顶部