PDA

Ver la Versión Completa : Crear un Shape en Runtime


David78
13-04-2005, 01:54:24
Hola a todos,

Estoy intentando crear un Shape en tiempo de ejecución, pero no sé por qué no me lo hace. Con TButton sí que lo consigo fácilmente. El código que he hecho es el siguiente:
procedure TForm1.CreateShape;
var AShape: TShape;
begin
AShape:= TShape.Create(Panel1);
try
with AShape do
begin
Parent:= Self;
Left:= Random(Form1.ClientWidth-Width);
Top:= Random(Form1.ClientHeight-Height);
Brush.Color:= clWhite;
Brush.Style:= bsSolid;
Pen.Color:= clBlack;
Pen.Mode:= pmCopy;
Pen.Style:= psSolid;
Pen.Width:= 1;
end;
except
AShape.Free;
end;
end;

gracias por adelantado,
David

roman
13-04-2005, 02:10:00
A mi me ha funcionado tu código así que supongo que lo que sucede es que el objeto que creas no lo ves porque queda oculto por el panel. Donde dice

Parent := Self;

creo que querías decir

Parent := Panel1;

// Saludos

hackcgm
28-04-2010, 04:23:09
A mi me ha funcionado tu código así que supongo que lo que sucede es que el objeto que creas no lo ves porque queda oculto por el panel. Donde dice

Parent := Self;

creo que querías decir

Parent := Panel1;

// Saludos

hola a todos, tengo una duda, como tambien estoy creando shapes en tiempo de ejecusion pero quiero implenetar este evento pero me marca error :

circulos.OnMouseDown:= circulosMouseDown('no se q parametros van a qui')

espero me puedan orientar, gracias

escafandra
28-04-2010, 09:03:35
circulos.OnMouseDown:= circulosMouseDown('no se q parametros van a qui')


Ninguno. Para asignar un evento lo que haces es asignar la función que maneja el evento. Para ello esa función debe existir:


procedure TForm1.circulosMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//...........................
end;

//..............
circulos.OnMouseDown:= circulosMouseDown;
//.............

Saludos.

hackcgm
28-04-2010, 22:03:54
gracias, si me funciono, muchas gracias