Hi,
ich habe ziemlich lange nach einer Lösung für folgende Fehler gesucht:
Man hat eine Form auf der ein Grid liegt (egal ob Stringgrid oder DBGrid) wenn
das Grid den Focus hat und ein neues Fenster mit einem Edit-/Memofeld geöffnet wird
ist der Cursor gar nicht da oder in einem Memo-Feld an der falschen Position.
Wenn man schreibt beginnt er allerdings an der erwarteten Stelle.
Wie gesagt war es nicht ganz einfach den Fehler nachzustellen bzw. eine Lösung im Internet
zu finden wenn die Umstände unklar sind.
Die Lösung bzw. Workaround wird hier beschrieben
Codegear Quality Central - Wrong caret position in Edits if in another form Grid has focus
Delphi-Quellcode:
Workaround for D2007
-----------------------------------------
Find in Grids.pas following piece of code in DrawCell():
Focused := IsActiveControl;
if Focused and (CurRow = Row) and (CurCol = Col) then
begin
SetCaretPos(Where.Left, Where.Top);
Include(DrawState, gdFocused);
end;
...and replace it with:
Focused := IsActiveControl;
if Focused and (CurRow = Row) and (CurCol = Col) then
begin
if Self.Focused then // *** this is the workaround !!!!!!
SetCaretPos(Where.Left, Where.Top);
Include(DrawState, gdFocused);
end;
Interessant ist wie lange dieser Fehler bekannt ist (klasse Borland/Codegear).
Vielleicht konnte ich anderen Suchenden damit helfen.
Grüße
Frank