Hola, a ver si alguien me puede decir qué es lo que se me está escapando
He trabajado antes muchas veces con stringGrids pero no de manera dinámica (siempre los creaba desde la barra de componentes)
pues bien, ahora instancio dinámicamente un objeto TStringGrid
el problema viene a la hora de personalizarlo. Como es normal establezco la propiedad "DefaultDrawing = false" para poder dibujarlo yo, hasta ahi ok
entonces intento definir un método OnDrawCell propio
SGrid->OnDrawCell = MiDrawCell;
aquí viene el problema, me salta el siguiente error:
[C++ Error] FUsers.cpp(341): E2034 Cannot convert
'void (_fastcall * (_closure )(TObject *,int,int,TRect &,TGridDrawState))(TObject *,int,int,TRect &,TGridDrawState)' to
'void (_fastcall * (_closure )(TObject *,int,int,const TRect &,TGridDrawState))(TObject *,int,int,const TRect &,TGridDrawState)'
como podeis ver me pide que en la definición de mi método defina TRect como
const
efectivamente, si lo hago así , me permite compilar pero entonces no puedo personalizar el grid (no me permite variar TRect)
sin embargo cuando trabajo con StringGrids estáticos, en la definición del método automáticamente lo define como NO-CONSTANTE
Ejemplo:
void __fastcall TFormMain::GridModulosDrawCell(TObject *Sender, int ACol,
int ARow,
TRect &Rect, TGridDrawState State)
Esto es válido en estático, en dinámico me obliga a que sea así:
void __fastcall TFormMain::GridModulosDrawCell(TObject *Sender, int ACol,
int ARow,
const TRect &Rect, TGridDrawState State)
alguien sabe por qué? necesito solventar esto y no veo información al respecto, parece que nadie en el mundo necesitara definir sus propios StringGrids de forma dinámica
gracias por adelantado