Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Komponentenentwicklung und der Owner Parameter
JRegier - Di 24.05.05 16:06
Titel: Komponentenentwicklung und der Owner Parameter
Hallo, ich habe vor ca. eine Woche angefangen Komponenten zu entwickeln!
Im constructor wo ich Owner übergebe stelle ich auch Owner als Parent der neuen Komponente!
Ist das richtig?
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!
Ich muß die Komponente dann im Objectinspector auf die GroupBox ziehen!
Wie wird dann Parent bei der Entwicklung einer Komponente richtig gesetzt?
Ich mache das so:
Self.Parent := TWinControl(Owner);
Oder z.B habe ich von einer TCustomPanel abgeleitet und ich setze Caption := '';
aber er zeigt mir trotztdem Caption an!
Moderiert von
Tino: Titel geändert.
Moderiert von
Tino: Delphi-Tags hinzugefügt.
Grendel - Di 24.05.05 16:19
Titel: Re: Frage zu Komponentenentwicklung!!!!!!!!!!!!!!!!!!!!!!!!!
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 ...
JRegier - Mi 25.05.05 12:41
Titel: Re: Frage zu Komponentenentwicklung!!!!!!!!!!!!!!!!!!!!!!!!!
Also ich setze auf ein TCustomPanel mehrere Componenten! Wenn ich den Parent des TCustomPanel
nicht gleich setze dann kommt ne Fehlermeldung!
Und das mit dem Caption habe ich einfach bei
GetCaption der published properties auf '' <-leer gesetzt
und Delphi diese function aufruft um Caption anzuzeigen dan wird die
eben '' hmm...
Grendel - Mi 25.05.05 12:45
Titel: Re: Frage zu Komponentenentwicklung!!!!!!!!!!!!!!!!!!!!!!!!!
JRegier hat folgendes geschrieben: |
Wenn ich den Parent des TCustomPanel
nicht gleich setze dann kommt ne Fehlermeldung! |
Wenn Du den Parent nicht gleich was setzt?
JRegier hat folgendes geschrieben: |
Und das mit dem Caption habe ich einfach bei
GetCaption der published properties auf '' <-leer gesetzt
und Delphi diese function aufruft um Caption anzuzeigen dan wird die
eben '' hmm... |
Sorry, aber ich verstehe beim besten Willen nicht, was Du mir damit sagen möchtest :?
Bis neulich ...
JRegier - Mi 25.05.05 12:55
Titel: Re: Frage zu Komponentenentwicklung!!!!!!!!!!!!!!!!!!!!!!!!!
Also hauptsächlich dass Caption det TCustomPanel verschwindet! Als ich habe in den published Properties eine Eigenschaft die Delphi beim erzuegen der Komponente aufruft und da setze ich Caption auf leer -> ''
Oder gibts andere Panels auf die ich bei der Komponentenentwicklung aufsetzen kann?
Grendel - Mi 25.05.05 13:08
Titel: Re: Frage zu Komponentenentwicklung!!!!!!!!!!!!!!!!!!!!!!!!!
JRegier hat folgendes geschrieben: |
Wenn ich Parent nicht gleich Owner setze! |
Und welche Meldung? Denn eigentlich müssen Parent und Owner nicht gleich sein. Sieht man ja schon dadran, daß Owner TObject und Parent TWinControl ist.
JRegier hat folgendes geschrieben: |
Also hauptsächlich dass Caption det TCustomPanel verschwindet! Als ich habe in den published Properties eine Eigenschaft die Delphi beim erzuegen der Komponente aufruft und da setze ich Caption auf leer -> '' |
Ich verstehe immer noch nicht wo das Problem ist bzw. was Du gemacht hast. Zeig mal den Quellcode her.
JRegier hat folgendes geschrieben: |
Oder gibts andere Panels auf die ich bei der Komponentenentwicklung aufsetzen kann? |
Nö, TCustomPanel ist schon korrekt.
Bis neulich ...
JRegier - Mi 25.05.05 13:21
Titel: Re: Frage zu Komponentenentwicklung!!!!!!!!!!!!!!!!!!!!!!!!!
Grendel hat folgendes geschrieben: |
Ich verstehe immer noch nicht wo das Problem ist bzw. was Du gemacht hast. Zeig mal den Quellcode her.
|
Hmm.. leider hab ich den Code auf einem anderen Computer!
Und mit dem Caption mach ich schon!
Aber mit dem Parent .. wen ich den Parent vom Panel nicht setze auf Owner da meldet er mir
"Komponente hat kein Übergeordnetes Fenster", wenn ich versuche einer anderen
Componente den Parent auf Panel setzen!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!