Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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
  #5  
Antiguo 23-10-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 16
engranaje Va por buen camino
Normalmente añadir un nuevo form a un proyecto, en la misma unit de form de declara una variable del tipo del form:
Código Delphi [-]
 var   FBusquedaClientes: TFBusquedaClientes;

Esa variable estara disponible dese cualquier unit que tenga en el uses la unit en la que está definida el form. De modo que con añadir uBusquedaClientes en el uses podremos trabajar con ella cuando este instanciada la clase o instanciarla si no lo estuviera. Si solo se puede tener una instancia de esa clase a la vez de modo que no puedan mostarse simultaneamente dos formularios de busqueda distintos. Puede hacerse sin problema
Código Delphi [-]
  if Not Assigned(FBusquedaClientes) then     
     FBusquedaClientes:= TFBusquedaClientes.Create(Self);   
  FBusquedaClientes.Caption := 'Texto';   
  FBusquedaClientes.Show;

En este caso y a no ser que que en onclose de FBusquedaClientes hayamos puesto un action := cafree una vez mostremos el formulario una vez, se creará, y despues de cerrarlo no se destruirá de modo que cada vez que lo volvamos a llamar ya estará creado y realmente siempre se estará utilizando la misma instancia del form. En estos casos hay que tener ojo con lo que se pone en el oncreate del form y tener en cuenta que solo se llamará una vez. Personalmente me parece que este método tiene más limitaciones que:
Código Delphi [-]
  
var
 fBusqudaClientesTemp:TFBusquedaClientes;
begin
  try    
    Application.CreateForm(TFBusquedaClientes, fBusqudaClientesTemp);     
    fBusqudaClientesTemp.ShowModal;   
  finally     
    FBusquedaClientesTemp.Free;   
  end;
end;

De este modo solo habrá en memoria una instancia del form cuando se esté utilizando. Al utilizar una variable local y no la global de la que hablaba al principio de este post podemos tener mar varias instancias distintas de la misma clase abiertas a la vez si fuera necesario. De hecho yo suelo hacer un formulario de busqueda genérico de modo que un parámetro en el create decida que es lo que se va a buscar, algo del tipo:
Código Delphi [-]
  
   with TFormBusqueda.Create(self,iTipoBusqueda)do
   begin
     Caption := 'Texto';      
     Show;
   end;

En este caso podriamos tener abierta a la vez varias ventanas de busqueda que fueran instancias de tFormBusqueda pero cada una buscara una cosa distinta y alternar entre ellas. Es mas si esto estuviera en un boton y lo pulsaramos 6 veces tendíamos 6 instancias distintas al mismo objeto. Por spuesto en este caso si que pongo el cafree en el onclose de TformBusqueda porque como se ve, al no hacerlo modal es necesario que sea el form mismo quien se libere al cerrarse. Por ese mismo motivo me decanto por el with en lugar de declarar una variable del tipo del form y trabajar con ella.

También me interesa el tema y está bien aprender todo lo que se pueda asi que se solicitan correcciones y/o consejos sobre este asunto.

Última edición por engranaje fecha: 23-10-2014 a las 10:22:12.
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
Multiples instancias en Fastreport afxe Impresión 0 24-02-2010 16:54:13
multiples instancias de aplicación nfrfabian Varios 3 09-12-2006 14:55:17
multiples instancias de un Form dark_c OOP 3 31-01-2006 09:42:14
Evitar Instancias Multiples De Mi Aplicacion edgusano .NET 8 28-04-2005 19:21:02
Multiples instancias Phacko Varios 1 07-09-2004 15:40:25


La franja horaria es GMT +2. Ahora son las 03:04:21.


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