JRegier hat folgendes geschrieben: |
Im constructor wo ich Owner übergebe stelle ich auch Owner als Parent der neuen Komponente!
Ist das richtig? |
Jein! Es ist nicht ganz falsch aber auch nicht richtig. Der Owner ist nicht zwangsläufig das selbe Object wie der Parent.
Üblicherweise weist man bei Steuerelementen den Parent nach den Create manuell zu.
Der Owner ist der Besitzer des Objektes, der es auch wieder freigibt. Der Parent ist das Fensterelement (WinControl) auf dem es angezeigt wird. Manchmal ist es das selbe Object aber nicht zwingend.
JRegier hat folgendes geschrieben: |
Wenn ich die neue Komponente aus der Komponentenpalette wähle und auf z.B. eine GroupBox klicke dann wird die Komponente ins Formular und nicht in die GroupBox gesetzt! |
Also mein Delphi 7 verhält sich nicht so. Da landet der Button in der GroupBox.
Oder passiert das bei einer deiner Komponenten?
Dass wäre dann nämlich der typische Fall von Owner in Parent umgebogen.
Der Owner des Buttons ist das Formular der Parent aber die GroupBox. Wenn Du nun Parent := TWinControl(Owner) setzt wird das Form zum Parent und nicht der Owner.
JRegier hat folgendes geschrieben: |
Wie wird dann Parent bei der Entwicklung einer Komponente richtig gesetzt? |
Normalerweise musst Du dich darum nicht kümmern. Zur Designzeit setzt die IDE den Parent und zur Laufzeit muss man das selber machen.
Wenn Du z.B. einen TButton zur Laufzeit erzeugst musst Du den Parent auch manuell zuweisen.
JRegier hat folgendes geschrieben: |
Ich mache das so: Self.Parent := TWinControl(Owner); |
Lass es. s.o.
JRegier hat folgendes geschrieben: |
Oder z.B habe ich von einer TCustomPanel abgeleitet und ich setze Caption := '';
aber er zeigt mir trotztdem Caption an! |
Dazu müsste ich mal den Code sehen.
Bis neulich ...