Differenze tra le versioni di "Posizione equidistante di un Oggetto rispetto al margine destro del suo Contenitore e ad un punto alla sua sinistra"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 8: Riga 8:
 
* ''Punto'' è il valore della coordinata x del punto posto anch'esso all'interno del Contenitore e comunque alla sinistra dell'Oggetto grafico.
 
* ''Punto'' è il valore della coordinata x del punto posto anch'esso all'interno del Contenitore e comunque alla sinistra dell'Oggetto grafico.
  
Mostriamo di seguito un esempio pratico, nel quale si ha un ''Button'' da posizionare in modo equidistante fra il margine destro del ''Form'' e una sottile ''Label'':
+
Mostriamo di seguito un esempio pratico, nel quale si ha un ''Button'' da posizionare in modo equidistante fra il margine destro del ''Form'' e un punto alla sua (del ''Button'') sinistra qui rappresentato per ragioni meramente didttiche da una sottilissima ''Label'':
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
Riga 35: Riga 35:
 
   
 
   
 
  End
 
  End
 +
Se, invece del punto, abbiamo sul ''Form'' un Oggetto grafico con una sua estensione in lunghezza maggiore di 1 (come era per motivi didattici nell'esempio sopra), e desideriamo impostare l'equidistanza del lato sinistro del "Button" dal <U>lato destro</u> "Label" e dal lato destro del "Button" dal margine destro del suo Contenitore, allora la formula sarà la seguente:
 +
Button1.X = ((Me.W + <FONT Color=#B22222>(Label1.X + Label1.W)</font>) / 2) - (Button1.W / 2)
  
  

Versione attuale delle 13:04, 16 nov 2024

Per posizionare un Oggetto grafico all'interno del suo Contenitore, in modo tale che la distanza del suo lato sinistro rispetto a un punto posto alla sua sinistra sia uguale alla distanza del suo lato destro dal margine destro del suo Contenitore, si può adottare la seguente formula: [nota 1]

Oggetto.X = (((Margine_destro - Punto) / 2) + Punto) - (Oggetto.W / 2)

che può essere così ridotta:

Oggetto.X = ((Margine_destro + Punto) / 2) - (Oggetto.W / 2)

laddove:

  • Oggetto è l'Oggetto grafico (Controllo) da posizionare;
  • Margine_destro è il valore della larghezza orizzontale del Contenitore (Contenitore.Width);
  • Punto è il valore della coordinata x del punto posto anch'esso all'interno del Contenitore e comunque alla sinistra dell'Oggetto grafico.

Mostriamo di seguito un esempio pratico, nel quale si ha un Button da posizionare in modo equidistante fra il margine destro del Form e un punto alla sua (del Button) sinistra qui rappresentato per ragioni meramente didttiche da una sottilissima Label:

Public Sub Form_Open()

 Me.W = 400

 With Label1
   .X = 41
   .W = 1
   .H = 40
   .Background = Color.Red
 End With

 With Button1
   .W = 37
' Assicura che il "Button" sia posto comunque a destra della "Label":
   .X = Label1.X + 10
 End With

End


Public Sub Button1_Click()

' Calcola e imposta l'equidistanza del lato sinistro del "Button" dalla "Label" e dal lato destro del "Button" dal margine destro del suo Contenitore:
 Button1.X = ((Me.W + Label1.X) / 2) - (Button1.W / 2)

End

Se, invece del punto, abbiamo sul Form un Oggetto grafico con una sua estensione in lunghezza maggiore di 1 (come era per motivi didattici nell'esempio sopra), e desideriamo impostare l'equidistanza del lato sinistro del "Button" dal lato destro "Label" e dal lato destro del "Button" dal margine destro del suo Contenitore, allora la formula sarà la seguente:

Button1.X = ((Me.W + (Label1.X + Label1.W)) / 2) - (Button1.W / 2)


Note

[1] In via generale questa formula è utile per definire l'equidistanza - orizzontale in questo caso - di un punto rispetto ad altri due.