elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Centrar texto en un listbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Centrar texto en un listbox  (Leído 8,437 veces)
karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.614


Sueñas que sueñas


Ver Perfil WWW
Centrar texto en un listbox
« en: 25 Agosto 2006, 21:23 pm »

Esta es una pregunta que llevo mucho tiempo intentando resolver y sin éxito..
A ver si alguno sabe cómo centrar texto en un listbox..

Hasta ahora lo que he hecho es utilizar la letra Courier que es proporcional y así calculo el centro sabiendo los caracteres que caben en un listbox.
A ver si a alguien se le ocurre algo mejor..
Gracias


En línea

karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.614


Sueñas que sueñas


Ver Perfil WWW
Re: Centrar texto en un listbox
« Respuesta #1 en: 26 Agosto 2006, 23:14 pm »

Al final he conseguido algo que puede ser útil. El problema es que alineo el texto utilizando espacios y el problema de los espacios es que ocupan varios píxeles, dependiendo de cada letra. Por este motivo la alineación es buena pero no es perfecta, por culpa de estos píxeles de los espacios..

He intentado insertar datos al listbox utilizando sendmessage:
SendMessage(List1.hwnd, LB_ADDSTRING, 0, ByVal "dato"), pero no he conseguido ver ninguna constante de SendMessage que permita empezar a escribir en una determinada coordenada..
Si alguien tiene alguna idea más o a qué API podría echar un vistazo...(se tiene que poder hacer de alguna forma.)

Dejo mi código. Sólo hay que poner un listbox: List1 y un Label: Label1.

Código:
'*******************************************************
'*      Código para centrar texto en un listbox        *
'* Hay que añadir: 1 listbox: List1 y 1 label: Label1. *
'*                                                     *
'*              Realizado por karmany                  *
'*******************************************************


Private Sub Form_Load()
  Label1.AutoSize = True
  List1.AddItem (centrar("centro"))
  List1.AddItem (centrar("karmany"))
  List1.AddItem (centrar("oil"))
  'LTrim para recuperar el item original.
End Sub

Public Function centrar(text As String) As String

  Dim tamtexto As Integer, tamlist As Integer, tamreal As Integer
  Dim tamspc As Integer, espacios As Integer

  Label1.Font.Name = List1.Font.Name 'Nombre de la letra
  Label1.FontSize = List1.FontSize 'Tamaño de la letra
  Label1.FontBold = List1.FontBold 'Negrita
  Label1.FontItalic = List1.FontItalic 'Cursiva

  'Calcula el tamaño de un espacio:
  Label1.Caption = " "
  tamspc = Label1.Width

  'Calcula el tamaño del texto:
  Label1.Caption = text
  tamtexto = Label1.Width

  'Calcula el tamaño del listbox:
  tamlist = List1.Width

  'Calcula el tamaño que hay que poner delante del texto:
  tamreal = Int(tamlist - tamtexto) / 2

  'Calcula el número de espacios que hay delante del texto:
  espacios = Int(tamreal / tamspc) - 1

  centrar = Space(espacios) & text

End Function


En línea

karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.614


Sueñas que sueñas


Ver Perfil WWW
Re: Centrar texto en un listbox
« Respuesta #2 en: 29 Agosto 2006, 17:04 pm »

Después de comerme bastante la cabeza he hecho por fín un código que alinea texto en un listbox.
Estoy dando los últimos retoques. Lo subiré también a la Web de elGuille.
Terminado por fín--

El código completo está bien explicado en la web de elGuille:

http://www.elguille.info/colabora/vb2006/karmany_centrartextolistbox.htm

He estado también intentando hacer lo mismo de alguna forma más sencilla(y que fuera perfectamente precisa), pero no he conseguido hacer funcionar nada más.
Pienso que con estos dos ejemplos que he puesto ya no tiene que haber ningún problema.

Lo único es que si pones un título, no lo pongas en sus propiedades centrado(ej. un textbox o label centrado), ya que como también he dicho, a veces el ancho del listbox no se puede calcular correctamente y se verá el título desplazado. Y eso queda muy poco estético.
El título hay que tratarlo como un ítem más, así devolverá un valor que después habrá que transformar a scalemode del form y por último hay que pensar en la distancia que hay entre la izquierda del form y la izquierda del list que en definitiva es el Left del List.
Bueno si tienes alguna duda respecto a esto, házmelo saber y te lo explico.
« Última modificación: 31 Agosto 2006, 21:09 pm por karmany » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Centrar un DIV y que se acople al texto
Desarrollo Web
abmptc 9 5,266 Último mensaje 3 Febrero 2012, 13:55 pm
por abmptc
[C#] Insertar valor y texto en un ListBox
.NET (C#, VB.NET, ASP)
Shell Root 1 5,945 Último mensaje 23 Septiembre 2013, 22:22 pm
por leogtz
¿Como aumentar y centrar el texto en Dev C++? ¡Ayuda!
Programación C/C++
JeesLooVe 0 5,977 Último mensaje 11 Mayo 2015, 19:02 pm
por JeesLooVe
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines