FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Abstraer eventos comunes a varios objetos (forms, dbgrids, etc)
Hola amigos del foro. Recurro a ustedes para que me orienten a resolver el problema que tengo a la hora de tratar de modularizar o abstraer métodos (procedures) comunes.
En mi aplicación se me ha presentado el caso donde tengo en varios forms una grilla (DBGrid) asociada a un dataset y el cual al hacerle click en el título ordeno la grilla (dataSet) por el campo clickeado. Como este método siempre es igual, lo que yo quiero hacer es hacerlo una sola vez y luego en cada grilla que quiera que tenga este evento, asignarle al evento 'OnTitleClick' el método genérico mío. Pero no sé dónde ubicar este método o donde definirlo para que lo pueda ver desde cualquier Form y poder asignarlo a cualquier DBGrid. De más está decir que la definición de mi método es exactamente igual (tiene la misma estructura de parámetros) a la que te define solo Delphi al hacerle doble click al evento 'OnTitleClick'. He probado a definir este método en una Unit global que uso para almacenar métodos, funciones y variables globales o comunes a toda mi aplicación; pero no hay caso . Desde los otros forms no me permiten asignar este método desde el Object Inspector de una DBGrid cualquiera. Donde debo definirlo entonces?? Creo que este problema es bastante común y puede presentarse en cualquier caso (métodos comunes a todos los 'OnShow' de un Form por ejemplo, etc, etc). Espero me puedan orientar un poco. Desde ya muchas gracias. Saludos, Ariel |
#2
|
||||
|
||||
Quizá lo más adecuado sería derivar una nueva componente a partir del DBGrid y redefinir su método TitleClick:
Pero tiene el "inconveniente" de tener que instalar la nueva componente si es que quieres usarla desde la paleta de componentes. Otra opción, muy sencilla, es hacer uso de un frame (File|New|Frame) en donde colocas un DBGrid y programas su evento OnTitleClick como ya sabes. Luego, basta que insertes el frame en cualquier formulario donde lo necesites. Y una tercera opción que se me ocurre, para estar acorde con tu unidad global, es usar una clase de eventos:
Lo único malo con esto, es que no puedes asignar el evento desde el inspector de objetos, pero puedes hacerlo por código:
Nota que no es necesario crear una clase de tipo TGlobalEvents; basta usar la clase en sí. // Saludos |
#3
|
|||
|
|||
Hola Roman, muchas gracias por tu pronta respuesta.
La verdad que me ha sido de gran utilidad y he usado la tercer opción que mencionas para mantener la estructura que vengo desarrollando. Muchas gracias nuevamente. Saludos, Ariel |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Como puedo trabajar con varios forms en delphi PHP? | fredo | PHP | 1 | 13-06-2007 18:20:06 |
Varios forms, frames y un Data Module | gluglu | Varios | 1 | 07-04-2005 19:28:51 |
Funciones comunes a varios Forms | gluglu | Varios | 10 | 06-01-2005 20:23:04 |
problema con app con varios forms y barra de tareas | kalisto | Varios | 1 | 15-08-2004 17:25:15 |
eventos en objetos | Nidia H. Ochoa | OOP | 4 | 27-02-2004 04:17:07 |
|