[Gambas-user] Label control
    gian 
    bagoneo at libero.it
       
    Thu Jun 16 16:08:55 CEST 2022
    
    
  
Il 15/06/22 14:52, gian via User ha scritto:
> Il 15/06/22 00:26, Steve via User ha scritto:
>> I am attempting to populate a label control. The text on the control 
>> will vary. The size of the control does not. Is there a way to detect 
>> when the text Will overflow the control so that I can split the text 
>> up properly to display? This would be in the case where there is 
>> sufficient vertical room but not horizontal. Also the font size will 
>> vary.
> 
> The TextLabel has Autoresize and Wrap properties that, if i undestand, 
> you should need.
> Why can't you use them?
> 
> Regards
> Gianluigi
> 
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
OK, I didn't understand :-)
Then try this code in a new graphic project:
'-------------------------------------------------------------------
Public Sub Form_Open()
   Dim s As String = "Lorem ipsum dolor sit amet, consectetur 
adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore 
magna aliqua."
   Dim iRows, iHeight, iNew As Integer
   Dim iFontHeight As Integer
   Dim fProp As Float
   Dim hFont As Font
   Dim hTextLabel As TextLabel
   With hTextLabel = New TextLabel(Me) As "TextLabel1"
     .X = 50
     .Y = 50
     .W = 100
     .H = 100
     .AutoResize = False
     .Wrap = True
     .Text = s
     .Border = 1
     hFont = .Font
   End With
   iRows = Rows(hTextLabel.Text, hTextLabel.Width, hFont)
   While (iRows * hFont.Height) > hTextLabel.Height
     hFont.Size -= 0.5
     iRows = Rows(hTextLabel.Text, hTextLabel.Width, hFont)
   Wend
End
Private Function Rows(value As String, iWidth As Integer, hFont As Font) 
As Integer
   Dim i As Integer
   Dim ss As String[]
   Dim sRow As String
   If hFont.TextWidth(value) < iWidth Then Return 1
   ss = Split(value, " ")
   For Each s As String In ss
     sRow &= " " & s
     If hFont.TextWidth(sRow) > iWidth Then
       sRow = s
       Inc i
     Endif
   Next
   Return i + 1
End
'--------------------------------------------------
Regards
Gianluigi
    
    
More information about the User
mailing list