Nur durch Änderung des Owners sollte sich nichts am Programmablauf ändern, da der Owner nur für die Freigabe der Subkomponenten zuständig ist und sonst keinen Einfluß besitzt, abgesen vom Property .Components und vom FindComponent.
Der Owner gibt seine zugeordneten Komponenten frei, wenn er selbst freigegeben wird ... Notification ist also etwas overload.
PS: Buttons kann nur einen Button aufnehmen, weswegen man hier ein Array, eine Liste (TObjectList) oder eben die vorhandene Liste .Components verwenden sollte.
Delphi-Quellcode:
unit Testtoolbar2;
interface
uses
SysUtils, Classes, Controls, ToolWin, ComCtrls, ImgList, cxGraphics;
type TTestBars =
set of (Standard1, Standard2, Standard3, Standard4, Standard5);
type
TTestToolbar =
class(TToolBar)
private
{ Private-Deklarationen }
Buttons :
array[0..3]
of TToolbutton;
ImageList: TcxImageList;
public
{ Public-Deklarationen }
constructor Create(aOwner: TComponent);
override;
end;
procedure Register;
implementation
constructor TTestToolbar.Create;
begin
inherited;
Parent := Owner
as TWinControl;
{ wann sollten die/der denn erzeugt wurden sein? }
//if Assigned(Buttons) then
// Exit;
{ sollen die Buttons wirklich NUR im Formdesigner vorhanden sein? }
//if csDesigning in ComponentState then
//begin
Buttons[0] := TToolButton.Create(Self);
Buttons[0].Parent := Self;
Buttons[0].Caption := '
Speichern';
Buttons[1] := TToolButton.Create(Self);
Buttons[1].Parent := Self;
Buttons[1].Caption := '
Zurück';
Buttons[2] := TToolButton.Create(Self);
Buttons[2].Parent := Self;
Buttons[2].Caption := '
Vor';
Buttons[3] := TToolbutton.Create(self.Parent);
Buttons[3].Parent := Self;
Buttons[3].Caption := '
Neu';
//end;
//Standardeigenschaften für Toolbar setzten
ShowCaptions := True;
end;
procedure Register;
begin
RegisterComponents('
ZTestKomponenten', [TTestToolbar]);
end;
end.