Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

scorpio

Tres pontinhos...

Recommended Posts

Aop!

 

 

Sem rodeios....

 

tem alguma função, que quando um texto não cabe um um label, ele poe tre pontinhos... ?

 

 

eu não queria fazer algo assim

MsgBox(Me.Corpo.Substring(0, 30) & "...")

Por que

 

WWW é maior que

iii

e poderia cortar o texo do mesmo jeito....

 

 

To pesando em fazer algo pegando o comprimento do texto, mas vai da um pouco de trabalho já q o label tem duas linhas :P

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Questão interessante, não tenho idéia de como fazer.

Como você faria para descobrir o tamanho do texto?

Acho que a Library System.Drawning pode ter algo que te ajude...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagem Postada

 

Texto: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco "

 

 

O primeiro label esta com o texto normal.

O segundo está com o texto resumido. Ficou OK.]

Já o terceiro, não apareceu os ..., ficou como se fosse na linha debaixo.

 

Antes eu tinha colocado esse Me.CreateGraphics dentro da função... notei uma direferença na performance deichando fora.. rs

'Para chamar
		Dim G As Graphics
		G = Me.CreateGraphics
		Dim texto As String = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco "
		Label8.Text = texto
		Label9.Text = ResumiTexto(texto, Label9.Width, Label7.Font, G)
		Label7.Text = ResumiTexto(texto, Label7.Width * 2, Label7.Font, G)

'Função
	Public Function ResumiTexto(ByVal Texto As String, ByVal Tamanho As Integer, ByVal Fonte As Font, ByVal g As Graphics) As String
		Dim TamanhoTexto As SizeF
		TamanhoTexto = g.MeasureString(Texto, Label7.Font)
		If (TamanhoTexto.Width + g.MeasureString("...", Fonte).Width > Tamanho) Then
			Texto = Texto.Substring(0, Texto.Length - 1)
			Return ResumiTexto(Texto, Tamanho, Fonte, g)
		Else
			Return Texto & "..."
		End If
	End Function

Já da pra brinca com isso... rssr

 

 

--------------

 

Mudei a função pra isso

 

Public Function ResumiTexto(ByVal Texto As String, ByVal Tamanho As Integer, ByVal Fonte As Font, ByVal g As Graphics) As String
		Dim TamanhoTexto As SizeF
		TamanhoTexto = g.MeasureString(Texto, Label7.Font)
		If (TamanhoTexto.Width + g.MeasureString("...", Fonte).Width > Tamanho) Then
			Texto = Texto.Substring(0, Texto.LastIndexOf(" "))'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
			Return ResumiTexto(Texto, Tamanho, Fonte, g)
		Else
			Return Texto & "..."
		End If
	End Function

Acho q vai ficar melhor.. quebrar por palavra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana, não conhecia a função MeasureString.

Resolveu o problema ou ainda está dando erro ali na terceira?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha.. minha idéia mesmo era fazer um prog. pra verifica emails e avisa qunaod chega.. se você usa o outllok 2003 ou 2007 ve umas janelinhas pulando na sua tela... ou até mesmo no MSN.. eu ia fazer mais ou menos isso...

 

mas agora ta aperta a facul.. 27.542.425.423.654.234 trabalhos pra entrega e 2 dias pra faze :lol:

 

quando tiver um pouco mais de tempo eu volto nisso...

 

 

mas mesmo dessa ultima for continua dando errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está ali naquelas setas?

Eu acho que deve ser usado IndexOf ao invés de LastIndexOf, você precisa pegar até o primeiro espaço começando da posição onde o texto passou dos limites.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está ali naquelas setas?

Eu acho que deve ser usado IndexOf ao invés de LastIndexOf, você precisa pegar até o primeiro espaço começando da posição onde o texto passou dos limites.

Essa função já funciona, mas tem aquele problema da imagem GIF.

 

 

Essa função ae vai ser executada enquanto o comprimento for maior, vai retirando as palavras até que fique do tamanho do label.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei um jeito melhor de fazer

 

        Windows.Forms.TextRenderer.DrawText(e.Graphics, TEXTO, FONTE, SYSTEM.DRAWING.RECTANGLE, COR, Windows.Forms.TextFormatFlags.WordBreak _
                                                                                            Or Windows.Forms.TextFormatFlags.EndEllipsis _
                                                                                            Or Windows.Forms.TextFormatFlags.TextBoxControl)

Assim ficou show de bola!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.