Comprensione del proprietario rispetto al genitore nelle applicazioni Delphi

Ogni volta che si posiziona un pannello su un modulo e un pulsante su quel pannello si crea una connessione "invisibile". La forma diventa la proprietario del pulsante e il pannello è impostato per essere suo genitore.

Ogni componente di Delphi ha una proprietà Owner. Il proprietario si occupa di liberare i componenti di proprietà quando vengono liberati.

Simile, ma diversa, la proprietà Parent indica il componente che contiene il componente "figlio".

Genitore

Parent si riferisce al componente in cui è contenuto un altro componente, ad esempio TForm, TGroupBox o TPanel. Se un controllo (padre) ne contiene altri, i controlli contenuti sono controlli figlio del padre.

Parent determina come viene visualizzato il componente. Ad esempio, le proprietà Sinistra e Superiore sono tutte relative al Genitore.

La proprietà Parent può essere assegnata e modificata durante il runtime.

Non tutti i componenti hanno il genitore. Molte forme non hanno un genitore. Ad esempio, i moduli che appaiono direttamente sul desktop di Windows hanno Parent impostato su zero. Un componente hasParent Il metodo restituisce un valore booleano che indica se al componente è stato assegnato o meno un genitore.

Usiamo la proprietà Parent per ottenere o impostare il parent di un controllo. Ad esempio, posizionare due pannelli (Panel1, Panel2) su un modulo e posizionare un pulsante (Button1) sul primo pannello (Panel1). Ciò imposta la proprietà Parent di Button su Panel1.

 Button1.Parent: = Panel2; 

Se si inserisce il codice sopra nell'evento OnClick per il secondo pannello, quando si fa clic su Pannello2 il pulsante "salta" da Pannello1 a Pannello2: Pannello1 non è più il genitore del pulsante.

Quando si desidera creare un pulsante TB in fase di esecuzione, è importante ricordare di assegnare un genitore: il controllo che contiene il pulsante. Perché un componente sia visibile, esso deve avere un genitore per mostrarsi all'interno.

ParentThis e ParentThat

Se selezioni un pulsante in fase di progettazione e controlli la finestra di ispezione degli oggetti, noterai diverse proprietà "Consapevoli dei genitori". Il ParentFont, ad esempio, indica se il carattere utilizzato per la didascalia del pulsante è uguale a quello utilizzato per il genitore del pulsante (nell'esempio precedente: Pannello1). Se ParentFont è True per tutti i pulsanti di un pannello, la modifica della proprietà Font del pannello in grassetto fa sì che tutte le didascalie del pulsante sul pannello utilizzino quel carattere (grassetto).

Proprietà dei controlli

Tutti i componenti che condividono lo stesso genitore sono disponibili come parte di controlli proprietà di quel genitore. Ad esempio, è possibile utilizzare i controlli iterare su tutti i figli del controllo con finestre.

Il prossimo pezzo di codice può essere usato per nascondere tutti i componenti contenuti su Panel1:

 per ii: = 0 per Panel1.ControlCount - 1 fare

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