Crossposts sollten angegeben werden, aber der Crosspost ist ja deshalb ohnehin schon geschlossen:
http://forum.delphi-treff.de/showthread.php?p=186283
Du zeichnest die Linie ja auch nie wieder dünn. Was du eigentlich machen müsstest ist doch prüfen, ob sich der Status (Maus drüber oder nicht) geändert hat, wenn die Maus bewegt wurde.
Stattdessen prüfst du zweimal die selbe Bedingung und nur in x-Richtung und zeichnest nur mit einer Dicke von 2 und nicht wieder mit 1.
Dann zu der Bedingung:
if ((pos.X -7)> (oldrand.left-5)) and ((pos.x-7)< (oldrand.Left+5)) then
Ich forme mal um:
(pos.X -7)> (oldrand.left-5) // +7
(pos.X) > (oldrand.left-5) + 7
pos.X > oldrand.left + 2
(pos.x-7)< (oldrand.Left+5) // +7
pos.x < (oldrand.Left+5) + 7
pos.x < oldrand.Left + 12
Ist das so gedacht? Jedenfalls musst du die Linie auch wieder dünn zeichnen, wenn die Bedingung nicht erfüllt ist.