Fissare la distanza di un oggetto in modo costante rispetto ai bordi del Form durante il suo ridimensionamento

Da Gambas-it.org - Wikipedia.

Per mantenere la distanza costante di un oggetto rispetto ad uno o più bordi del Form durante il ridimensionamento manuale di tale Form con il mouse o da codice, bisogna utilizzare l'evento _Resize() della Classe Form.

Riguardo al tipo di distanza costante tenuta dall'oggetto durante il ridimensionamento del Form contenitore, possiamo considerare almeno tre casi:

1°) Distanza dinamica proporzionale rispetto alle coordinate X,Y (ossia all'angolo superiore sinistro dell'oggetto). La distanza conservata è riferita all'angolo superiore sinistro dell'oggetto, ed è prporzionale alla dimensione del Form nel suo modificarsi. Essa viene impostata semplicemente assegnando alle proprietà X e Y (o anche ad uno solo di esse) il prodotto della correlata dimensione (.Width con .X e .Height con .Y) del Form contenitore e della distanza in percentuale che si vuole sempre tenere dal margine del Form.

2°) Distanza dinamica proporzionale rispetto all'angolo supriore destro del Button. Sostanzialmente simile alla precedente, ma il punto di riferimento della distanza non è più l'angolo superiore sinistro (delle proprietà .X e .Y dell'oggetto), bensì quello destro. Alla moltiplicazione già vista nel caso precedente va aggiunta la sottrazione della correlata dimensione (.Width con .X e .Height con .Y) dell'oggetto.

3°) Distanza dinamica assoluta, ossia la distanza fissa del lato destro dell'oggetto dal margine destro del Form contenitore. Essa viene impostata sommando la correlata dimensione (.Width con .X e .Height con .Y) dell'oggetto alla distanza fissa che si vuole mantenere in ogni caso, meno la correlata dimensione del Form contenitore.


Esempio pratico (poniamo 3 Button sul Form):

Public Sub Form_Resize()
 
' Distanza dinamica proporzionale rispetto a X,Y (angolo superiore sinistro del "Button"):
 Button1.X = Me.W * 0.7
 Button1.Y = Me.H * 0.5
 
' Distanza dinamica proporzionale rispetto all'angolo supriore destro del "Button":
 Button2.X = (Me.W * 0.8) - Button2.W
 Button2.Y = (Me.H * 0.8) - Button2.H
 
' Distanza dinamica assoluta (distanza fissa del lato destro ed inferiore del "Button"
' rispettivamente dal margine destro ed inferiore del "Form"):
 Button3.X = Me.W - (Button3.W + 20)
 Button3.Y = Me.H - (Button3.H + 200)

End