![]() |
Komponente Align funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Erzeugt im Testprogramm:
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.
Delphi-Quellcode:
Das Ergebnis obigen Codes sie folgendermaßen aus: Siehe Anhang
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; 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] |
AW: Komponente Align funktioniert nicht
Hmm..
Neue Projekt, nen Button und nen Panel draufgeschmissen, deinen Source Copy%Paste (mit Anpassen Panel-Name) und... Das per Btn.Click erzeugte Panel füllt das Owner-Panel aus... Somit sollte dies funktionieren... JEDOCH, ich hab das hier mit Delphi6 getestet... ;) |
AW: Komponente Align funktioniert nicht
Ergänze das Create mal bitte um
Delphi-Quellcode:
Bei Delphi 7 wirkt die Zuweisung eines Werte auf Align (meist) nur dann, wenn sich der Wert von Align ändert.
self.Align := alNone;
|
AW: Komponente Align funktioniert nicht
Zitat:
Übrigens muss das
Delphi-Quellcode:
constructor Create(AOwner: TComponent); override;
heißen! |
AW: Komponente Align funktioniert nicht
Hm...okay.
Längere Pause gemacht. Alles noch mal verworfen. Neues Projekt, unit erzeugt, Code per C&P reinkopiert. Läuft. Warum, kann ich nicht nachvollziehen. Sorry, ich hatte den Fehler bei mir gesucht. @Uwe: Danke für den Hinweis. |
AW: Komponente Align funktioniert nicht
Wieso setzt Du eigentlich explizit den Parent mit dem Owner gleich? Wenn man installierte Komponenten auf einem Container-Control platziert, bekommen die üblicherweise das Formular als Owner, man möchte aber eigentlich das Container-Control als Parent, oder?
|
AW: Komponente Align funktioniert nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz