Jedes Symbol muss einfach wissen, ob sich die Maus gerade über ihm befindet oder nicht ("MouseOnMe: Boolean"). Und wenn sich dieser Status ändert, feuerst Du. So vielleicht?
Delphi-Quellcode:
For Symbol in Symbols do
if Symbol.ContainsMouse(Mouse) xor Symbol.MouseOnMe then begin
if Symbol.MouseOnMe then
Symbol.DoOnMouseLeave()
else
Symbol.DoOnMouseEnter();
Symbol.MouseOnMe := Not Symbol.MouseOnMe;
end;