Eine recht einfache Möglichkeit das Problem zu lösen ist über die Hessesche Normalform:
Delphi-Quellcode:
var
// Gegeben
A: TPoint; // Punkt der Geraden
B: TPoint; // Punkt der Geraden
P: TPoint; // Punkt des Mausklicks
// errechnete Werte
g: TPoint; // Richtungsvektor
n: TPoint; // Normalvektor
d: Integer; // d = a*x + b*y
HNF: Double;
begin
g := Point(B.X - A.X, B.Y - A.Y);
n := Point(g.Y, -g.X);
d := n.X * A.X + n.Y * A.Y;
HNF := Abs((n.X * P.X + n.Y * P.Y - d) / Sqrt(n.X * n.X + n.Y * n.Y));
// hier Wert anpassen
if HNF < 20 then
ShowMessage('getroffen')
else
ShowMessage('daneben');
end;
Edit: Falls du wirklich schauen möchtest, ob der Punkt auf der Geraden liegt (was hier unsinnig ist durch die Ungenauigkeit von Pixeln), so musst du folgendes überprüfen:
Delphi-Quellcode:
if n.X * P.X + n.Y * P.Y = d then
ShowMessage('Punkt liegt auf der Geraden')
else
ShowMessage('Punkt liegt nicht auf der Geraden');