LABEL

CARINHENA 28/02/2005 15:33:02
#70365
Tenho um label que é pequeno verticalmente mas, grande horizontalmente.

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
LREZANI 28/02/2005 16:26:25
#70375
Tente colocar a opção AUTOSIZE como true.
CARINHENA 28/02/2005 17:38:32
#70393
Eu usei...
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?
USUARIO.EXCLUIDOS 28/02/2005 18:20:29
#70398
Resposta escolhida
Na verdade o que você quer é um "Wrap Text" da label...
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
USUARIO.EXCLUIDOS 28/02/2005 18:57:10
#70403
Bom, pensando melhor fiz uma rotina básica para resover o problema...espero que atenda sua necessidade...
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

CARINHENA 28/02/2005 19:53:18
#70413
Como eu chamo essa funnção?
Tipo como e aonde eu chamo ela?

um abraço...
CARINHENA 28/02/2005 20:25:07
#70421
na sua função esta acontecendo este erro:

If TextWidth(lblLabel) > lblLabel.Width Then

TextWidth - Sub ou Function not Defined..

Como deve setar o TextWidth??


USUARIO.EXCLUIDOS 28/02/2005 22:09:48
#70429
Pode usar antes um textbox e coloca a opção multiline = true
USUARIO.EXCLUIDOS 01/03/2005 12:45:34
#70537
Olá! eu fiz a correção para que a rotina funcione quando colocada num módulo...

  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
JDBASIC 01/03/2005 13:28:44
#70544
CARINHENA, não sei a configuração das propriedades que você ta usando, mas fiz o teste com um label sem nenhuma de suas propriedades alteradas tipo defaut e ele colocou o texto em duas linhas, ele só quebra o texto que contiver espaços entre as palavras, você pode fazer o testar ai. Valeu?
CARINHENA 02/03/2005 13:50:27
#70739
Acho que deve ser isso.
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?







Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas