Muchisimas gracias por la respuesta, pero... sigo teneniendo un problema ...
Resulta q el texto se centra bien, pero me sale dos veces, a la izquierda y centrado
Lo que me gustaría es que se viera todo centrado tanto en la fila 0 que es fija (y en negrita) como en todos los campos.
Yo lo que hago es a partir de una serie de botones, recojo unos campos y hago que se muestren en el string grid usando:
Código:
StrGridTique->Cells[0][posFila]=DBText->Caption;
y controlando posFila voy añadiendo registros y diferentes nombres en el Caption del DBText.
Y luego en el evento hago:
Código:
void __fastcall TfrmMain::StrGridTiqueDrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State)
{
TStringGrid *grid = dynamic_cast<TStringGrid*>(Sender);
HDC dc = grid->Canvas->Handle;
wchar_t *Cadena = grid->Cells[ACol][ARow].c_str();
grid->Canvas->Brush->Style = bsClear;
DrawTextW(grid->Canvas->Handle, grid->Cells[ACol][ARow].c_str(), grid->Cells[ACol][ARow].Length(), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
StrGridTique->Canvas->Font = StrGridTique->Font;
// Ponemos el título en negrita
if (ACol>=0 && State.Contains(gdFixed)){
StrGridTique->Canvas->Font->Style = TFontStyles()<< fsBold;
}
// Preparamos la rejilla con el tique
const AnsiString Conceptos[3]= {"Precio unitario","Cantidad","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] );
}
else if (ARow>0){
tposFila=ARow;
bEditarCantidad=true;
}
}
Uff perdona por mi insistencia, pero es que voy dando tumbos constantemente, veo que la solución está cerca pero no consigo llegar, jeje
Muchísimas gracias por adelantado.
Un saludo!