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 25-11-2010
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
¿Asignar memoria dinámica a TFrame?

Hola amigos !!!

Mi pregunta es ¿Se podrá asignarle memoria dinámica a un TFrame?

Es que me funciona muy bien con los TForm y es maravilloso. Este es el código que uso para los TForm:

Código Delphi [-]
Try
  Application.CreateForm(TForm1, Form1);
  ...
  OficodasForm.ShowModal;
Finally
  ...
  Form1.Free;
  Form1:= nil;
End

Muchas grasias de antemano,
y en espera de sus repuesta,
Un Delfiano.
Responder Con Cita
  #2  
Antiguo 26-11-2010
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
Sí que puedes. De hecho debes hacer exactamente lo mismo que un componente normal: crearlo (con o sin owner), asignarle un parent para que se vea en algún sitio, posicionarlo (top, left, width, height), visible y tal y tal... y ya debería ir correctamente...


Un saludo,
LoPiTaL
Responder Con Cita
  #3  
Antiguo 26-11-2010
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Post Código para asignar memoria dinámica a un TFrame

Grasias LoPiTaL, pero ... ¿Cuál seria el código?

Cita:
Tengo en un formulario varios Frames en dependencia de la opción a realizar lo muestro o no. Mi idea es hacer lo mismo que con los Form. Asignarle memoria dinamica y luego liberarlo.
¿Me podrias ayudar con el código?

Grasias de antemano y que tengan un buen dia !!!
Responder Con Cita
  #4  
Antiguo 26-11-2010
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
Claro, es como si creas cualquier otra cosa:

En donde quieras crearlo, supongo que en create del formulario, o en alguna
función de inicialización:
Código Delphi [-]
  miFrame:=TMiClaseFrame.Create(nil);
  miFrame.Parent:=FormularioDondeLoMuestro;  miFrame.align:=alClient;//P. ej. Si no usas el align, pues usa las propiedades Top, Bottom, etc...

y ya donde quieras eliminarlo, p. ej. en el destructor del formulario:

Código Delphi [-]
  miFrame.Free;

Como te digo, debes manejarlo como si fuese cualquier otro objeto, lo creas cuando lo necesites, lo destruyes cuando ya no lo quieras, etc...
Los componentes internos del frame no necesitas crearlos/destruirlos. Si quieres puedes moverlos, cambiarles visibilidad, etc.. pero no te recomiendo ni que los creas/los destruyas ni que le cambies de parent.

Un saludo,
LoPiTaL
Responder Con Cita
  #5  
Antiguo 30-11-2010
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Post Mensaje de error 'Abstract Error'

Grasias LoPiTaL, de veras que eres un genio !!!. El código me quedo de esta forma como mas abajo le muestro.

Código Delphi [-]
public
    { Public declarations }
    miFrame : TFrame;

...

// según lo que quiero mostrar
procedure TPrincipalForm.JvXPBar5ItemClick(Sender: TObject;
  Item: TJvXPBarItem);
begin
 miFrame.Free;
 Case Item.Index of
   0:begin    // Oficodas
      miFrame:=TOficodasFrame.Create(nil);
     end;
   1:begin    // Bodegas
      miFrame:=TBodegaFrame.Create(nil);
     end;
   2:begin    // Nucleos
      miFrame:=TNucleosFrame.Create(nil);
     end;
   3:begin    // Consumidores
      miFrame:=TConsumidoresFrame.Create(nil);
     end;
 End;
 miFrame.Parent:=Panel1;
 miFrame.align:=alClient;
end;

Ahora tengo 2 nuevas preguntas:

1- Cómo podré solucionar este error que en ocaciones me da: 'Abstract Error'

2-No me libera realmente la memoria, lo he verificado en el administrador de tareas de windows. Cuando creo el frame me aumenta el uso de memoria, pero cuando lo libero (miFrame.Free) se queda igual. realmente ha liberado la memoria, acaso el administrador de tareas de windows no registra bien los valores de memoria?

Eternamente agradecido,
En espera de sus respuesta.

Ledian.
Responder Con Cita
  #6  
Antiguo 30-11-2010
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Corrigiendo código

Código Delphi [-]
public
    { Public declarations }
    miFrame : TFrame;

...

// según lo que quiero mostrar
procedure TPrincipalForm.JvXPBar5ItemClick(Sender: TObject;
  Item: TJvXPBarItem);
begin
 if assigned(miFrame) then
   begin
    miFrame.Free;
    miFrame:= nil;
   end;
 Case Item.Index of
   0:begin    // Oficodas
      miFrame:=TOficodasFrame.Create(nil);
     end;
   1:begin    // Bodegas
      miFrame:=TBodegaFrame.Create(nil);
     end;
   2:begin    // Nucleos
      miFrame:=TNucleosFrame.Create(nil);
     end;
   3:begin    // Consumidores
      miFrame:=TConsumidoresFrame.Create(nil);
     end;
 End;
 miFrame.Parent:=Panel1;
 miFrame.align:=alClient;
end;

Cita:
Recuerden:

1- Cómo podré solucionar este error que en ocaciones me da: 'Abstract Error'

2-No me libera realmente la memoria, lo he verificado en el administrador de tareas de windows. Cuando creo el frame me aumenta el uso de memoria, pero cuando lo libero (miFrame.Free) se queda igual. realmente ha liberado la memoria, acaso el administrador de tareas de windows no registra bien los valores de memoria?
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
asignar Memoria dinamica a un programa kurono Varios 2 28-12-2009 22:46:10
Asignar valore en forma dinamica a TQRLabel ocram Impresión 4 08-04-2009 15:28:29
Asignar Evento OnClick en forma dinamica en tiempo de ejecucion delphi50jmb OOP 7 06-07-2008 03:46:02
Reservar memoria dinámica ALAM C++ Builder 0 20-07-2007 14:27:11
Recuperación de Memoria dinámica adpa Varios 1 15-12-2005 15:29:10


La franja horaria es GMT +2. Ahora son las 04:44:17.


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