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.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per posizionare un Oggetto grafico all'interno del suo Contenitore, in modo tale che esso sia equidistante sia rispetto al margine destro del suo Contenitore che ad un punto posto alla sua sinistra, si può adottare la seguente formula:  <SUP>&#091;[[#Nota|nota 1]]&#093;</sup>
+
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:  <SUP>&#091;[[#Nota|nota 1]]&#093;</sup>
 
  Oggetto.X = (((Margine_destro - Punto) / 2) + Punto) - (Oggetto.W / 2)
 
  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:
 
laddove:
 
* ''Oggetto'' è l'Oggetto grafico (''Controllo'') da posizionare;
 
* ''Oggetto'' è l'Oggetto grafico (''Controllo'') da posizionare;
Riga 12: Riga 14:
 
   
 
   
 
   With Label1
 
   With Label1
     .X = 40
+
     .X = 41
 
     .W = 1
 
     .W = 1
 
     .H = 40
 
     .H = 40
Riga 18: Riga 20:
 
   End With
 
   End With
 
   
 
   
 +
  With Button1
 +
    .W = 37
 
  <FONT Color=gray>' ''Assicura che il "Button" sia posto comunque a destra della "Label":''</font>
 
  <FONT Color=gray>' ''Assicura che il "Button" sia posto comunque a destra della "Label":''</font>
  Button1.X = Label1.X + 200
+
    .X = Label1.X + 10
 +
  End With
 
   
 
   
 
  End
 
  End
Riga 26: Riga 31:
 
  Public Sub Button1_Click()
 
  Public Sub Button1_Click()
 
   
 
   
   <FONT Color=#B22222>Button1.X = <B>(((Me.W - Label1.X) / 2) + Label1.X) - (Button1.W / 2)</b></font>
+
   <FONT Color=#B22222>Button1.X = <B>((Me.W + Label1.X) / 2) - (Button1.W / 2)</b></font>
 
   
 
   
 
  End
 
  End
 +
  
  
 
=Note=
 
=Note=
[1] In via generale questa formula è utile per definire l'equidistanza di un punto rispetto ad altri due, tutti posti sulla medesima retta.
+
[1] In via generale questa formula è utile per definire l'equidistanza - orizzontale in questo caso -  di un punto rispetto ad altri due.

Versione attuale delle 02:48, 26 giu 2023

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 una sottile 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()

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

End


Note

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