Hi,
ich möchte mir eine Komponente erstellen. Später als TWinControl, jetzt aber erst mal als TCustomPanel.
Mein Problem ist, dass die Eigenschaft Align scheinbar nicht so funktioniert, wie ich es erwarte.
Delphi-Quellcode:
unit uTestContainer;
interface
uses System.Classes,
Vcl.Controls,
Vcl.Graphics,
Vcl.ExtCtrls, System.SysUtils;
type
TTestContainer=class(TCustomPanel)
private
public
constructor Create(AOwner: TComponent);
destructor Destroy;
override;
published
property Align;
end;
implementation
{ TTestContainer}
constructor TTestContainer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csOpaque];
self.Parent:=AOwner
as TWinControl;
self.BevelWidth:=10;
end;
destructor TTestContainer.Destroy;
begin
inherited;
end;
end.
Erzeugt im Testprogramm:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
tc: TTestContainer;
begin
tc:=TTestContainer.Create(pnl1); //pnl1 ist ein einfaches TPanel auf der Form
tc.Align:=alClient; //Müsste jetzt nicht das TTestContainer das Panel ausfüllen?
end;
Das Ergebnis obigen Codes sie folgendermaßen aus: Siehe Anhang
Liegt das daran, dass ich das erst mal nur als Klasse eingebunden habe (nicht als Komponente registriert) Oder fehlt da noch was entscheidendes?
Mein bisherigen Kompoenten erbten Align einfach von der abgeleiteten Klasse. Ich meine mich nicht erinnern zu können für das Align extra Code erstellt zu haben.
[Edit] Grad noch mal getestet. Auch wenn ich das als Komponente registriere, kann ich das zwar auf meine Form setzen, die Eigenschaft Align ist zwar im
OI auch vorhanden, aber auf eine Änderung auf alClient reagiert die Komponente nicht, und verändert weder die Position noch die Größe [/Edit]