Poziciu si uchovas jednoducho - staci gulicky reprezentovat ako instancie objektu, ktore budu mat poziciu ako svoj datovy clen. Ukazka:
Kód:
TGulicka = class
private
x, y: integer; // koordinaty
procedure SetX( newX: integer );
procedure SetY( newY: integer );
precedure Redraw();
public
constructor Create( x, y: integer );
property Left: integer read x write SetX;
property Top: integer read y write SetY;
end;
( konstruktor si uz napis sam, taktiez metody SetX a SetY, tam len nastavis premenne x a y na newX a newY ). Gulicky budes jednoducho vytvarat volanim konstruktora triedy TGulicka a zmenu pozicie cez jej vlastnost
Left a
Top. Ukazka:
Kód:
var
gulicka1, gulicka2, gulicka3: TGulicka; // neviem, kolko ich mas mat, ak viac, jednoducho pouzi pole
Volanie konstrutkora:
Kód:
gulicka1 := TGulicka.Create( 100, 100 );
Funkcia redraw bude prekreslovat gulicku na nove pozicie. Tu si tiez dopln sam, akurat ti poradim, ze ich neznazornuj pixelmi - je to zdlhave a zbytocne. Pouzi metodu Ellipse triedy TCanvas:
Kód:
Form1.Canvas.Ellipse( 100, 100, 120, 120 );
Jej prve dva parametre su x1 a x2, dalsie dve x2 a y2. To znamena, x2 - x1 dostanes priemer gulicky. Na ten som zabudol, tiez si ho predaj ako datovy clen triedy TGulicka + potrebne metody na jeho zvacsovanie/zmensovanie.