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 17-12-2003
Copeito Copeito is offline
Registrado
 
Registrado: dic 2003
Posts: 2
Poder: 0
Copeito Va por buen camino
Novato no tiene ni idea de trabajar con frames

Muy buenas noches a todo el mundo.

Soy un pequeño novatillo en lo que a OOP se refiere que hasta ahora se ha dedicado espacialmente a la programación web (Php, Javascript, Actionscript y demás...) y que recientemente se ha interesado por los entresijos de este lenguaje. (Bueno, estuve trabajando en una empresa durante 6 meses y me temo que, dado que no me renovaron, no quedaron del todo satisfechos con mi rendimiento)

Bueno, al grano: Estoy intentando aprender a trabajar con frames y objetos varios. Tengo creado un Form principal(al que, en un alarde de originalidad, he dedicido bautizar como TForm1) y, en el mismo proyecto que este, un frame(Si, le llamé TFrame1 ¿Cómo lo adivinaste?). Y lo que no consigo es hacer que se abra este frame al pulsar un botón en el form principal ¿Alguien puede ayudarme?
Responder Con Cita
  #2  
Antiguo 17-12-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Cómo agregaste el frame y qué entiendes por abrir el frame?

Los frames, a diferencia de los formularios no son independientes sino que se insertan dentro de un formulario.

Lo primero que debes hacer para trabajar con frames es usar la opción File|New|Frame lo cual te crea un cuadro similar a un formulario en donde colocas los controles que desees.

Después, para usar este frame dentro de un formulario insertas una componente TFrame dentro de él (de la paleta Standard). Al hacer esto se despliega una lista con los frames que hayas creado y escoges el que desees. Con esto se coloca el frame junto con sus controles dentro del formulario.

Puedes colocar varios frames en un mismo formulario o utilizar un frame más de una vez en el mismo o en distintos formularios.

Si lo que deseas es insertar los frames en tiempo de ejecución por código, los creas de la misma forma y luego, desde el botón o desde donde desees haces algo como:

Código:
with TFrame1.Create(Self) do
  Parent := Self;
Deberás incluir la unidad del Frame en la unidad del formulario (cláusula uses).

// Saludos
Responder Con Cita
  #3  
Antiguo 17-06-2004
Jvilomar Jvilomar is offline
Miembro
 
Registrado: mar 2004
Ubicación: Republica Dominicana
Posts: 97
Poder: 21
Jvilomar Va por buen camino
Roman.. gracias por la respuesta ya que me ha venido como anillo al dedo.


Ahora bien... me podrias decir que metodo utilizo para destruir el frame cuando ya no lo necesite o mejor dicho si utilizo un radiogroup como le hago para que cuando me llaman el mismo frame otra vez no me salte una excepcion?
__________________
El conocimiento es un Patrimonio Universal....
Responder Con Cita
  #4  
Antiguo 18-06-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
¿la excepcion que te salta es "a component called frame2 already exist"?
pues lo que te falta es cambiarles los nombres para que no coincidan.

Puedes hacer varias cosas, es como la creación dinamica de componentes.

EJ:crear varios frames iguales y destruirlos, guardandolos en un array dinamico.


Código:
type
TForm1 = class(TForm)
	ButtonCrear: TButton;
	ButtonDestruir: TButton;
	procedure ButtonCrearClick(Sender: TObject);
	procedure ButtonDestruirClick(Sender: TObject);
private
	{ Private declarations }
public
	 framedinamico:array of TFrame2;
end;
var
Form1: TForm1;
implementation
{$R *.xfm}
procedure TForm1.ButtonCrearClick(Sender: TObject);
var ultimo:integer;
begin
	ultimo:=length(framedinamico);
	SetLength(framedinamico,ultimo+1);
	framedinamico[ultimo] :=TFrame2.Create(self);
	framedinamico[ultimo].Parent:=self;
	framedinamico[ultimo].Align:=alBottom;
	framedinamico[ultimo].Name:='dinamico'+inttostr(ultimo);
end;
procedure TForm1.ButtonDestruirClick(Sender: TObject);
var ultimo:integer;
begin
	ultimo:=Length(framedinamico)-1;
	FreeAndNil(framedinamico[ultimo]);
	SetLength(framedinamico,length(framedinamico)-1);
end;
tambien puedes ir metiendolos en un Tlist o simplemente creando y destruyendo el frame anterior si la variable esta ya asignada:

Código:
...
public 
	  miframe:TFrame2;
...
 
	if Assigned(miframe) then
		FreeAndNil(miframe);
	miframe:=TFrame2.Create(self);
	miframe.Parent:=self;

Última edición por ruina fecha: 18-06-2004 a las 12:59:38.
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


La franja horaria es GMT +2. Ahora son las 18:26:45.


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