![]() |
Asignar evento OnDrawColumnCell en tiempo de ejecución
Hola amigos !
Por qué no me deja asignar un evento OnDrawColumnCell a un DBGrid en tiempo de ejecución ? Intento, en tiempo de ejecución, hacer : pero el compilador me lanza un error '[Pascal Error] E2009 Incompatible types: 'Parameter lists differ' Por supuesto que en tiempo de diseño funciona perfectamente. Un saludo a todos y gracias por vuestros consejos ! |
Se da por supuesto que son dbgrids del mismo tipo, no serán de distintos componentes, no?
|
No, no ...
Es el mismo Grid. Lo que pasa es que me interesa desactivar en un momento determinado el 'repintado' del Grid. Precisamente cuando voy a hacer un Drag&Drop de varios registros de ese Grid. Cuando termine el Drag&Drop quería volver a asignarle el mismo procedimiento al evento del DBGrid. Y al parecer en tiempo de ejecución no me lo permite. Muy raro. Me pide los parámetros. Pero claro, no sólo entiendo que no hace falta pasarle ahí los parámetros, sino que además si intento pasarle parámetros 'ficticios' tay y como supuestamente me los pide, me salta otro error diciendo que no puedo asignarle el procedimiento a ese evento. Puedo evitar la situación de otras maneras, lo que pasa es que me parecía muy curioso que no pudiera hacer lo que planteo en tiempo de ejecución, ya que en tiempo de diseño todos estamos acostumbrados a hacerlo con el evento OnDraColumnCell. |
Hola gluglu,
Pues la verdad no se que pueda estar ocurriendo pero creo que pueden haber problemas en la forma como estas asignado el evento.... Considero que lo correcto es definir una varaible en dnde puedas guardar el procedimiento (un puntero)...
Luego, en la seccion en donde inhabilitas el procedimiento, guardas el procedimiento (tomado directamente del objeto), asi:
cuando lo quieras habilitar de nuevo, entonces haces la asignaci{on:
Y eso deberia funcionar, y como te digo, considero que es la forma correcta de hacerlo.... Por otro lado, supongo que puedes estar haciendo lo siguiente:
y luego haces la asignaci{on del procedimiento que Delphi crea por defecto
Lo cual en mi compilardor de Delphi 7 no me genera error ni advertencia, pero aun asi no creo que sea una buena tecnica... Es solo una opini{on, pero como te dije en mi compilador no me ocurre, por lo que debe haber algo que estes haciendo diferente... si pudieras copiar el codigo tal vez pudieramos saber que pasa.. Saludos. |
A mí también me funciona bien y sin la variable intermedia:confused:
|
Gracias a los dos por vuestros comentarios.
Delphi 2006 VCL.Net, Proyecto nuevo VCL, un nuevo Form VCL. Incluyo un DBGrid y un Botón. Código : Será de nuevo algo especial del Delphi VCL.Net como me he encontrado otras varias ya. Gracias por la idea de la variable intermedia. |
La única diferencia que he encontrado es esta:
|
La franja horaria es GMT +2. Ahora son las 12:57:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi