[gelöst] Stringgrid springt nach oben

Rund um die LCL und andere Komponenten
Antworten
sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

[gelöst] Stringgrid springt nach oben

Beitrag von sstvmaster »

Hallo,

Ich habe eine CheckListBox mit vielen Einträgen. Ein Stringgrid wo die Daten die in der CheckListBox angehakt werden (zb. 20) angezeigt werden.
Die Daten im Stringgrid werden aber ständig neu berechnet (aller 1 sekunde). Nun ist es so das wenn ich versuche im Stringgrid nach unten scrollen
will immer wieder nach oben springt.

Das scheint mir hier natürlich richtig zu sein. Da ja jede sekunde aktualisiert wird.

Gibt es da eine möglichkeit zu scrollen ohne das das grid nach oben springt?

Code zu sehen liefer ich gerne nach.

LG Maik
Dateianhänge
scroll.JPG
Zuletzt geändert von sstvmaster am Di 28. Nov 2017, 06:38, insgesamt 1-mal geändert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Stringgrid springt nach oben

Beitrag von m.fuchs »

Wie aktualisierst du denn die Daten? Alle Zeilen löschen und dann neu hinzufügen? Oder nur die Werte in den Zellen ändern?
Letzteres sollte eigentlich kein Springen auslösen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Stringgrid springt nach oben

Beitrag von sstvmaster »

ich schreibe neu.

daten ins stringlist:
unit1 ab Zeile 197

Stringlist + Daten rechnen zu Stringgrid:
unit1 ab Zeile 112

!!! geht bei mir nur mit 1.8 RC5, 1.9 trunk nicht, siehe: https://www.lazarusforum.de/viewtopic.p ... 60#p100012
Zuletzt geändert von sstvmaster am Di 28. Nov 2017, 06:37, insgesamt 1-mal geändert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Stringgrid springt nach oben

Beitrag von m.fuchs »

Dann mach das nicht. Ändere den RowCount nur dann, wenn Zeilen dazukommen müssen oder verschwinden. Das sollte dein Problem eigentlich schon lösen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Stringgrid springt nach oben

Beitrag von sstvmaster »

Das sagst du so einfach, werde es aber versuchen. Ich habe null Ahnung.

Danke trotzdem Maik
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Stringgrid springt nach oben

Beitrag von m.fuchs »

Das ist auch relativ simpel. Du schmeißt das Setzen des RowCount aus deiner For-Schleife raus.

Und machst vorher:

Code: Alles auswählen

StringGrid1.RowCount := StringGrid1.FixedRows + slSatCount;

Das sollte es schon gewesen sein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

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

Re: Stringgrid springt nach oben

Beitrag von wp_xyz »

Ich liebe Demoprogramme, bei denen man nicht weiß, wie man sie zu bedienen hat und wie man den Fehler hervorruft, und die sich dann nach einiger Zeit aufhängen. Grrr...

Das schlimmste ist in date_time_changed, wo du in der Satelliten-Schleife jedes mal RowCount hochzählst. Das ist unnötig, denn du hast RowCount vorher ja schon gesetzt. Wenn das weg ist, läuft das Programm und das Grid kann auch gescrollt werden:

Code: Alles auswählen

procedure TForm1.date_time_changed;
[...]
  if slSatCount > 0 then    // das kann auch weg, denn wenn slStatCount = 0 ist, wird die i-Schleife gar nicht betreten.
  begin
    for i:=0 to slSatCount - 1 do
    begin
      [...]
      // set rows
      //StringGrid1.RowCount := StringGrid1.FixedRows + i + 1;   // <---- das MUSS raus
      [...]
    end;
  end;
end;


[EDIT]
m.fuchs, entschuldige - jetzt habe ich erst deinen Beitrag gesehen, in dem du dasselbe schreibst.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Stringgrid springt nach oben

Beitrag von sstvmaster »

Vielen Dank m.fuchs und wp_xyz für eure Hilfe.

Es geht jetzt.

Grüße Maik
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Antworten