PDA

Ver la Versión Completa : Nueva Pagina con PageControl


Enan0
03-11-2005, 13:22:58
Hola a todos, mi consulta es la siguiente. estoy Utilizadon un PageControl (con delphi 6) y necesito crear una pagina nueva en tiempo de ejecucion (una igual a la que ya esta creada (clonarla)) pero el problema es que no se como acerlo, alguien sabria decirme como puedo hacer esto?

Neftali [Germán.Estévez]
03-11-2005, 14:06:56
...necesito crear una pagina nueva en tiempo de ejecucion (una igual a la que ya esta creada (clonarla)) pero el problema es que no se como acerlo, alguien sabria decirme como puedo hacer esto?
Crear la página es sencillo. Lo que es un poco más complicado es "clonarla" (entiendo que entonces debes crear otros componentes).
Deberías hacer:
(1) Un recorrido de todos los componentes existentes en la pestaña original.
(2) Crear uno de la misma clase en la pestaña nueva.
(3) Asignarles las mismas propiedades que el original.

(1) Revisa en la ayuda y en los foros sobre recorridos utilizando (Components y ComponentCount)
(2) Puedes obtener la clase con GetClass (revisa ayuda y foros, hay ejemplos); con eso podrás ir creando componentes de la misma clase.
(3) Puedes utilizar el Assign (no tengo claro si funcionará del todo -por temas de parent), o sino ir asignando propiedades "a mano" (Left, Top, Color,...)

Enan0
03-11-2005, 14:26:56
Gracias Neftali, Me pondre a investigar sobre lo que me pasaste.. cualquier cosa vuelvo a postear.

Enan0
04-11-2005, 13:36:00
Bueno aca estoy intentado Crear una nueva Pagina (TabSheet, creo que esto es la pagina).
Se que algo estoy haciendo mal, pero la verdad no se que es.:confused:



procedure TfrmStatus.CrearPagina(s: string);
var
i:integer;

begin
i:=PControl.PageCount +1; // Incremento el Contador del PageControl
Pages[i]:= TTabSheet.Create(nil);
Pages[i].Name:='P'+Copy(s,2,Length(s)); //cambio el Nombre
Pages[i].Visible :=true;
Pages[i].Caption:=s;
PControl.ActivePage:=Pages[i];
end;

Neftali [Germán.Estévez]
04-11-2005, 14:06:17
Creo que te está liando; Además me has cambiado el códio a medio modificar, de todas formas, lo primero que debes hacer es crear el objeto y luego asignarle las propiedades correctas.

Revisa el siguiente código:

procedure TForm1.Button2Click(Sender: TObject);
var
Aux:TTabSheet;

procedure CrearPagina(s: string);
begin
Aux := TTabSheet.Create(PControl.Owner);
Aux.Name := 'Copia_de_' + s;
Aux.PageControl := PControl;
Aux.Caption := Aux.Name;
PControl.ActivePageIndex := (PControl.PageCount - 1);
end;


begin
CrearPagina(PControl.ActivePage.Name);
end;

Ohcan
04-11-2005, 14:08:11
Hola

Creo que te falta

Pages[i].PageControl := PControl;


Saludos.