hola!!!les cuento que estoy trabando con una pila y esta pila contiene shape, primero tengo que crear o modificar tantos shape como el usuario quiera(figuras geométricas, color de la figura, borde de la figura), a medida que los crea el programita los apila, luego cuando el usuario lo desee tengo que mostrar esa pila de figuras geométricas en el form.
Mi problema es el siguiente:
1-mi idea al comienzo, era crear una función a la que le envié un shape y que me lo devuelva ya modificado.Pero cuando quise instanciar la función no me deja, es decir en esta parte:
Código Delphi
[-]type
TForm1 = class(TForm)
Button1: TButton;
Shape1: TShape;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
function crearFigura(f:tshape):tshape;
private
public
end;
2-entonces pense otra solucion: en un procedimiento,modificar un shape que ya coloque en el form, insertarlo en la pila, y crear un nuevo shape. Pero tampoco funciona, por que como dije antes no muestra ninguna figura al final:
-----------------------------------------------
//procedimiento que dasapila
Código Delphi
[-]procedure TForm1.Button3Click(Sender: TObject);
var
figura:TShape;
begin
while pila.Count>0 do
figura:=TShape(pila.pop);
figura.Parent:=Form1;
end;
----------------------------
//procedimiento que modifica la figura
Código Delphi
[-]Procedure TForm1.crearfigura;
begin
with Shape1 do
begin
Brush.Color:=RGB(Random(255),Random(255),Random(255));
case Random(6) of
1:begin
Shape:= stCircle;
ListBox1.Items.Add('Circulo');
end;
2:begin
Shape:=stRectangle;
ListBox1.Items.Add('Rectangulo');
end;
3:begin
Shape:=stSquare;
ListBox1.Items.Add('cuadrado');
end;
4:begin
Shape:=stRoundRect;
ListBox1.Items.Add('Rectangulo bordes redondeado');
end;
5:begin
Shape:=stEllipse;
ListBox1.Items.Add('elipse');
end;
6:begin
Shape:=stRoundSquare;
ListBox1.Items.Add('cuadrado bordes redondeado');
end;
end;
case Random(6) of
1:Pen.Style:=psSolid;
2:Pen.Style:=psDash;
3:Pen.Style:=psDot;
4:Pen.Style:=psDashDot;
5:Pen.Style:=psDashDotDot;
6:Pen.Style:=psClear;
end;
end;
end;
-----------------------------------------------
//insertar figura en la pila
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var
fig:tshape;
begin
crearFigura;
fig:=Shape1;
pila.Push(TObject(fig));
tshape.Create(Shape1);
end;
------------------------------------------------
//creo la pila
Código Delphi
[-]procedure TForm1.FormCreate(Sender: TObject);
begin
pila:=tstack.Create;
end;
no se si estoy trabajando bien la manera en que apilo y desapilo, por que no puedo lograr que las figuras aparezcan en el form, así que o no apila nunca, o no desapila, o estoy mostrando de manera incorrecta la pila de figuras.
desde ya muchas gracias!!!