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 21-03-2011
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
Thumbs down Problema al acceder a los controles dentro de un TFrame

Hola chicos de este foro:

Les cuento que estoy haciendo una aplicación con del delphi7 y en mi formulario principal se me ha ocurrido crear de forma dinámica unos frame como les muestro.

Código Delphi [-]
procedure TPrincipalForm.JvXPBar5ItemClick(Sender: TObject;
  Item: TJvXPBarItem);
begin
 LiberarFrame;
 Case Item.Index of
   0:begin    // Bodegas
      miFrame:=TBodegaFrame.Create(nil);
     end;
   1:begin    // Nucleos
      miFrame:=TNucleosFrame.Create(nil);
     end;
   2:begin    // Consumidores
      miFrame:=TConsumidoresFrame.Create(nil);
     end;
 End;
 miFrame.Parent:=Panel1;
 miFrame.align:=alClient;
end;

y los libero a través de este procedimiento:

Código Delphi [-]
procedure TPrincipalForm.LiberarFrame();
begin
 if assigned(miFrame) then
   begin
    miFrame.Free;
    miFrame:= nil;
   end;
end;

Hasta ahí todo sin problema, pero ... a la hora de acceder a algunos de los componentes de esos Frame, digamos por ejemplo un TListView desde otro formulario ahi me da error, mejor dicho no he podido lograr concretar la linea de código.

Ya estan agregadas las uses Bodegas y Principal
al formulario Principal puedo acceder sin problema por ejemplo:

Código Delphi [-]
PrincipalForm.JvXPBar5.Collapsed := false;

Cita:
Pero no de la mismo forma con BodegaFrame. XXX

Lo he intentado con:
Código Delphi [-]
miFrame.ListViewBodega
[Error] ActBodega.pas(154): Undeclared identifier: 'miFrame'
Código Delphi [-]
BodegaFrame.ListViewBodega
[Error] ActBodega.pas(154): Undeclared identifier: 'BodegaFrame'
Código Delphi [-]
PrincipalForm.ListViewBodega
[Error] ActBodega.pas(154): Undeclared identifier: 'ListViewBodega'
Código Delphi [-]
PrincipalForm.BodegaFrame.ListViewBodega
[Error] ActBodega.pas(154): Undeclared identifier: 'BodegaFrame'

Amigos mios no se que hacer ademas de alarme los pelos !!!

Si alguien me pudiera ayudar se los iba agradecer

Mil gracias de antemanos,
Salu2.
Responder Con Cita
  #2  
Antiguo 21-03-2011
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
¿Cómo declaras miFrame?

Supongo que es una propiedad del formulario principal:

Código Delphi [-]
type
  PrincipalForm= class(TForm)
  ...
  private
  miFrame : TFrame;
  ...
  end;
o
Código Delphi [-]
type
  PrincipalForm= class(TForm)
  ...
  public
  miFrame : TFrame;
  ...
  end;
Aunque también puede declararse fuera como una variable más:
Código Delphi [-]
type
  PrincipalForm= class(TForm)
  ...
  end;

var
  miFrame : TFrame;

Si es de la primera manera no podrás verlo, porque es una propiedad privada del form PrincipalForm.

Si es de la segunda, deberás llamarlo de la siguiente manera, cuando lo llames desde otro formulario, como parece ser el caso.
PrincipalForm.miFrame.ListViewBodega;

Si es de la tercer manera, debería funcionar como lo has hecho.
miFrame.ListViewBodega
Responder Con Cita
  #3  
Antiguo 24-03-2011
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

Hola delphianos, les comento que tengo declarado el frame de esta forma:

Código Delphi [-]
type
  PrincipalForm= class(TForm)
  ...
  end;

var
  miFrame : TFrame;

Acá puedo acceder a el como bien decía duilioisola así:

Código Delphi [-]
PrincipalForm.miFrame

Lo que no puedo acceder a los controles que ella contiene, digamos por ejemplo Labels, ListView, Button ...

Código Delphi [-]
PrincipalForm.miFrame. ListViewBodega;
Undeclared identifier: 'ListViewBodega'

Podría ser de que como miframe se crea en tiempo de ejecución, hasta el momento el no tenga realmente el contenido de TBodegaFrame.

Código Delphi [-]
procedure TPrincipalForm.JvXPBar5ItemClick(Sender: TObject;
  Item: TJvXPBarItem);
begin
 LiberarFrame;
 Case Item.Index of
   0:begin    // Bodegas
      miFrame:=TBodegaFrame.Create(nil);
     end;
   1:begin    // Nucleos
      miFrame:=TNucleosFrame.Create(nil);
     end;
   2:begin    // Consumidores
      miFrame:=TConsumidoresFrame.Create(nil);
     end;
 End;
 miFrame.Parent:=Panel1;
 miFrame.align:=alClient;
end;

Lo que si es cierto es que aun no logro acceder a sus controles para interactuar con ellos, digamos por ejemplo que es el caso que me ocupa:

Desde el TBodegaFrame (miframe) llamo a otro formulario ProcesaBodegaForm donde desde el me van a introducir unos datos con los cuales luego de validarlo y procesarlo muestro el resultado en el ListViewBodega.

en espera de sus comentarios y respuestas,
y miles de gracias de antemano...

Lo saluda,
Yo.
Responder Con Cita
  #4  
Antiguo 24-03-2011
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
Supongo que lo que te falta entonces es un cast

Código:
TBodegaFrame ( PrincipalForm.miFrame ) .ListViewBodega;
miFrame es del tipo TFrame.
TFrame tiene nombre, Parent, y otras propiedades comunes a todos los objetos, pero no tiene las de TBodegaFrame.
Cuando creas miFrame le dices que es del tipo TBodegaFrame.
Cuando llamas a sus propiedades, debes decirle que mire los datos como un si fuera TBodegaFrame.
Responder Con Cita
  #5  
Antiguo 24-03-2011
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
Thumbs up Ok

Gracias amigos era solo eso lo que faltaba ...
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
como acceder a los controles de un formulario desde otro _CALI Varios 14 20-11-2010 02:23:28
acceder a los controles de otro formulario MDIChild!! _CALI Varios 1 04-12-2009 22:00:30
Numero de controles dentro de una form yamazaki052 Varios 5 25-02-2009 20:53:43
Problema destruyendo controles waremovil C++ Builder 6 06-11-2007 23:52:28
No funcionan componentes TSelectOnRuntime cuando estan controles dentro de un panel gulder API de Windows 6 11-08-2006 09:58:50


La franja horaria es GMT +2. Ahora son las 10:45:12.


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