FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Envento OnCreate para todos los Forms
Hola señores.
En el dia de hoy tengo la siguiente inquietud -Tengo una aplicacion MDI con 100 forms que se crean en ejecucion, segun lo requiera el usuario resulta que deseo hacer que cada form en su evento OnCreate() ejecute una instruccion, seria muy dispendioso copiar la instruccion en cada form, hay alguna forma de que cada vez que se intente crear una de esas pantallas pase primero por otro evento oncreateXX() desde mi formulario MDI Gracias. |
#3
|
|||
|
|||
Gracias por la Respuesta
Precisamente eso es lo ke kiero evitar,
deseo detectar que ventana se va a crear y en ese momento adicionarle el nuevo evento Gracias por la respuesta |
#4
|
||||
|
||||
Hola,
Tal vez como dice el compañero puedas preparar un formulario del que heredarán los que sean menester. Puedes hacerlo "visualmente", creando el formulario y añadiéndolo al inspector de objetos de Delphi. En todo caso la cosa sería más o menos así, en mi opinión:
Y a partir de ahí a heredar de "TFormEx", es decir:
Para que cuando crees una instancia de "TForm1" se ejecute el constructor de "TFormEx", en el que puedes codificar... aquello que necesites. |
#5
|
||||
|
||||
Pues se me ha ocurrido algo que puede ser interesante, un programa que modifique todos los archivos de una sola tacada.
Partimos de la base que los .pas son ficheros de texto planos, así que podemos cargarlos en un Memo ¿o no? Pues vale, preparamos un programa que pueda abrir múltiples archivos (opendialog con multiselect a true) y procedemos a abrirlos secuencialmente. (Necesitamos una rutina PosEx(substring, cadena:string, index:integer):Integer que pueda buscar el substring dentro de la cadena, a partir del indice index, hay rutinas por la red de este tipo) Ahora cargamos el contenido del .pas en un StringList y buscamos el texto "class(TForm)", se supone que esa parte de nuestro .pas jamás lo hemos modificado, ya que todos heredan de él. línea que buscamos:
Pues ya solo queda buscar el texto TFrmclientes.FormCreate y encontramos el constructor. Buscamos el próximo "begin" y después insertamos las líneas de código que queramos. Otra opción es abrir el .dfm (si es texto) y buscar el nombre del evento OnCreate de cada Form, de esa forma no tenemos que buscar tantas veces en el .pas, además solventa un posible error de cambio de nombre del evento, hay veces que en el inspector de objetos, en lugar de dar doble clic, escribimos un nombre y entonces el evento no sigue el patrón descrito en la primera opción. Edito: acabo de ver la opción del dfm y es mucho más interesante, precisamente porque la primera linea del archivo nos da el tipo de la clase "Tfrmgrupo" en este caso, después solo queda buscar un texto "OnCreate" eso si, siempre y cuando no haya la palabra "object" antes.
Saludos Salvamos el StringList y cargamos el siguiente.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 26-01-2007 a las 12:22:46. |
#6
|
||||
|
||||
Ya puestos, podríamos crear un programa que le añada herencia a los 100 Forms, y añada el "uses " correspondiente.
Solo tenemos que buscar "uses" en el .pas y añadir el formulario base que queremos crear, después buscar "class(TForm)" y sustituir ese "TForm" por "UBaseForm" siendo éste último nuestra forma de la que heredan todos. (Quizás es más complejo, porque tendríamos que añadir el "override" en el OnCreate de cada Form hijo, y su llamada "inherited Create (AOwner);") Al final te veo copiando y pegando ... Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 26-01-2007 a las 12:38:58. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear Form en ejecucion y OnCreate | FGarcia | Varios | 2 | 17-06-2006 16:02:04 |
ShowMessage dentro de OnCreate | gluglu | Varios | 3 | 13-11-2005 16:44:04 |
Organizar ventanas y ver todos los forms | recata | Varios | 2 | 11-10-2005 17:26:33 |
Saludo para todos | edwin1 | OOP | 4 | 08-10-2003 15:51:04 |
Felix día para todos | edwin1 | OOP | 3 | 06-10-2003 17:58:17 |
|