Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Focus der Anwendung (https://www.delphipraxis.net/190348-focus-der-anwendung.html)

DieFliege 26. Sep 2016 15:51

Focus der Anwendung
 
Hallo zusammen,

ich habe mal wieder eine (vermutlich) einfache Frage:

Ich habe mir ein kleines Programm gebastelt, was für mich in einem Browser einige Klicks durchführt. Dies onnte ich auch erfolgreich realisieren. Nun wollte ich mir dieses Programm etwas komfortabler gestalten und mir zwei Zähler einbauen. Die Zähler selbst funktionieren ebenfalls. Allerdings ist mir aufgefallen, dass diese Funktion beim Verlust des Focus meines Programms nicht weiter geführt wird. Hier einmal der Code:

Delphi-Quellcode:
procedure TForm1.btn_startClick(Sender: TObject);
begin
  //--
  btn_start.Visible := False;

  while runden > 0 do
  begin
    //------- hier die befehle aufführen, die je runde gemacht werden sollen
    //--------------- Klick hier und Klick da im Browser -------------------
    //----------------------------------------------------------------------
    lbl_runden.Caption := IntToStr(runden) + ' Runden';
    lbl_runden.Update;
    Sleep(5000);

    //-- ----- Restzeit Zähler -----
    for restzeit := restzeit downto 0 do
      begin
        //--
        lbl_restzeit.Caption := IntToStr(restzeit) + ' Sekunde(n)';
        lbl_restzeit.Update;
        Sleep(1000);
      end;
    //-- ----- beendet "while" -----
    runden  := runden - 1;
    restzeit := 10;
  end;
end;
Wenn ich das Programm normal ausführe, ohne das ich im Browser rum klicke (also auch den Focus des Programms nicht verliere), funktioniert es problemlos. Starte ich das Programm und klicke irgendwo im Browser, werden die Zähler nicht mehr in Echtzeit fortgeführt, sondern nur am Ende angezeigt.

Meine Frage: Wie bekomme ich es hin, dass die Zähler trotzdem funktionieren, auch wenn das Programm gerade nicht den Focus hat?

Vorab schon mal vielen Dank für Tipps & Hinweise!

LG DieFliege

Zacherl 26. Sep 2016 17:44

AW: Focus der Anwendung
 
Versuch statt
Delphi-Quellcode:
lbl.Update
mal
Delphi-Quellcode:
Application.ProcessMessages
oder noch besser: Lagere deinen Code in einen Thread aus, dann blockiert auch nicht die komplette GUI während du
Delphi-Quellcode:
Sleep
st.

DieFliege 26. Sep 2016 20:33

AW: Focus der Anwendung
 
Hallo Zacherl,

vielen Dank für Deinen Hinweis - Dieser hat mir weiter geholfen. Auch werde ich mir die Tage einmal das Auslagern in einen Thread ansehen. Dir einen schicken Abend.

Grüßle - DieFliege

himitsu 26. Sep 2016 20:59

AW: Focus der Anwendung
 
Oder statt einer Schlangencode und Sleep eine statusorientierten Code in einem/mehreren Timern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz