FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Centrar texto StringGrid
Hola a todos, antes de nada decir q he mirado en este foro pero no consigo aclararme con la información que busco, en concreto en este thread:
http://www.clubdelphi.com/foros/show...ght=stringgrid Mi intención es a partir de un evento en un boton, recoger una serie de información y mostrarla en mi StringGrid. Parace que la información la recojo bien y se muestra correctamente, pero me sale el texto justificado a la izquierda. Tras mucho pelearme he conseguido que el texto del nombre de cada columna salga en negrita, pero ahora me gustaría que todo el texto del grid apareciese centrado. Alguien me podría explicar (si es en codigo se agradece), como deberia hacerlo en el evento drawcell? Muchas gracias por anticipado, cualquier respuesta se agradece debido a los cabezazos que llevo ya... jeje Un saludo! |
#2
|
||||
|
||||
Precisamente en ese hilo respondía a la misma pregunta que tu haces. El evento OnDrawCell expuesto se encarga de centrar los textos, sólo tienes que colocar ese código y rellenar las celdas con tus datos sin preocuparte de nada mas.
No termino de entender bien cual es tu duda. Saludos. |
#3
|
|||
|
|||
pues que he probado con muchos codigos y no consigo nada. Con ese en concreto copiando y pegando tal cual me salta el siguiente error en la línea:
Código:
char *Cadena = grid->Cells[ACol][ARow].c_str(); Uso C++ Builder 2010 y en concreto el codigo compreto es: Código:
TStringGrid *grid = dynamic_cast<TStringGrid*>(Sender); HDC dc = grid->Canvas->Handle; char *Cadena = grid->Cells[ACol][ARow].c_str(); StrGridTique->Canvas->Font = StrGridTique->Font; // Ponemos el título en negrita if (ACol>=0 && State.Contains(gdFixed)){ StrGridTique->Canvas->Font->Style = TFontStyles()<< fsBold; } const AnsiString Conceptos[3]= {"Cantidad","Precio ud","Precio"}; if(ARow==0 && ACol==0){ StrGridTique->Canvas->TextOutA(Rect.Left, Rect.Top,"Producto"); } else if(ARow==0){ StrGridTique->Canvas->TextOutA(Rect.Left, Rect.Top, Conceptos[ACol-1] ); } grid->Canvas->Brush->Style = bsClear; DrawText(dc, Cadena, strlen(Cadena), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE ); Un saludo! |
#4
|
||||
|
||||
El problema es que la versión 2010 usa Unicode.
Debes usar la versión unicode de la API DrawText: DrawTextW (el copmpilador lo hace automáticamente) y cambiar la línea Código:
char *Cadena = grid->Cells[ACol][ARow].c_str(); Código:
wchar_t *Cadena = grid->Cells[ACol][ARow].c_str(); |
#5
|
|||
|
|||
Hola, perdona x no contestar antes pero he estado muy liado, gracias por la respuesta.
Tras hacer ese cambio ahora me pasa lo siguiente: Error 1:Cannot convert wchar_t *' to const char * Error 2: Type mismatch in parameter '__s' (wanted 'const char *', got 'wchar_t *') en la 2ª línea: Código:
grid->Canvas->Brush->Style = bsClear; DrawText(dc, Cadena, strlen(Cadena), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE ); Un saludo! |
#6
|
||||
|
||||
Te explico:
Las APIs de Windows Que usan cadenas, tienen dos versiones, la terminada en A y la terminada en W. Para DrawText tenemos internamente DrawTextA y DrawTextW. Lo normal es que el compilador escoja ya apropiada según si usa Unicode (W) o no (A). Usa la versión DrawTextW; Código:
DrawTextW(dc, Cadena, wcslen(Cadena), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE ); Código:
DrawTextW(grid->Canvas->Handle, grid->Cells[ACol][ARow].c_str(), grid->Cells[ACol][ARow].Length(), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Centrar imagen que esta en las celdas de un StringGrid | gulder | Varios | 4 | 11-12-2008 19:48:02 |
Centrar texto en un memo | Tilk | Varios | 1 | 12-11-2008 01:19:13 |
Centrar el texto de un edit | Sayuri | Varios | 2 | 19-03-2008 21:28:59 |
Centrar el texto de una columna en el componente DrawGrid | Aprendiendo | OOP | 0 | 30-09-2004 00:55:00 |
Centrar bmp en celda de stringgrid | mosorio | OOP | 2 | 31-03-2004 06:15:27 |
|