Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2010
Avatar de Estifmauin
Estifmauin Estifmauin is offline
Miembro
 
Registrado: may 2008
Ubicación: Alicante
Posts: 24
Poder: 0
Estifmauin Va por buen camino
Detectar la creación de un formulario

Hola a todos.
Estoy desarrollando una aplicación con un montón de formularios, y en tiempo de diseño pongo comodines que en runtime deben ser substituidos por otras cadenas:
Ejempo: en un Caption de un botón pongo 'Dar de baja el {artículo}', pero en runtime debe cambiar a 'Dar de baja el chisme' o 'Dar de baja el armatoste' en función del perfil del usuario que lo está utilizando.

Actualmente en cada evento FormCreate llamo a un método que hace este trabajo, y a otros que colorean los formularios y cambian las fuentes... pero eso me obliga a escribir todas las llamadas en cada unit de cada Form.
Odio hacer trabajos repetitivos, pero como me preocupa olvidarme de ponerlo, cada 2 x 3 me encuentro repasando todo el código.

¿Conocéis alguna manera de que mi aplicación me notifique que un nuevo formulario ha sido creado, y lance algún evento para que pueda hacerle mi tratamiento de belleza al formulario recién creado?
Me sorprende que el objeto Application no disponga de algo así.
¿Tal vez una función de Callback?

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 30-11-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por Estifmauin Ver Mensaje
...
Actualmente en cada evento FormCreate llamo a un método que hace este trabajo, y a otros que colorean los formularios y cambian las fuentes... pero eso me obliga a escribir todas las llamadas en cada unit de cada Form.
Odio hacer trabajos repetitivos, pero como me preocupa olvidarme de ponerlo, cada 2 x 3 me encuentro repasando todo el código.
Y por qué no usaste herencia visual para eso y te olvidas de estar programando la misma cosa para cada formulario.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 01-12-2010
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
De hecho no hace falta ni siquiera herencia visual. Simplemente crea una clase que derive de TForm y todos tus formularios que deriven de esta nueva (no hace falta ni siquiera que tenga formulario, ni que modifiques los que ya tienes) y en ella sobreescribes el método Create, o si es demasiado pronto (si tienes que inicializar cosas y tal), sobreescribes el AfterCreation, que se encargue de llamar a quien tenga que llamar.

Un saludo,
LoPiTaL
Responder Con Cita
  #4  
Antiguo 02-12-2010
Avatar de JoseAntonio
JoseAntonio JoseAntonio is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lima - Ciudad de los Reyes.
Posts: 87
Poder: 19
JoseAntonio Va por buen camino
Quizas programas demasiado rapido y no te das tiempo de verificar tus propios programas, tomate tu tiempo esto no es una competencia
__________________
nuestro carácter está reflejado en cada línea de código que escribimos.
Responder Con Cita
  #5  
Antiguo 05-12-2010
Avatar de Estifmauin
Estifmauin Estifmauin is offline
Miembro
 
Registrado: may 2008
Ubicación: Alicante
Posts: 24
Poder: 0
Estifmauin Va por buen camino
Vale... herencia visual. Nunca lo he usado, y por lo que he visto es algo muy potente, aunque no se ajusta a las necesidades de este proyecto concreto.
Además, si no he entedido mal lo que he ojeado, eso me obliga de nuevo a revisar todas las units de las pantallas para redeclararlas. Y de nuevo me encuentro con el problema de poder olvidarme en algún caso. Se trata de una app con 93 formularios (y creciendo).

Lo que me proponéis esta bien, es un campo que me puede ayudar en futuros desarrollos, pero ahora me sería muy útil conseguir lo que planteo al inicio, es decir, simplemente que mi aplicacion lanze un evento diciéndome que se ha creado un nuevo formulario de la clase X. En función de si es un mantenimiento, hacer una cosa, si es un report hacer otra, si se trata de un diálogo, otra distinta. Tiro de RTTI, y le aplico los cambios oportunos a sus componentes. Además, en algunas de ellas, necesito hacer una estadística de uso x usuario, y en otros casos, lanzar un timer que la bloquea al cabo de unos minutos, tembién traducciones...

En fin... que lo que necesito es algo muy concreto.
¿A alguen se le ocurre la manera de hacerlo?

Y aquí quiero hacer una aclaracion para JoseAntonio:
Si. Trabajo muy deprisa, es lo que impone la empresa para la que trabajo, me gustaría hacerlo con toda la calma, investigando la manera mas eficiente de implementar cada mejora. También me gustaría que me pagasen un super-curso de técnicas avanzadas, pero en 5 años no me han pagado ni un café.
A veces, en mi tiempo libre, o cuando hago mis "chapuzillas", programo con más calma, intentando aprender cosas nuevas, ya que tengo una gran curiosidad y no me da miedo enfrentarme a lo nuevo.
Pero si, lo normal es que trabaje con unos plazos bastante ajustados. Hago lo que puedo, y sólo compito con mi tiempo.
Sé que intentas ayudar, pero por favor, no seas pedante.


Responder Con Cita
  #6  
Antiguo 05-12-2010
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
Pues así a priori no se me ocurre ninguna forma de detectar creación de formularios sin introducir ninguna clase intermedia, así que (si nadie dice ninguna técnica diferente) te tocará revisar uno por uno todos los formularios que lleváis creados. Creo que sólo puedes detectar formularios cuando se abren (no cuando se crean) en modo modal, mediante un evento del objeto Application. Tal vez te pudiese valer, pero te recomiendo que pierdas cierto tiempo revisando todos los forms.
Lo ves como algo malo (y es cierto, si son casi 100...), pero piénsalo como una mejora, y que, más adelante, posiblemente necesites algo nuevo que necesiten todos ellos y volverás a estar en la misma situación, así que, tarde o temprano, terminarás necesitándolo, así que más vale ahora que son 100, que después que serán 200.
Tal como lo veo, sólo necesitas en todos los formularois cambiar la declaración y ya está, SIN NECESITAR MODIFICAR FORMULARIOS. Después insertar la nueva clase que sobreescriba el método Create. Tal vez te lleve unas (dos?, tres?) horas revisar todos los formularios, así que tampoco va a ser tanto suplicio (una mañana o así) y, para más adelante, ya estarás en disposición de insertar cualquier mejora de golpe para todos los formularios (sobreescribiendo funciones, insertando nuevas, etc...).

Un saludo,
LoPiTaL
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Creacion de Formulario Efren2006 OOP 4 04-03-2009 20:38:47
Detectar boton Minimizar Formulario Gabriel Varios 2 10-03-2008 17:59:19
Detectar creacion de carpeta nueva. JuanErasmo API de Windows 8 15-06-2007 16:49:38
Creación de formulario frholguin Varios 9 04-04-2007 22:51:50
Creación Formulario ibarrols Varios 1 03-08-2003 17:40:45


La franja horaria es GMT +2. Ahora son las 02:34:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi