[gelöst] TCustomGrid Bug Zellen Offset nach Scrollen

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

[gelöst] TCustomGrid Bug Zellen Offset nach Scrollen

Beitrag von Michl »

Hi,

ich habe da einen Bug entdeckt und wollte wissen, bevor ich diesen im Bugtracker melde, ob dieser Fehler nur unter Windows oder auch anderen Widgetsets zu finden ist.

Anbei ein kleines Testprojekt, es enthält ein TDrawGrid und ein TStringGrid (TDBGrid hat diesen Bug nicht). Zu sehen ist er wie folgt:

- Programm starten
- eine Zelle am unteren sichtbaren Bereich wählen (z.B. per Maus auf Zelle 1/7 klicken)
- mit der Maus am Scrollbalken das Grid nach unten scrollen, daß die Zelle noch im sichtbaren Bereich bleibt
- per Tastatur nun eine neue Zelle wählen
-> die nun neu gezeichneten Zellen werden nicht im gleichen Raster gezeichnet, wie das durch das Scrollen erzeugte

Bin unterwegs und kann z.Zt. leider nur mit meinem Notebook testen Windows 7, Lazarus 1.4.0 und Lazarus 1.7 r50757.

[Edit]
Das Verhalten tritt nur in Verbindung mit der Gridoption goSmoothScroll auf. Evtl. sollte man diese nicht als Default setzen?
Dateianhänge
Testproject.zip
(2.04 KiB) 81-mal heruntergeladen
Zuletzt geändert von Michl am Mo 18. Jan 2016, 22:58, insgesamt 1-mal geändert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TCustomGrid Bug Zellen Offset nach Scrollen

Beitrag von wp_xyz »

Ich sehe dasselbe auch unter Linux Mint. Offenbar geht die Berechnung der Zellkoordinaten davon aus, dass die obere linke Zelle genau in der Ecke sitzt, und berücksichtigt nicht, dass wegen des SmoothScroll noch ein paar Pixel über (bzw. links von) der oberen linken Zelle liegen können. Der Fehler sollte sich für einen Patch finden lassen.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TCustomGrid Bug Zellen Offset nach Scrollen

Beitrag von Mathias »

Ich kann scrollen und Pfeile drücken, kann aber nichts aussergewöhnliches feststellen.

Verwende auch Linux Mint 17.3 64Bit.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: TCustomGrid Bug Zellen Offset nach Scrollen

Beitrag von Michl »

Danke fürs testen!

wp_xyz hat geschrieben:Der Fehler sollte sich für einen Patch finden lassen.
Werde mal schauen, habe zZt. nur einen Klapprechner mit einem relativ kleinen Monitor vor mir, da macht das Fehlersuchen nicht so viel Freude. Evtl. finde ich nächste Woche Zeit dafür.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: TCustomGrid Bug Zellen Offset nach Scrollen

Beitrag von Michl »

Habe mal einen Patch hochgeladen. In meinen Testprojekten funktioniert er soweit und ich konnte keine Nebenwirkungen feststellen (ein Mist, dass man im Bugtracker nur beschränkte Zeit hat seine Beschreibung zu machen, bevor sie verfällt und dann kann man die dadurch eingebrachten Fehler auch nicht mehr korrigieren): http://bugs.freepascal.org/view.php?id=29420

[Edit] Wurde übernommen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten