此代码改为:
unit panel1;interfaceuses
Windows, Messages, SysUtils, Classes,Variants, Forms, Controls,
Graphics, Dialogs, ExtCtrls, StdCtrls;type
TpanelAAA = class(Tpanel)
private
Procedure ClickButton(sender : TObject);
{ Private declarations }
protected
{ Protected declarations }
public
a : integer;
Button : TButton;
constructor Create(AOwner : TComponent);override;
destructor Destroy; override;
{ Public declarations }
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('MyConponent', [TpanelAAA]);
end;Procedure TpanelAAA.ClickButton(sender : TObject);
var
i: integer;
begin
if (a mod 2) = 0 then
begin
for i:= 10 to 100 do
begin
Height := i* 2;
Refresh;
end;
end else
begin
for i := 100 downto 10 do
begin
Height := i* 2;
Refresh;
end;
end;
a:= a+1;
end;
constructor TpanelAAA.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
Button := TButton.Create(aowner);//»òButton:=TButton.Create(TPanel(Self));
Button.Parent:=tPanel(self);
Button.Top := Top;
Button.Left := Left;
Button.Show;
Button.OnClick := ClickButton;end;destructor TpanelAAA.Destroy;
begin
Button.Free;
end;end.以上代码在编辑其它程序,使用此组件时,运行会有错误,提示"TButton 没有找到."。如果在程序窗体上加一个Button就可以运行但这时实际在自定义的组件中有2个button。这是为什么。
unit panel1;interfaceuses
Windows, Messages, SysUtils, Classes,Variants, Forms, Controls,
Graphics, Dialogs, ExtCtrls, StdCtrls;type
TpanelAAA = class(Tpanel)
private
Procedure ClickButton(sender : TObject);
{ Private declarations }
protected
{ Protected declarations }
public
a : integer;
Button : TButton;
constructor Create(AOwner : TComponent);override;
destructor Destroy; override;
{ Public declarations }
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('MyConponent', [TpanelAAA]);
end;Procedure TpanelAAA.ClickButton(sender : TObject);
var
i: integer;
begin
if (a mod 2) = 0 then
begin
for i:= 10 to 100 do
begin
Height := i* 2;
Refresh;
end;
end else
begin
for i := 100 downto 10 do
begin
Height := i* 2;
Refresh;
end;
end;
a:= a+1;
end;
constructor TpanelAAA.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
Button := TButton.Create(aowner);//»òButton:=TButton.Create(TPanel(Self));
Button.Parent:=tPanel(self);
Button.Top := Top;
Button.Left := Left;
Button.Show;
Button.OnClick := ClickButton;end;destructor TpanelAAA.Destroy;
begin
Button.Free;
end;end.以上代码在编辑其它程序,使用此组件时,运行会有错误,提示"TButton 没有找到."。如果在程序窗体上加一个Button就可以运行但这时实际在自定义的组件中有2个button。这是为什么。
begin
inherited Create(AOwner);
Button := TButton.Create(aowner);//»òButton:=TButton.Create(AOwner);
// Button.Parent:=tPanel(self);
Button.Top := Top;
Button.Left := Left;
// Button.Show;
Button.OnClick := ClickButton;
InsertControl(Button);
end;destructor TpanelAAA.Destroy;
begin
// Button.Free;
inherited;
end;