Einzelnen Beitrag anzeigen

Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
261 Beiträge
 
Delphi XE5 Professional
 
#1

Falsche Caret- / Cursor-Position

  Alt 8. Nov 2007, 13:39
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
Frank
  Mit Zitat antworten Zitat