Ver Mensaje Individual
  #4  
Antiguo 18-06-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Reputación: 22
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