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


Anmelden zum Antworten