[gelöst] Stringgrid springt nach oben

Rund um die LCL und andere Komponenten

[gelöst] Stringgrid springt nach oben

Beitragvon sstvmaster » 27. Nov 2017, 19:51 [gelöst] Stringgrid springt nach oben

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von sstvmaster am 28. Nov 2017, 06:38, insgesamt 1-mal geändert.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 84
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 27. Nov 2017, 20:00 Re: Stringgrid springt nach oben

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
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon sstvmaster » 27. Nov 2017, 20:16 Re: Stringgrid springt nach oben

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 28. Nov 2017, 06:37, insgesamt 1-mal geändert.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 84
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 27. Nov 2017, 20:42 Re: Stringgrid springt nach oben

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
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon sstvmaster » 27. Nov 2017, 20:49 Re: Stringgrid springt nach oben

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

Danke trotzdem Maik
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 84
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 27. Nov 2017, 23:32 Re: Stringgrid springt nach oben

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
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon wp_xyz » 27. Nov 2017, 23:58 Re: Stringgrid springt nach oben

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.
wp_xyz
 
Beiträge: 2644
Registriert: 8. Apr 2011, 08:01

Beitragvon sstvmaster » 28. Nov 2017, 06:36 Re: Stringgrid springt nach oben

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

Es geht jetzt.

Grüße Maik
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 84
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried