Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Programm weiterlaufen lassen
Flamefire - Mo 08.01.07 11:28
Titel: Programm weiterlaufen lassen
Ich habe eine Funktion, die ausgeführt wird, wenn man auf einen Button klickt...
Diese dauert aber sehr lange, sodass ich einen Status dazu anzeigen will...
Jetzt ist aber das Problem, dass das Programm solange komplett ausgelastet ist, dass Anzeigen, neue Eingaben etc. erst gemacht werden, wenn die Funktion fertig ist
Kann ich den Ablauf i-wie in den "Hintergrund bringen"? also so, dass alles weiterabläuft und die Funktion die Stati in ein Label o.ä. ausgibt?
Narses - Mo 08.01.07 12:09
Moin und :welcome: im Forum!
Entweder du fügst
Application.ProcessMessages; in deine Rechenschleife ein (aber nicht zu oft aufrufen, kostet sonst noch mehr Rechenzeit) oder du machst die Berechnung ein einem
THREAD.
cu
Narses
Pille - Mo 08.01.07 12:10
Füge in die Fnktionsschleife ein
Delphi-Quelltext
1:
| Application.ProcessMessages |
ein.
mfg Pille
Flamefire - Mo 08.01.07 14:09
ok mit processmessages wirds schon gehen...
es gibt ja in delphi den fortschrittsbalken. ist der update des balkens bei processmessages dabei?
freedy - Mo 08.01.07 14:13
Wenn du einen neuen Wert in der Progressbar einstellst, wird diese beim nächsten Aufruf von ProcessMessages neugezeichnet. Aber vorsicht: nicht in jedem Zyklus neuzeichen. Die Progressbar verbraucht relativ viel Resourcen. Lieber ungefähr sowas:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for I := 0 to 1000 do begin if (I mod 5 = 0) then begin Application.ProcessMessages; end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!