 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Dom 08 Jun, 2003 10:39 pm Asunto: Alinear items TListBox a la derecha |
|
|
Pues eso mismo, si alguien sabe como hacerlo le estaré agradecido si me lo explica.
Gracias. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Marky Master

Registrado: 28 Dic 2002Mensajes: 251Ubicación: Las Rozas - Madrid (España)
|
Publicado: Lun 09 Jun, 2003 6:32 pm Asunto: |
|
|
La solución es sencilla. En primer lugar debes cambiar la propiedad Style del TListBox lbOwnerDrawFixed
| Código: |
void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
TRect rect(Rect);
if(State.Contains(odSelected))
{
ListBox1->Canvas->Font->Color = clWhite;
ListBox1->Canvas->Brush->Color = clNavy;
}
else
{
ListBox1->Canvas->Font->Color = ListBox1->Font->Color;
ListBox1->Canvas->Brush->Color = ListBox1->Color;
}
ListBox1->Canvas->FillRect(rect);
DrawText(ListBox1->Canvas->Handle, ListBox1->Items->Strings[Index].c_str(),
ListBox1->Items->Strings[Index].Length(), &rect,
DT_CENTER | DT_VCENTER | DT_SINGLELINE );
}
|
Esto te daría el texto centrado verticalmente y horizontalmente.
Si quieres cambiar la posición del texto puedes aplicar las combinaciones que hay en la ayuda para la función DrawText. Hay varias combinaciones posibles por eso aquí solo te pongo 2. Por ejemplo:
Centrado Verticalmente y alineado a la derecha
| Código: |
DrawText(ListBox1->Canvas->Handle, ListBox1->Items->Strings[Index].c_str(),
ListBox1->Items->Strings[Index].Length(), &rect,
DT_RIGHT | DT_VCENTER | DT_SINGLELINE );
|
Centrado Verticalmente y alineado a la izquierda
| Código: |
DrawText(ListBox1->Canvas->Handle, ListBox1->Items->Strings[Index].c_str(),
ListBox1->Items->Strings[Index].Length(), &rect,
DT_LEFT | DT_VCENTER | DT_SINGLELINE );
|
Ya me dirás si te ha funcionado |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Lun 09 Jun, 2003 11:12 pm Asunto: |
|
|
Muchas gracias Marky por tu respuesta, ha funcionado a la perfección.
. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Marky Master

Registrado: 28 Dic 2002Mensajes: 251Ubicación: Las Rozas - Madrid (España)
|
Publicado: Mar 10 Jun, 2003 8:52 am Asunto: |
|
|
Hola otra vez!!!
En realidad el código se podría simplidicar ya las líneas siguientes no son necesarias:
| Código: |
else
{
ListBox1->Canvas->Font->Color = ListBox1->Font->Color;
ListBox1->Canvas->Brush->Color = ListBox1->Color;
}
|
y se podría dejar el código final como:
| Código: |
TRect rect(Rect);
if(State.Contains(odFocused)) <---Cambiando el "odSelected" por "odFocused"
{
ListBox1->Canvas->Font->Color = clWhite;
ListBox1->Canvas->Brush->Color = clNavy;
}
ListBox1->Canvas->FillRect(rect);
DrawText(ListBox1->Canvas->Handle, ListBox1->Items->Strings[Index].c_str(),
ListBox1->Items->Strings[Index].Length(), &rect,
DT_CENTER | DT_VCENTER | DT_SINGLELINE );
|
Nos vemos!!!! |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|