Ja - wobei das irgendwie nicht das verhalten "meiner" ersten Lösung erklärt - denn das Ereignis ist ja das gleiche.
Das klappt nur dann, wenn du im Grid mit Pfeil-Ab in die darunter liegenden Zelle wechselst. In dem Fall ist nämlich deine Berechnung
Delphi-Quellcode:
YPos := StringGrid1.Row +1; {+1 wegen der FixedRow}
XPos := StringGrid1.Col;
korrekt, aber nicht wegen FixedRow, sondern einfach weil die neue Zelle unter der aktuellen liegt.