mal fix zusammengetippt:
Delphi-Quellcode:
TForm1 = class(TForm)
...
private
{ Private-Deklarationen }
oldrect:Trect;
...
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
gridwidth=10;
begin
canvas.Pen.Mode:=pmXOR;
canvas.Pen.color:=clBlue xor $FFFFFF; //xor damit die markierung auch wirklich blau wird
canvas.Brush.Style:=bsClear; //keine füllung
if oldrect.Left<>-1 then //altes Rechteck erst einmal löschen
begin
canvas.Rectangle(oldrect.left,oldrect.top,oldrect.right,oldrect.bottom);
end;
oldrect.left:=(x div gridwidth)*gridwidth;
oldrect.top:=(y div gridwidth)*gridwidth;
oldrect.Right:=oldrect.Left+gridwidth;
oldrect.Bottom:=oldrect.Top+gridwidth;
canvas.Rectangle(oldrect.left,oldrect.top,oldrect.right,oldrect.bottom);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
oldrect:=rect(-1,-1,-1,-1);
cursor:=crNone;
end;
lässt sich evtl noch optimieren, aber ist ja nur ein beispiel.
Gruß Frank