Ich markiere in Rot oder mit einem Hinweisfähnchen inkl. kurzer Erklärung (je nach
GUI), lasse aber in der Regel den Fokus unberührt um den Arbeitsfluss nicht unnötig zu stören. So sieht der User, dass etwas nicht in Ordnung ist, kann aber erst einmal weitermachen oder direkt zurück und korrigieren, ganz nach Wunsch.
Die einzige wirklich saubere Lösung für dein Vorhaben wäre wie schon geschrieben den Fokus nach dem Event zurückzusetzen, wenn SetFocusControl schon durch ist. Wie das bei Firemonkey am besten geht, weiß ich nicht.