Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Difficoltà: 4 / 5
Il controllo FBI Splitter & Sizer è stato progettato per consentire la gestione di un separatore tra due o più controlli, in modo da concedere all'utente la possibilità di trascinare il separatore e ridimensionare o spostare automaticamente tutti i controlli assegnati. Tale genere di controllo è spesso necessario quando si desidera permettere il ridimensionamento del Form e la disposizione dei vari controlli, in modo da riflettere la nuova dimensione ed ampliare o ridurre l'area di lavoro. Il funzionamento generale è mostrato nelle tre figure a fianco: al controllo FBI Splitter & Sizer sono stati assegnati due controlli: una ListBox sul lato sinistro ed una Label posta sul lato destro. Nel momento in cui il puntatore del mouse si posa sopra il separatore (che solitamente è invisibile), cambia la sua forma, ad indicare che ne è possibile il trascinamento, come mostrato nella Figura 1. Sarà quindi possibile afferrare il separatore e trascinarlo su un asse, come mostrato nella Figura 2. Durante il trascinamento il separatore diventa visibile, per consentire un migliore orientamento durante l'operazione. Al termine del trascinamento tutti i controlli assegnati sono automaticamente adattati alla nuova dimensione, come mostrato nella Figura 3, la ListBox è ingrandita, mentre la larghezza della Label è ridotta. Il controllo può esser posto sia orizzontalmente che verticalmente e la sua grandezza è libera. È anche possibile determinare il comportamento dei controlli al termine del trascinamento, cioè se essi devono adattarsi al nuovo spazio oppure devono semplicemente spostarsi senza alterare la dimensione. Sono inoltre consentite due modalità di gestione: una semplice, limitata al ridimensionamento e allo spostamento automatico, ed una più complessa, in grado di ridisporre i controlli automaticamente al ridimensionamento del form. Vedi note (3). Proprietà
Metodi
Eventi
Note All'interno del controllo utente sono dichiarate alcune Enumerazioni utilizzate dalle proprietà e dai metodi: Enum EnumDirection Utilizzata dalla proprietà Direction per indicare l'asse sul quale può essere trascinato il separatore. Vedi Note (2). I valori corrispondono a quelli dell'enumerazione ScrollBarConstants. Enum EnumPosition Utilizzata dal metodo AddObject ed in alcune strutture interne, per indicare la posizione del controllo rispetto al separatore: Superiore o Inferiore quando la proprietà Direction è vbVertical oppure Sinistra o Destra quando la proprietà Direction è vbHorizontal. Enum EnumSplitterAction Utilizzata dal metodo AddObject, determina il comportamento del controllo assegnato rispetto al separatore, ovvero se esso debba essere spostato o ridimensionato. Enum EnumAligned Anche questa è utilizzata dal metodo AddObject, in particolare in combinazione con la proprietà FormSizeCheck, quando questa è impostata su True. Il valore 1 - AlignedToSplitter determina la posizione del controllo, allineata al separatore; il valore 2 - AlignedToBottom determina l'allineamento in fondo al form; infine il valore 3 - AlignedToRight determina l'allineamento sulla destra del form quando questo viene ridimensionato. Il valore AlignedToSplitter può anche essere combinato con gli altri due valori. La proprietà Direction consente di specificare l'asse sul quale il separatore può essere trascinato e corrisponde all'asse opposto a quello grafico. Ad esempio nella figura a fianco il separatore rosso, posto verticalmente, utilizza la proprietà Direction impostata su vbHorizontal in quanto il solo trascinamento possibile è quello orizzontale, a destra o a sinistra. Viceversa il separatore Azzurro utilizza il valore vbVertical, in modo da consentire il trascinamento sul solo asse verticale. La proprietà determina anche il comportamento del valore dell'enumerazione EnumPosition specificato nell'argomento Position del metodo AddObject. Quando Direction utilizza il valore vbVertical, l'argomento Position indica la posizione superiore o inferiore, mentre quando Direction è uguale a vbHorizontal, l'argomento Position riceve i valori sinistra o destra. La proprietà FormSizeCheck specifica se utilizzare la gestione automatica nel ridimensionamento del form. Durante questa fase tutti i controlli associati che presentano i valori AlignedToBottom o AlignedToRight vengono riposizionati ai rispettivi margini inferiore o destro. Ad esempio guardando la figura precedente possiamo notare che la casella di testo in basso è allineata contemporaneamente al bordo destro ed a quello inferiore. Al ridimensionamento del form essa sarà automaticamente riposizionata (mediante spostamento o ridimensionamento) per stare sempre a contatto dei due margini. Inoltre il controllo separatore azzurro è associato a quello rosso ed allineato al margine destro. Viceversa il controllo rosso è associato a quello azzurro ed allineato al margine inferiore, ed entrambi utilizzano il valore SplitterActionResize per ingrandirsi o ridursi in funzione dell'ampiezza della superficie del form. Quando il form si stringe tanto da superare la distanza minima tra bordo e separatore, il controllo è automaticamente spostato a sinistra o verso l'alto per ridisporre i controlli assegnati automaticamente. Si tratta a volte di un comportamento non desiderato e quindi liberamente disattivabile durante la fase di esecuzione. La modalità di gestione avanzata è ancora lontana dalla perfezione, ma avrebbe richiesto tantissime complicazioni per una corretta gestione. Le proprietà WastedHeight e WastedWidth
sono state studiate per riservare una parte dello spazio nei due bordi
destro ed inferiore. Si rivela utile per lasciare gli oggetti allineati
verso un bordo, senza andare a sovrapporli ad altri oggetti preesistenti,
allineati mediante la loro proprietà Alignment. |
Fibia
FBI
|
Torna all'indice dei Controlli utente |