Ver Mensaje Individual
  #3  
Antiguo 23-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Paula.

Espero haber entendido lo que deseas hacer... de todos modos te pongo un ejemplo que tal vez te sirva de guía:

Código Delphi [-]
...
implementation

uses Contnrs, TypInfo;

var
  Stack: TStack;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Stack:= TStack.Create;
end;

procedure TForm1.PushShapes(Cant: Integer);
var
  Shape: TShape;
  i: Integer;
begin
  for i:= 1 to Cant do
  begin
    Shape:= TShape.Create(Self);
    Shape.Left:= 300;
    Shape.Top := 50;
    Shape.Height:= 150;
    Shape.Width := 150;
    Shape.Brush.Color:= RGB(Random(255),Random(255),Random(255));
    Shape.Shape:= TShapeType(Random(7));
    Shape.Pen.Style:= TPenStyle(Random(7));
    ListBox1.Items.Add(Copy(GetEnumName(TypeInfo(TShapeType),Ord(Shape.Shape)),3,MaxInt));
    Stack.Push(Shape);
  end;
end;

procedure TForm1.btnPushClick(Sender: TObject);
begin
  PushShapes(10);
end;

procedure TForm1.btnPopClick(Sender: TObject);
begin
  if Stack.Count > 0 then
  begin
    TShape(Stack.Pop).Parent:= Self;
    ListBox1.Items.Delete(ListBox1.Count-1);
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i: Integer;
begin
  for i:= Stack.Count-1 downto 0 do 
    Stack.Pop;
  Stack.Free;
end;
Para hacer mas reducido el código usé la función GetEnumNames, pero tiene la contra que pone en el ListBox el nombre de la figura en inglés.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-05-2012 a las 21:26:29. Razón: corrección
Responder Con Cita