![]() |
Neuzeichnen von TStatusbar
Hallo,
in einem Programm werden nacheinander mehrere Query's
Delphi-Quellcode:
Der text in der Statusbar ändert sich aber erst, wenn alle Querys abgearbeitet sind und dann sthet dort "Fertig". Es ist aber nicht im Sinne des Erfinders, wenn nur der erste und der letzte Text angezeigt werden. Eigentlich soll man sehen können, an welcher Stelle im Programm man sich gerade befindet.
StatusBar1.SimpleText := 'Erstelle tmp_blabla_1';
StatusBar1.Repaint; dmCopyVertrag.qu_CreateDropTable.SQL.Clear; dmCopyVertrag.qu_CreateDropTable.SQL.Add('CREATE TEMP TABLE tmp_blabla1 ('); dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_1 CHAR(20) NOT NULL,'); dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_2 INTEGER NOT NULL)'); dmCopyVertrag.qu_CreateDropTable.ExecSQL; dmCopyVertrag.qu_tmp_blabla_1.ExecSQL; StatusBar1.SimpleText := 'Erstelle tmp_blabla_11'; StatusBar1.Repaint; dmCopyVertrag.qu_CreateDropTable.SQL.Clear; dmCopyVertrag.qu_CreateDropTable.SQL.Add('CREATE TEMP TABLE tmp_blabla_11 ('); dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_11 INTEGER NOT NULL,'); dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_12 CHAR(21) NOT NULL)'); dmCopyVertrag.qu_CreateDropTable.ExecSQL; dmCopyVertrag.qu_tmp_blabla_11.ExecSQL; System: Windows XP, P4 2,4 GHz Unter NT und einem P3 800 MHz hat's aber schon funktioniert und sogar ohne das Repaint. :wall: |
Re: Neuzeichnen von TStatusbar
Delphi-Quellcode:
Sollte dein Problem lösen.
Statusbar1.Refresh/Repaint;
Oh hast du ja schon. Sind die Querys eventuell zu schnell? |
Re: Neuzeichnen von TStatusbar
Die dauern eigentlich 'ne ganze Weile. Deswegen will ich das ja anzeigen.
|
Re: Neuzeichnen von TStatusbar
War nur eine Vermutung, da sie ja auf dem langsamen System angezeigt wurden. Mach doch mal ein Sleep(2000) nach dem Repaint der Statusbar.
|
Re: Neuzeichnen von TStatusbar
Werde ich vor dem nächsten Programmstart mal einbauen. ;-) Zur Zeit arbeitet das Programm gerade wieder (ca. eine halbe Stunde)
|
Re: Neuzeichnen von TStatusbar
Zitat:
|
Re: Neuzeichnen von TStatusbar
Hallo,
das Problem der mangelnden Aktualisierung hatte ich auch in einem ähnlichen Fall. Bei mir konnte ich das Neuzeichnen durch den Aufruf von 'application.processmessages' (jeweils vor dem Ändern des Textes der Statusleiste) lösen. Gruß, Thimo |
Re: Neuzeichnen von TStatusbar
Das:
Delphi-Quellcode:
Dahinter verbirgt sich u.a. so etwas
dmCopyVertrag.qu_tmp_blabla_11.ExecSQL;
SQL-Code:
Und davon gibt es mehrere. Eingefügt werden 1000 und mehr Datensätze und selectiert wird über Tabellen mit mehreren Tausend Datensätzen.
INSERT INTO tmp_blabla_1
SELECT distinct b2.bla_2, b3.bla_3 FROM blabla_21 b2, tmp_blabal_31 b3 WHERE b2.bla_22 = b3.bla_32 AND b2.bla_23 = b3.bla_33 Und um gleich der Frage vorzubeugen, warum ich nicht erst mal mit wenigen Datensätze teste: Ich nutze das Programm zur Zeit im "scharfen Betrieb" und versuche nur nebenbei die Anzeige in der Statuszeile wieder hinzubekommen. |
Re: Neuzeichnen von TStatusbar
[quote="Igotcha"]
Zitat:
Aber dann ist der Server/die Datenbank grottenlangsam oder die Tabellen sind mehrere zig GB groß. |
Re: Neuzeichnen von TStatusbar
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz