Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-01-2014
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Como liberar EmbeddedForm??

Cree una EmbeddedForm en un panel en una aplicación firemonkey pero ahora no se como liberarla, ya que caFree no funciona.

Alguien que me pueda decir como hacerlo???

Gracias.
Responder Con Cita
  #2  
Antiguo 12-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Puedes poner el código de cómo lo creaste?
No me acaba de quedar claro de qué estamos hablando...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 13-01-2014
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Esto es lo que estoy haciendo:

Código Delphi [-]
unit UnidadPrincipal;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
  FMX.StdCtrls, FMX.Objects, FMX.Ani;

type
  TFormPrincipal = class(TForm)
    PanelBts: TPanel;
    BtCorrespondencia: TSpeedButton;
    Label1: TLabel;
    Image1: TImage;
    Image2: TImage;
    PanelFormas: TPanel;
    procedure BtCorrespondenciaClick(Sender: TObject);
    procedure IncrustarForm(AParent:TControl; AForm:TCustomForm);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormPrincipal: TFormPrincipal;

implementation

{$R *.fmx}
Uses UnidadCorrespondencia;

procedure TFormPrincipal.BtCorrespondenciaClick(Sender: TObject);
begin
  IncrustarForm(PanelFormas, Correspondencia.Create(Self));
end;

procedure TFormPrincipal.IncrustarForm(AParent:TControl; AForm:TCustomForm);
begin
  while AForm.ChildrenCount>0 do
    AForm.Children[0].Parent:=AParent;
end;

Pero me da un error a la hora de correr el procedimiento, me pone error Access Violation.
Responder Con Cita
  #4  
Antiguo 13-01-2014
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Aquí esta mi proyecto, no se que estaré haciendo mal.
Espero me puedan ayudar revisándolo.
Archivos Adjuntos
Tipo de Archivo: zip EmbeddedForm.zip (156,4 KB, 6 visitas)
Responder Con Cita
  #5  
Antiguo 13-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que lo que estás haciendo ahí (si no entiendo mal) es "pasar" todos los componentes al nuevo Parent (pero no el form).
Pasándolos de nuevo al Parent original, debería bastar.

No lo he probado con FMX, pero con VCL, puedes "incluir" el form completo, no sólo los componentes.

Por otro lado, el proyecto que has enviado da error. ¿Seguro que es lo que estás utilizando?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 13-01-2014 a las 22:28:04.
Responder Con Cita
  #6  
Antiguo 13-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Vale. El error ya está corregido (faltaba una T en la creación del form).
Ahora lo que no me queda claro, es a qué te refieres con "liberarla".

¿Te refieres al form?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 13-01-2014
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Ya puedo liberarla, es que en FireMonkey es diferente la instrucción que en VCL.

En VCL es:
Código Delphi [-]
Action:= caFree;

En FireMonkey es:
Código Delphi [-]
Action:= TCloseAction.caFree;
Responder Con Cita
  #8  
Antiguo 13-01-2014
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Gracias por la ayuda Neftalí, ahora tengo otra duda como puedo crear una variable TClassForm en FireMonkey, esto es con la intención de que dependiendo el botón le pase el nombre de la Form al procedimiento.
Responder Con Cita
  #9  
Antiguo 13-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por RedVenom Ver Mensaje
...esto es con la intención de que dependiendo el botón le pase el nombre de la Form al procedimiento.
Será la clase del form (o el nombre de la clase), no el nombre, ¿no?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 13-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No se si te refieres a esto, pero en FMX puedes pasar la referencia a la clase del form, de la misma manera a como lo haces en VCL.

Código Delphi [-]
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls;

type

  TClassForm = Class of TForm;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure OpenForm(AClassForm:TClassForm);
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses Unit2, Unit3;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenForm(TForm3);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  OpenForm(TForm2);
end;

procedure TForm1.OpenForm(AClassForm: TClassForm);
var
  f:TForm;
begin
  f := AClassForm.Create(Application);
  f.Show;
end;

end.

De esta forma el procedimiento OpenForm, te sirve para abrir cualquier formulario sea de la clase que sea, sólo pasando la clase.
Si quieres pasar el nombre de la clase, tendrás que registrar la clase y obtenerla a partir del nombre usando RTTI, como se hace en VCL.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


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
Como liberar el qreport ingabraham Impresión 2 28-01-2009 02:38:23
como liberar la memoria de mi pc kurono Varios 2 06-02-2008 03:58:01
Como Liberar un OleObject ???? AGAG4 Varios 0 13-05-2006 02:55:50
Como Liberar un Tthread???? AGAG4 Varios 3 25-04-2005 23:16:40
Como Liberar zReport ???? AGAG4 Varios 0 24-11-2004 03:29:11


La franja horaria es GMT +2. Ahora son las 12:28:35.


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