Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Falsche Caret- / Cursor-Position (https://www.delphipraxis.net/103015-falsche-caret-cursor-position.html)

Sourcemaker 8. Nov 2007 13:39


Falsche Caret- / Cursor-Position
 
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

matmok 31. Jul 2008 14:37

Re: Falsche Caret- / Cursor-Position
 
Hallo,

Dieser hier beschriebene VCL bug war der Grund warum ich vom RadStudio auf CBuilder6 zurückgegangen bin.
Im CodeCentral steht der immer noch auf Status OPEN. Arrgghh! Warum fixt CodeGear sowas nicht wenn schon die User die Lösung erarbeiten!?

Ich habe hier was allgemeines dazu geposted.

Matmok

kroimon 11. Jul 2009 18:12

Re: Falsche Caret- / Cursor-Position
 
Wouh danke...
Ich hab genau das Problem zur Zeit in einem meiner Projekte und war schon am Verzweifeln -.-

Da meine Änderung an der Grid.pas irgendwie nicht übernommen wird, hab ich jetzt sichergestellt, dass mein Grid nicht den Fokus hat, wenn mein neues Fenster mit dem Edit aufgeht, so funktionierts aus.

~kroimon


PS: Sorry, den alten Thread wiederausgegraben zu haben ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf