[delphi]Odświezanie po przesuwaniu

0

Dzień dobry
Chciałem zrobić przesuwanie punktu po osi y. Ale niestety elipsa przesuwa mi sie niezaleznie od tego czy klikne w wybrany punkt czy też nie (reaguje na przeciagniecie od samego poczatku). Także jeżeli chodzi o odświeżanie po przeciaganiu zostają mi okręgi bedace we wczesniejszym położeniu. Próbowałem wpisywać refresh ale nic z tego.
Pozdrawiam
oto kod

 type
 Tpunkt = record
 x, y : integer ;
 end;

var
  Form1: TForm1;
  pklikniecia : boolean ;
implementation

{$R *.dfm}


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

var
  prostokat : Trect ;
  pol : Tpunkt ;
begin
prostokat := Rect(0,50,100,170) ;
if (pol.x > prostokat.Left) and (pol.x < prostokat.Right)    then
pklikniecia := true ;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var

  prostokat : Trect ;
begin

prostokat := Rect(0,50,100,170) ;
Image1.Canvas.Brush.Color :=  clRed ;
Image1.Canvas.Ellipse(0  ,50 + y,100 ,170 + y );
end;


procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
pklikniecia := False ;
end;

end.
0

Co do tego przesowania niezaleznie od klikniecia, to zamiast uzywac zmiennej boolean, to lepiej w OnMouseMove sprawdzic czy (Shift <> []). W tedy wiadomo, czy dowolny klawisz myszy nie jest przycisniety.
Co do odswieżania:

procedure TForm1.Button4Click(Sender: TObject);
var
  r: TRect;
begin
  r.Left := 0;
  r.Top := 0;
  r.Right := Image1.Width;
  r.Bottom := Image1.Height;
  Image1.Canvas.FillRect(r);
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1