Fortschritt anzeigen während langdauender Funktion?
-
Aber was ist, wenn ich während meiner Funktion den Fortschritt anzeigen möchte?
Meine Funktion dauert ca. 20 Sekunden.
Meine Funktion ist ungefähr so aufgebaut:
qry_gruppen->Open() ; qry_gruppen->First() ; while (!qry_gruppen->Eof) { Label2->Caption = qry_gruppen->FieldByName("gr_name")->AsAnsiString ; // viel Code der lange dauert :P //... qry_gruppen->Next() ; } qry_gruppen->Close() ;
Aber im Label passiert nichts, bis die Funktion zu Ende gelaufen ist
Auf ein
ShowMessage(qry_gruppen->FieldByName("gr_name")->AsString) ;
hingegen reagiert er!
Was muss ich machen, dass er das Label->Caption auch anzeigt? Später soll hier eine ProgressBar hin.
-
nach:
qry_gruppen->Next() ;
ein:
Application->ProcessMessages();
grüssle
-
Hallo
Besser als ProcessMessages ist es aber, die Berechnung in einen extra Thread auszulagern und den Fortschritt synchroniziert an den GUI-Thread zu übergeben.
bis bald
akari