Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Alinear texto dentro de una celda de StringGrid

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Alinear texto dentro de una celda de StringGrid Responder citando

Hola!

Tengo una StringGrid en la que el usuario introduce los datos directamente en las celdas. Necesito saber cómo hacer que el texto aparezca centrado.

Muchas gracias!

Volver arriba
Mensaje    Asunto: Alinear texto dentro de una celda de StringGrid Responder citando

Lo que quieres hacer, es relativamente sencillo. Se basa en a partir del ancho de la celda activa y el ancho del texto a escribir, indicar al control donde tiene que empezar a escribir.

Por ejemplo, el codigo anterior justifica a la derecha el texto a escribir. (El formulario se llama FormPrincipal, y el StringGrid se llama Tabla). El evento que debes usar es el DrawCell del control.

void __fastcall TFormPrincipal::TablaDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
// Variable de trabajo.
TStringGrid *Grid = dynamic_cast<TStringGrid*>(Sender);

//Escribimos el texto a la derecha de la celda
Grid->Canvas->TextRect(Rect, (Rect.Left + (Rect.Width() - Canvas->TextWidth(Tabla->Cells[ACol][ARow]))-5), (Rect.Top + 2), Grid->Cells[ACol][ARow]);
}
}

Para centrar el texto... tienes que restar al ancho de la celda, el ancho del texto y dividirlo entre 2.

Espero que te sirva.

Volver arriba
Mensaje    Asunto: Alinear texto dentro de una celda de StringGrid Responder citando

Muchas gracias Natalia, voy a probar a ver si puedo arreglar algo con esto. Pero pensé que habría alguna propiedad que permitiera que el cursor apareciera inicialmente en el medio de la celda para que el texto apareciera centrado.
Si lo hago de la forma que me dices, tengo que esperar a que el usuario termine de escribir el texto para poder centrarlo ¿no?

Gracias y un saludo!

Volver arriba
Mensaje    Asunto: Alinear texto dentro de una celda de StringGrid Responder citando

Efectivamente, el centrado se realiza cuando se actualiza el contenido de la celda, pero eso es un problema secundario. No he encontrado otra manera de hacer lo que tu quieres, pero te aseguro que funciona perfectamente.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.