Differenze tra le versioni di "Adattare la dimensione di un Oggetto grafico al testo contenuto"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
La presente pagina considera i Controlli grafici (''widget'') che posseggono la Proprietà ".Text" o similare, alla quale assegnare una stringa di testo, ma non sono costituiti da un'area di testo. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 
La presente pagina considera i Controlli grafici (''widget'') che posseggono la Proprietà ".Text" o similare, alla quale assegnare una stringa di testo, ma non sono costituiti da un'area di testo. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 
   
 
   
Per adattare la dimensione di un Oggetto grafico al testo in esso contenuto, sono possibili alcune modalità.
+
Per adattare la dimensione di un Oggetto grafico al testo in esso contenuto, si può adottare il seguente codice: <SUP>&#091;[[#Note|nota 2]]&#093;</sup>
 
+
  Public Sub Form_Open()
===Usando la Proprietà ".AutoResize" del Controllo grafico===
 
Per adattare il Controllo grafico al suo testo contenuto, sarà sufficiente usare la sua Proprietà ".AutoResize", <SPAN Style="text-decoration:underline">se supportata</span> dal Controllo medesimo, assegnandole il valore "True", garantendo nel contempo un adeguata visibilità del testo contenuto.
 
 
 
Mostriamo un esempio usando un ''Button'':
 
  Private Button1 As Button
 
 
   
 
   
 +
  Dim hButton As Button
 
   
 
   
'''Public''' Sub Form_Open()
+
  With Me
+
    .W = 500
   With Button1 = New Button(Me) As "Button1"
+
    .H = 500
     .X = 100
+
  End With
 +
   With hButton = New Button(Me) As "Button"
 +
     .X = 10
 
     .Y = 100
 
     .Y = 100
     .W = 100
+
     .W = 10
     .H = 30
+
     .H = 10
     <FONT Color=#B22222>.AutoResize = True</font>
+
     .AutoResize = True
     .Text = "Testo"
+
    .Text = "Il testo del Button1"
 +
  End With
 +
  With hButton = New Button(Me) As "Button"
 +
    .X = 10
 +
    .Y = 200
 +
    .W = 10
 +
    .H = 10
 +
    .AutoResize = True
 +
     .Text = "Il testo di Button2\nSu\nTre righe"
 
   End With
 
   End With
 
   
 
   
  '''End'''
+
  End
 
   
 
   
'''Public''' Sub Button1_Click()
 
 
<FONT Color=gray>' ''Assegna al Button il nuovo testo da mostrare:''</font>
 
  Button1.Text = "Questo è il nuovo testo contenuto dal Button"
 
 
 
'''End'''
 
 
 
===Inserendo l'Oggetto grafico nel Contenitore grafico "HBox"===
 
Si potrà anche inserire il Controllo grafico all'interno di un  Contenitore "HBox". Si assegnerà altresì alla Proprietà ".AutoResize" di entrambi gli Oggetti grafici il valore "True".
 
 
Mostriamo un esempio usando un ''ToggleButton'':
 
Private ToggleButton1 As ToggleButton
 
Private HBox1 As HBox
 
 
   
 
   
 +
Public Sub Button_Click()
 
   
 
   
'''Public''' Sub Form_Open()
+
  Dim i As Integer
 
   
 
   
   Dim s As String = "testo"
+
   Last.Font.Size = 24
    
+
   Last.Font.Bold = True
   With HBox1 = New HBox(Me)
+
   i = ControlHeight(Last.Text, Last.Font)
    .X = 100
+
  If i > 0 Then Last.H = i
    .Y = 100
 
    .H = 30
 
    .AutoResize = True
 
  End With
 
 
   
 
   
  With ToggleButton1 = New ToggleButton(hBox1) As "ToggleButton1"
+
End
    .X = HBox1.X
 
    .Y = HBox1.Y
 
    .W = HBox1.W
 
    .H = HBox1.H
 
    .AutoResize = True
 
    .Text = s
 
  End With
 
 
   
 
   
  '''End'''
+
  Private Function ControlHeight(sText As String, hFont As Font) As Integer
 
   
 
   
'''Public''' Sub ToggleButton1_Click()
+
  Dim i As Integer
 +
  Dim DS As Integer = Desktop.Scale
 
   
 
   
   With ToggleButton1
+
' Ottengo le righe meno 1:
    If .Value Then  
+
   If String.InStr(sText, "\n") > 0 Then  
      .Text = "Questa è la prima riga\n questa invece è la seconda riga"
+
    i = Split(sText, "\n").Max
    Else  
+
  Else If String.InStr(sText, "&#060;br>") > 0 Then
      .Text = "Testo"
+
    i = Split(sText, "&#060;br>").Max
     Endif  
+
  Else
   End With
+
     Return 0
 +
  Endif
 +
   Return ((i + 1) * hFont.Height) + (DS * 2)
 
   
 
   
  '''End'''
+
  End
  
  
Riga 77: Riga 62:
 
=Note=
 
=Note=
 
[1] Vedere anche questa pagina: [[Ridurre in un Oggetto grafico o di testo la dimensione del font se il testo ha una lunghezza superiore a quella dell'Oggetto]]
 
[1] Vedere anche questa pagina: [[Ridurre in un Oggetto grafico o di testo la dimensione del font se il testo ha una lunghezza superiore a quella dell'Oggetto]]
 +
 +
[2] Questo codice è stato proposto dal membro [https://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum www.gambas-it.org.

Versione delle 09:08, 25 giu 2023

La presente pagina considera i Controlli grafici (widget) che posseggono la Proprietà ".Text" o similare, alla quale assegnare una stringa di testo, ma non sono costituiti da un'area di testo. [nota 1]

Per adattare la dimensione di un Oggetto grafico al testo in esso contenuto, si può adottare il seguente codice: [nota 2]

Public Sub Form_Open()

 Dim hButton As Button

 With Me
   .W = 500
   .H = 500
 End With
 With hButton = New Button(Me) As "Button"
   .X = 10
   .Y = 100
   .W = 10
   .H = 10
   .AutoResize = True
   .Text = "Il testo del Button1"
 End With
 With hButton = New Button(Me) As "Button"
   .X = 10
   .Y = 200
   .W = 10
   .H = 10
   .AutoResize = True
   .Text = "Il testo di Button2\nSu\nTre righe"
 End With

End


Public Sub Button_Click()

 Dim i As Integer

 Last.Font.Size = 24
 Last.Font.Bold = True
 i = ControlHeight(Last.Text, Last.Font)
 If i > 0 Then Last.H = i

End

Private Function ControlHeight(sText As String, hFont As Font) As Integer

 Dim i As Integer
 Dim DS As Integer = Desktop.Scale

' Ottengo le righe meno 1:
 If String.InStr(sText, "\n") > 0 Then 
   i = Split(sText, "\n").Max
 Else If String.InStr(sText, "<br>") > 0 Then
   i = Split(sText, "<br>").Max
 Else 
   Return 0
 Endif
 Return ((i + 1) * hFont.Height) + (DS * 2)

End


Note

[1] Vedere anche questa pagina: Ridurre in un Oggetto grafico o di testo la dimensione del font se il testo ha una lunghezza superiore a quella dell'Oggetto

[2] Questo codice è stato proposto dal membro Gianluigi del forum www.gambas-it.org.