Ich habe mal wieder eine Frage die vermutlich einfach zu lösen ist wenn man die passenden stichworte kennt.
Ich habe ein Programm geschrieben was ein Stringgrid mit diversen Datenbankabfragen füllt, das dauert ein paar Sekunden. Während dieser Wartezeit wird die Programmoberfläche nicht neu gezeichnet. Wie kann ich Lazarus dazu bringen die Oberfläche regelmäßig zu aktualisieren? (Das das die Performance reduziert ist mir klar)
Danke im vorraus.
Stringgrid(?) häufiger Zeichnen
Re: Stringgrid(?) häufiger Zeichnen
Eine Möglichkeit wäre es evtl., diese Abfrage in einen eigenen Thread zu stecken: http://wiki.freepascal.org/Multithreade ... utorial/de
Andererseits frage ich mich, ob Abfragen in einer Datenbank im Sekundenbereich nicht etwas zu optimieren wären (z.B. Multiselect)?!
Andererseits frage ich mich, ob Abfragen in einer Datenbank im Sekundenbereich nicht etwas zu optimieren wären (z.B. Multiselect)?!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Stringgrid(?) häufiger Zeichnen
Danke, Problem gelöst. In dem Multitheading beispiel war der hinweis auf "Application.ProcessMessages" was das Problem löst.
Das Programm ist nicht wirklich Zeitkritisch. Die Datenbanbankabfragen dauern so lange weil es sehe viele sind, nicht die komplexität der Abfrage an sich.
Das Programm ist nicht wirklich Zeitkritisch. Die Datenbanbankabfragen dauern so lange weil es sehe viele sind, nicht die komplexität der Abfrage an sich.
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: Stringgrid(?) häufiger Zeichnen
Kleiner Tipp: nutze BeginUpdate und EndUpdate für das befüllen des StringGrids
Das verhindert das das String bei einfügen jedes Eintrages neu gezeichnet wird und beschleunigt das ganze dadurch extrem.
Kann man anhand einer ListBox sehr gut sehen, was für gigantische Unterschiede das machen kann (ohne BeginUpdate u. Endupdate siehst du wie diese sich langsam befüllt mit ist der Vorgang sofort fertig (ich weiß leider nicht mehr mit wie vielen Zeilen ich das getrdtet habe aber 10000+ und der effekt dürfte beim StringGrid ähnlich sein))
ich weiß, das entspricht nicht genau dem was du gesucht hast, es könnte aber evtl das komplette Problem beseitigen.
Das verhindert das das String bei einfügen jedes Eintrages neu gezeichnet wird und beschleunigt das ganze dadurch extrem.
Kann man anhand einer ListBox sehr gut sehen, was für gigantische Unterschiede das machen kann (ohne BeginUpdate u. Endupdate siehst du wie diese sich langsam befüllt mit ist der Vorgang sofort fertig (ich weiß leider nicht mehr mit wie vielen Zeilen ich das getrdtet habe aber 10000+ und der effekt dürfte beim StringGrid ähnlich sein))
ich weiß, das entspricht nicht genau dem was du gesucht hast, es könnte aber evtl das komplette Problem beseitigen.
www.mcpatcher.net | www.hoeper.me