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 14-03-2014
Miguel45 Miguel45 is offline
Miembro
 
Registrado: oct 2005
Ubicación: Gandía (Valencia) -España-
Posts: 41
Poder: 0
Miguel45 Va por buen camino
LLamada a un Form

Hola compañer@s

Quiero plantear una duda que tengo desde hace tiempo.
Vengo de Delphi 7 y ahora estoy migrando a Delphi XE.
Hasta ahora, las llamadas a los distintos forms que componen cualquier aplicación, las hago de la siguiente manera:
Código Delphi [-]
        try
         form_consulta_clientes:=TForm_consulta_clientes.Create(self);
         form_consulta_clientes.showmodal;
        finally
         form_consulta_clientes.Label1.free;
         form_consulta_clientes.Nombre.free;
         form_consulta_clientes.Label2.free;
         form_consulta_clientes.nombre2.free;
         form_consulta_clientes.Label3.Free;
         form_consulta_clientes.ciudad.free;
         form_consulta_clientes.Select_clientes.free;
         form_consulta_clientes.DataSource1.free;
         form_consulta_clientes.DBGrid1.free;
         form_consulta_clientes.BitBtn1.free;
         form_consulta_clientes.BitBtn2.free;
         form_consulta_clientes.free;
         form_consulta_clientes:=nil;
        end;
Mi duda no está en la llamada al form, sino en la forma de cerrarlo y liberar el form de la memoria.
¿Es necesario liberar cada componente del form o simplemente basta con liberar el form (form_consulta_clientes.free y form_consulta_clientes:=nil)?

Un saludo a todos.
Responder Con Cita
  #2  
Antiguo 14-03-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Solo es necesario liberar los componentes que creas en tiempo de ejecución, a menos que al crearlos los asignes algún otro componente en la propiedad Parent.
El "Parent" se encarga de liberar a sus "componentes hijos".

Además de esto, puedes poner en el método OnClose del formulario creado Action := caFree

Código Delphi [-]
// Ejemplo de un componente creado en tiempo de ejecución
// Se liberará automáticamente cuando se libere el formulario FMPedidos
procedure TFMPedidos.FormCreate(Sender: TObject);
begin
  MTelefonos := TLFMemo.Create(Self);
  with MTelefonos do
  begin
     Visible := False;
     Parent := Self;
     BorderStyle := bsNone;
     Color := clInfoBk;
     ReadOnly := True;
     WordWrap := False;
  end;
  [...]

Código Delphi [-]
// Al establecer que la accion es caFree, se liberará la memoria al cerrar el formulario
procedure TFMPedidos.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  Action := caFree;
  [...]
Responder Con Cita
  #3  
Antiguo 14-03-2014
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por duilioisola Ver Mensaje
Solo es necesario liberar los componentes que creas en tiempo de ejecución, a menos que al crearlos los asignes algún otro componente en la propiedad Parent. El "Parent" se encarga de liberar a sus "componentes hijos".
Es correcto pero cambiando "Parent" por "Owner".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 01-04-2014
Miguel45 Miguel45 is offline
Miembro
 
Registrado: oct 2005
Ubicación: Gandía (Valencia) -España-
Posts: 41
Poder: 0
Miguel45 Va por buen camino
Gracias a los dos.
Dudas resuelta.

Un saludo
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
esconder boton segun form de llamada Nicolas_2011 Varios 7 27-06-2012 18:46:29
Llamada A Un Form nikotina Varios 8 18-10-2006 12:05:29
Ayuda con llamada de un form a un edit XBart OOP 3 18-07-2006 22:59:00
Cerrar un form, o cancelar llamada al API rex Varios 3 19-05-2006 01:05:54
Pasar un parametro en la llamada a un form apicito OOP 17 13-08-2003 12:30:45


La franja horaria es GMT +2. Ahora son las 12:47:31.


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