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 02-03-2008
TeAOrco TeAOrco is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
TeAOrco Va por buen camino
Unhappy Frames en un paquete

Hola estoy intentando en la aplicación principal mostrar los frames que estan almacenados en un paquete (que cargo de forma dinamica):


Código Delphi [-]
var
Modulo: HModule;
ClaseFrame: TCustomFrameClass;
FrameC: TFrame;
begin
Modulo:=LoadPackage('FramePru.bpl');
if Modulo<>0 then
begin
ClaseFrame:=TCustomFrameClass(GetClass('TfraVerde'));
if ClaseFrame<>Nil then
begin
FrameC:=TFrame(ClaseFrame.Create(Application));
FrameC.Parent:=Self;
FrameC.Align:=alBottom;
FrameC.Height:=200;
FrameC.Visible:=True;
end;
end;





Pero al ejecutarlo me da el siguiente error:

Project Prueba.exe raised exception class EConverErro with message 'Cannot assign a TFont to a TFont'.


El error lo da al asignar Código Delphi [-]FrameC.Parent:=Self;




Si modifico la sentencia Código Delphi [-]FrameC:=TFrame(ClaseFrame.Create(Application));

por Código Delphi [-]FrameC:=TFrame(ClaseFrame).Create(Application);

me da un error de Access violation at address...

Algun tipo de sugerencia, muchas gracias.
Responder Con Cita
  #2  
Antiguo 02-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
FrameC:=TFrame(ClaseFrame).Create(Self);

Por lógica, yo pondría el dueño y el padre al mismo control, en este caso el propio Form donde se creará el frame.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 02-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Lepe aprovecho para aprender.
Aqui veo algo extraño:
El parent no deberia ser el form?., es asi o me equivoco.?
Código Delphi [-]
FrameC:=TFrame(ClaseFrame).Create(Self);
FrameC.Parent:=Self; // esta linea, no debería de ser el Form?
Saludos
Responder Con Cita
  #4  
Antiguo 02-03-2008
TeAOrco TeAOrco is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
TeAOrco Va por buen camino
Modificado:
Código Delphi [-]
 
 
var
  Modulo: HModule;
  ClaseFrame: TCustomFrameClass;
  FrameC: TFrame;
begin
  Modulo:=LoadPackage('FramePru.bpl');
  if Modulo<>0 then
    begin
    ClaseFrame:=TCustomFrameClass(GetClass('TfraVerde'));
    if ClaseFrame<>Nil then
      begin
      FrameC:=TFrame(ClaseFrame.Create(Self));
      FrameC.Parent:=Self;
      FrameC.Align:=alBottom;
      FrameC.Height:=200;
      FrameC.Visible:=True;
      end;
    end;

Mismo error en la misma linea.
Responder Con Cita
  #5  
Antiguo 02-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Yo de esto no se, el maestro es Lepe, pero me parece que deberia de ser el parente el form en el que se hospeda.
Código Delphi [-]
var
  Modulo: HModule;
  ClaseFrame: TCustomFrameClass;
  FrameC: TFrame;
begin
  Modulo:=LoadPackage('FramePru.bpl');
  if Modulo<>0 then
    begin
    ClaseFrame:=TCustomFrameClass(GetClass('TfraVerde'));
    if ClaseFrame<>Nil then
      begin
      FrameC:=TFrame(ClaseFrame).Create(Form1); // el form donde se crea
      FrameC.Parent:=Form1; // el form donde vive
      FrameC.Align:=alBottom;
      FrameC.Height:=200;
      FrameC.Visible:=True;
      end;
    end;
Saludos
Responder Con Cita
  #6  
Antiguo 02-03-2008
TeAOrco TeAOrco is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
TeAOrco Va por buen camino
En este caso Self y Form1 son el mismo, ya que este codigo se ejecuta desde el Form1.
Responder Con Cita
  #7  
Antiguo 02-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muy cierto, lo he probado de la dos formas y funciona, algo mas que aprendi.
Saludos
Responder Con Cita
  #8  
Antiguo 06-03-2008
TeAOrco TeAOrco is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
TeAOrco Va por buen camino
De esta forma si tira:

Código Delphi [-]
 
Var
  Modulo: HMODULE;
  AClass: TPersistentClass;
begin
  Modulo:=LoadPackage('Segundo.bpl');
  if Modulo<>0 then
    begin
    AClass:=GetClass('TfrmSegundo');
    if AClass<>nil then
      begin
      if Assigned(FrameC) then
        FrameC.Free;
      FrameC:=TFrame(TComponentClass(AClass).Create(Self));
      FrameC.Parent:=Self;
      FrameC.Align:=alClient;
      FrameC.Visible:=True;
      end;
    end;
end;

FrameC esta declarado en la parte publica del formulario como TFrame.
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
Recuperar paquete DTS!!! drykea SQL 0 02-10-2007 15:55:52
Paquete Graphics32 dicatek Gráficos 4 13-06-2006 14:27:10
Paquete Qreport soloriv Varios 2 05-06-2006 16:38:57
paquete wpt_d7 NuncaMas Impresión 0 18-11-2004 14:39:30
Llamar a un paquete DTS Zopi Conexión con bases de datos 0 09-09-2004 23:37:07


La franja horaria es GMT +2. Ahora son las 15:10:54.


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