Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #17  
Antiguo 26-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Pues toma el bucle del objeto TScreen. Al contrario de lo que parece, ese objeto mantiene una lista de todas tus ventanas creadas.

TFrmCliente(Screen.Forms[1]).Loquesea
Screen.Forms[2].Close;

Tienes varias formas:
- Programando el OncloseQuery de tal manera que al ordenar el cierre de esa ventana, se ejecuta dicho evento, que tomará las decisiones oportunas. En este caso no puedes diferenciar si el usuario cerró la ventana o es el Idle.

- Creando un procedimiento "universal" y heredando.
La idea es crear un FormBase que implemente el procedimiento de cierre. Ahora todas tus ventanas heredan de él (no es complejo), y cada uno hace lo que tenga que hacer.

Esto es lo que uso con más de 30 ventanas y es una maravilla. File -> new Form:
Código Delphi [-]
type TBaseForm = Class(TForm)

public
   procedure Cierra(...parametros); virtual;abstract; 
end;
Lo guardas como "UBaseForm.pas"

Ahora abres tus ventanas, las que ya tienes en tu programa, se verán así:
Código Delphi [-]

type TFrmCliente = class(TForm) 
....
....
end;
La modificas para que quede así (a mano, vamos):
Código Delphi [-]
uses UBaseForm;

type TFrmCliente = class(TBaseForm) <<<<<<<< Ahora hereda de nuestra ventana
....
public
  procedure Cierra(... mismos parametros); override; <<<<<< declaramos la funcion y le decimos que vamos a redefinir (override) su comportamiento
....

end;

implementation

procedure TFrmCliente.Cierra(... mismos parametros); <<<<< La implementamos, claro.
begin
 lo que tenga que hacer esta ventana.
end;

Ahora puedes hacer un bucle por el objeto TScreen, haciendo que cada ventana ejecute su propio código:
Código Delphi [-]
for i:=0 to screen.FormCount-1 do
   TBaseForm(Forms[i]).Cierra

En realidad, esto se llama herencia visual y se hace al revés, es decir, primero creas el BaseForm y cada vez que necesites una ventana nueva vas a File -> new -> (pestaña con el nombre de tu programa) -> elijes el TBaseForm y aceptas.

Cómo tú ya tienes todas las ventanas creadas, tienes que hacerlo a mano.

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-03-2008 a las 16:13:47.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Bloquear aplicacion despues de cierto tiempo Marcela Conexión con bases de datos 26 16-04-2017 23:47:23
Cerrar ventana a los 10 min. de inactividad jamonete2 OOP 4 10-06-2005 18:18:53
Detectar paso a inactividad oworty API de Windows 2 07-11-2004 14:22:17
Desconexion de la aplicacion por inactividad utilizando META mamen .NET 10 08-09-2004 14:52:52
Desconexion de la aplicacion por inactividad mamen .NET 8 14-07-2004 08:32:42


La franja horaria es GMT +2. Ahora son las 03:05:37.


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