Ich habe zwar einen Workaround gefunden, der mir aber persönlich nicht wirklich gefällt.
Und zwar setze ich den Fokus wieder per Hand auf das Memo und ändere dann die Caret-Position ebenfalls per Hand:
Delphi-Quellcode:
procedure TMDIChild.TMDIChild_KeyUp(sender: System.Object; e: System.Windows.Forms.KeyEventArgs);
begin
// Hier werden die Cursor - Tasten abgefangen und der fokus wieder auf das Memo gelenkt:
editor.SetFocus;
if (e.KeyCode = Keys.Down ) then // nach unten
editor.CurY := editor.CurY +1
else if (e.KeyCode = Keys.Up ) then // nach unten
editor.CurY := editor.CurY -1
else if (e.KeyCode = Keys.Left ) then // nach unten
editor.CurX := editor.CurX -1
else if (e.KeyCode = Keys.Right ) then // nach unten
editor.CurX := editor.CurX +1;
end;
Aber wie gesagt, es ist nicht wirklich befriedigend. Vor allem auch deswegen, dass der Fokus immer noch hin und her springt. Sprich anfangs hat das Memo den Fokus, dann wird z.b. die Up-Taste gedrückt, dann bekommt das nächste Control den Fokus und zack hat der Editor wieder den Fokus. Das entsprechende Control blinkt dann so schrecklich. Ich habe mal eine Testanwendung gemacht. Seht selbst.
Habt ihr bessere Ideen/Lösungen?