Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Lazarus Pascal - Hoe laat je jouw applicatie wachten zonder "vast" te staan

2 Berichten
1 Gebruikers
0 Reactions
1,375 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
Topic starter  

Een stukje code die ik gebruikt heb om even tijdelijk mijn programma te laten slapen.
In tegenstelling tot "Sleep()", staat bij deze functie jouw applicatie niet vast (Zzz muis, of spinning ball) en kan de gebruiker gewoon doorwerken.

procedure MyDelay(DelayTickCount: DWORD);
  var
    StartTickCount : DWORD;
  begin
    StartTickCount := GetTickCount;
    while (GetTickCount < StartTickCount + DelayTickCount) and (not Application.Terminated) do
      Application.ProcessMessages;
  end;   

Deze functie wacht netjes "DelayTickCount" milliseconden voor het de volgende stap uitvoert en dat zonder dat de gebruiker daar hinder van ondervind.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
Topic starter  

Omdat we in de voorgaande functie GetTickCount gebruikten, wat zo z'n issues heeft en GetTickCount64 blijkt een beter keuze, kun je ook de volgende functie overwegen welke TDateTime gebruikt en ons de vertraging in milliseconden laat opgeven (1000=1sec).

Merk op: dit heeft de dateutils unit nodig.

procedure MyDelay(milliSecondsDelay: int64);
var
  stopTime : TDateTime;
begin
  stopTime := IncMilliSecond(Now,milliSecondsDelay);
  while (Now < stopTime) and (not Application.Terminated) do
    Application.ProcessMessages;
end;

   
BeantwoordenCiteren
Deel: