Ver Mensaje Individual
  #1  
Antiguo 20-12-2008
waremovil waremovil is offline
Miembro
 
Registrado: ago 2007
Ubicación: Zaragoza
Posts: 78
Reputación: 17
waremovil Va por buen camino
Problema TStringGrid dinámico y evento OnDrawCell

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
Responder Con Cita