Inzicht in eigenaar versus ouder in Delphi-toepassingen

Telkens wanneer u een paneel op een formulier en een knop op dat paneel plaatst, maakt u een "onzichtbare" verbinding. De vorm wordt de eigenaar van de knop en het paneel is ingesteld als zijn ouder.

Elk Delphi-onderdeel heeft de eigenschap Eigenaar. De Eigenaar zorgt voor het bevrijden van de eigen componenten wanneer deze worden vrijgegeven.

Op dezelfde manier, maar anders, geeft de eigenschap Parent de component aan die de component 'child' bevat.

Ouder

Ouder verwijst naar de component waarin zich een andere component bevindt, zoals TForm, TGroupBox of een TPanel. Als één besturingselement (ouder) andere bevat, zijn de opgenomen besturingselementen onderliggende besturingselementen van de ouder.

Ouder bepaalt hoe de component wordt weergegeven. De eigenschappen Left en Top zijn bijvoorbeeld allemaal relatief ten opzichte van de ouder.

De eigenschap Parent kan tijdens runtime worden toegewezen en gewijzigd.

Niet alle componenten hebben de ouder. Veel formulieren hebben geen ouder. Voor formulieren die rechtstreeks op het Windows-bureaublad verschijnen, is Ouder bijvoorbeeld ingesteld op nul. Een component HasParent methode retourneert een booleaanse waarde die aangeeft of aan het onderdeel een ouder is toegewezen.

We gebruiken de eigenschap Parent om de ouder van een besturingselement op te halen of in te stellen. Plaats bijvoorbeeld twee panelen (Panel1, Panel2) op een formulier en plaats een knop (Button1) op het eerste paneel (Panel1). Hiermee wordt de eigenschap Parent van Button ingesteld op Panel1.

 Button1.Parent: = Panel2; 

Als u de bovenstaande code in de OnClick-gebeurtenis voor het tweede deelvenster plaatst, wanneer u op deelvenster 2 klikt, springt de knop "van" naar deelvenster1: deelvenster 1 is niet langer de ouder voor de knop.

Wanneer u tijdens de uitvoering een TButton wilt maken, is het belangrijk dat we niet vergeten een ouder toe te wijzen - het besturingselement dat de knop bevat. Voor een component zichtbaar te zijn, het moet een ouder hebben om zichzelf binnen te laten zien.

ParentThis en ParentThat

Als u tijdens het ontwerp een knop selecteert en naar de Object Inspector kijkt, ziet u verschillende "ouderbewuste" eigenschappen. De ParentFont, geeft bijvoorbeeld aan of het lettertype dat wordt gebruikt voor het bijschrift van de knop hetzelfde is als het lettertype dat wordt gebruikt voor het bovenliggende element van de knop (in het vorige voorbeeld: deelvenster 1). Als ParentFont waar is voor alle knoppen op een paneel, zorgt het wijzigen van de eigenschap Lettertype van het paneel ervoor dat alle bijschriften op het paneel dat (vetgedrukte) lettertype gebruiken.

Beheert eigendom

Alle componenten die dezelfde ouder delen, zijn beschikbaar als onderdeel van de controls eigendom van die ouder. Besturingselementen kunnen bijvoorbeeld worden gebruikt itereer over alle kinderen van de raambediening.

Het volgende stuk code kan worden gebruikt om alle ingesloten componenten op Panel1 te verbergen:

 voor ii: = 0 naar Panel1.ControlCount - 1 Doen

   Panel1.Controls [ii] .Visible: = false;