Ver Mensaje Individual
  #2  
Antiguo 23-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
hola. Prueba esto a ver si te sirve...

Código Delphi [-]
...
  public
    { Public declarations }
    obj : array of TButton;
    idx : integer;
...

procedure TForm1.Button1Click(Sender: TObject);
var
        cnt : integer;
begin
        SetLength(obj,idx+1);
        try
        obj[idx] := TButton.Create(self);
        obj[idx].Name := 'boton'+inttostr(idx);
        obj[idx].Parent := self;
        obj[idx].Left := (sender as TButton).Left + 10;
        obj[idx].Top  := (sender as TButton).Top + 10;
        obj[idx].Width := (sender as TButton).Width;
        obj[idx].Height := (sender as TButton).Height;
        obj[idx].Caption := Obj[idx].Name;
        obj[idx].Visible := true;
        obj[idx].Enabled := true;
        obj[idx].OnClick := (sender as TButton).OnClick;
        ShowMessage(obj[idx].Caption);
        inc(idx);
        except
        raise exception.Create('error creando nuevo boton');
        end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
        SetLength(obj,1);
        idx := 0;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
        i : integer;
begin
        for i := idx - 1 to 0 do
        obj[i].free;

        setlength(obj,0);
end;

es probable, no obstante, que haya maneras mas elegantes.

saludos

PD : releyendo, vi que es un 'GridPanel' y no un 'Panel'. No conozco ese componente asi que quiza este codigo no te sirva. Bueno, igualmente te lo dejo por si sí lo hace

Última edición por coso fecha: 23-06-2008 a las 19:30:01.
Responder Con Cita