Also entweder du machst das über einen Thread (siehe Vorpost) oder du legst ein array of Boolean an:
Delphi-Quellcode:
// Zuerst definieren wir eine "Enumeration". Das ist sozusagen ein "Konstantenarray" nur etwas bequemer!
// In die Klammern kommen alle Einträge. z.B. "Kontakte herunterladen" oder "Bilder herunterladen" (mir viel nichts besseres ein)
type
TJobs = (jLoadContacts, jLoadImages);
// Nun schreiben wir im Formular ein Boolean array
private
restJobs : Cardinal;
// <!--- Wie viele Jobs noch erledigt werden müssen
jobsCompleted :
array [TJobs]
of Boolean;
// <!--- erster Vorteil: Wir können damit ein array erstellen
procedure LoadContacts;
begin
// Kontakte laden
end;
procedure LoadImages;
begin
// Bilder laden
end;
procedure LoadFromSim;
begin
restJobs := Length(jobsCompleted);
while restJobs > 0
do // Solange es noh was zu erledigen gibt
begin
Application.ProcessMessages;
// Damit die Anwendung net einfriert
// nun überprüfen, ob Kontakte geladen werden können und ob sie überhaupt gelesen werden müssen
if CanLoadContacts
and (
not jobsCompleted[jLoadContacts])
then
begin
LoadContacts;
jobsCompleted[jLoadContacts] := true;
// wenn der Job gelesen werden konnte als wahr einstufen
dec(restJobs);
// Und die anzahl der nicht abgearbeiten Jobs verringern
end;
// Und das mit allen anderen Jobs machen
end;
end;
Ich hoffe mal, dass war deine Frage