LABEL
Se colocar o nome: "João Luiz", tudo bem...
Mas, se colocar o nome "João Luiz Pereira da Costa" não cabe do label, e ao invez desse "restante" do nome ir para a linha de baixo (como um texto) não, ele vai na vertical e corta o nome da pessoa...
Existe alguma forma de fazer com que caso o nome todo não caiba "verticalmente" no label, almenos didtribua de forma igual no horizontal?
preciso muito dessa ajuda...
Carinhena
Mas, ele apenas aumenta o label no sentido da "Esquerda para Direita", e preciso que o texto seja distribuido da pelo label todo, ou seja, no sentido "esquerda para direita", caso não couber, ele coloque o restante na linha debaixo.. e não ficar "cortado" entende?
Talvez um UserControl te ajude nesse caso (há outras maneiras)...Mas a mais rápida nesse caso é um controle label já pronto...Tenta!
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=34507&lngWId=1
Citação:Public Sub WrapLabel(lblLabel As Label)
If TextWidth(lblLabel) > lblLabel.Width Then
Dim Caracte As Integer
Dim Quebras As Integer
Dim Linha As String
Dim Final As String
For Caracte = 1 To Len(lblLabel)
If TextWidth(Linha) >= lblLabel.Width Then
If TextWidth(Linha) > lblLabel.Width Then
Linha = Left$(Linha, Len(Linha) - 1)
Caracte = Caracte - 1
End If
Final = Final & Linha & vbCrLf
Quebras = Quebras + 1
Linha = Empty
End If
Linha = Linha & Mid(lblLabel, Caracte, 1)
Next Caracte
Final = Final & Linha & vbCrLf
Quebras = Quebras + 1
Linha = Empty
lblLabel.Height = TextHeight(lblLabel) * Quebras
Else
Final = lblLabel
End If
lblLabel = Final
End Sub
Tipo como e aonde eu chamo ela?
um abraço...
If TextWidth(lblLabel) > lblLabel.Width Then
TextWidth - Sub ou Function not Defined..
Como deve setar o TextWidth??
Public Sub WrapLabel(lblLabel As Label)
If lblLabel.Container.TextWidth(lblLabel) > lblLabel.Width Then
Dim Caracte As Integer
Dim Quebras As Integer
Dim Linha As String
Dim Final As String
For Caracte = 1 To Len(lblLabel)
If lblLabel.Container.TextWidth(Linha) >= lblLabel.Width Then
If lblLabel.Container.TextWidth(Linha) > lblLabel.Width Then
Linha = Left$(Linha, Len(Linha) - 1)
Caracte = Caracte - 1
End If
Final = Final & Linha & vbCrLf
Quebras = Quebras + 1
Linha = Empty
End If
Linha = Linha & Mid(lblLabel, Caracte, 1)
Next Caracte
Final = Final & Linha & vbCrLf
Quebras = Quebras + 1
Linha = Empty
lblLabel.Height = lblLabel.Container.TextHeight(lblLabel) * Quebras
Else
Final = lblLabel
End If
lblLabel = Final
End Sub Coloque este código em um módulo... ^-^
Para chamar a rotina em um Form, por exemplo:
Private Sub Command1_Click()
Label1.Caption = Text1.Text
WrapLabel Label1
End Sub
Quis usar o nome com exemplo, pq achei mais facil.
Mas, vou explicar melhor:
Eu coloco um caminho de um arquivo neste label, porem, quando o caminho é muito grande fica um visual feio pq corta um "pedaço" do caminho.
Mas, imagine uma coisa.
O seu exemplo procura um " " (espaço) estre as palavras certo?
Não tem alguma maneira de que ao invez de procurar por um espaço, procure pelo ultimo "\" e colocar tudo depois desse "\" na linha de baixo?
ex:
c:\Windows\algumacoisa\aqui\arquivo.txt
então fique:
c:\Windows\algumacoisa\
aqui\arquivo.txt
tem esse jeito?