procedure TForm1.Updaten;
var
Anzahl, i, DateiNr, Info_Code: Integer;
QuellDatei, Speicherort, Bezeichnung, Datei_Name, SpeicherDatei: String;
QuellDatei_vorhanden, QuellDatei_unbenutzt, Speicherort_vorhanden,
Speicherort_Datum_gleich, Speicherort_Datum_aelter, Speicherort_ueberschreiben,
Datei_kopieren: Boolean;
PB_Rect: TRect;
begin
//Variablen leeren
Info_Code := 0;
//Variablen beschreiben
Speicherort_ueberschreiben := CheckBox_Speicherort_ueberschreiben.Checked;
//Anzahl der ListView-Einträge
Anzahl := ListView_Dateien.Items.Count;
//erste Seite anzeigen
PageControl.ActivePageIndex := 0;
//Komponenten disablen
EnDisableComponents(false);
for i := 0 to Anzahl - 1 do
with ListView_Dateien do
begin
//Wenn die Form beendet wird dann die Schleife unterbrechen
If Form_schliessen then
break;
//Dateinummer angeben
DateiNr := i + 1;
//Quell-Datei, Speicherort und Bezeichnung aus ListView auslesen
QuellDatei := Items.Item[i].SubItems.Strings[0];
Speicherort := Items.Item[i].SubItems.Strings[1];
Bezeichnung := Items.Item[i].SubItems.Strings[2];
//Speicherort mit einem Backslash enden lassen
Speicherort := IncludeTrailingPathDelimiter(Speicherort);
//prüfen ob die Quell-Datei vorhanden ist
QuellDatei_vorhanden := FileExists(QuellDatei);
//prüfen ob die Quell-Datei nicht benutzt wird
QuellDatei_unbenutzt := not IsFileInUse(QuellDatei);
//prüfen ob der Speicherort vorhanden ist
Speicherort_vorhanden := DirectoryExists(Speicherort);
//Dateinamen für Speicherort auslesen
Datei_Name := ExtractFilename(QuellDatei);
//Dateinamen an den Speicherort anhängen, sollte eine Bezeichnung vorhanden
//sein, dann wird diese angehängt
If Bezeichnung <> '' then
SpeicherDatei := Speicherort + Bezeichnung
else
SpeicherDatei := Speicherort + Datei_Name;
//Datum prüfen
If QuellDatei_Vorhanden and FileExists(SpeicherDatei) then
begin
Speicherort_Datum_gleich := DateiDatum(QuellDatei) = DateiDatum(SpeicherDatei);
Speicherort_Datum_aelter := FileAge(SpeicherDatei) > FileAge(QuellDatei);
end
else
begin
Speicherort_Datum_gleich := false;
Speicherort_Datum_aelter := false;
end;
//prüfen ob der Speicherort überschrieben werder darf
If Speicherort_ueberschreiben then
Speicherort_Datum_aelter := false;
//prüfen ob die Checkbox in der ListView angeklickt wurde
Datei_kopieren := Items.Item[i].Checked;
If Datei_kopieren and QuellDatei_vorhanden and QuellDatei_unbenutzt and
Speicherort_vorhanden and not Speicherort_Datum_gleich and
not Speicherort_Datum_aelter then
begin
//ListView nach rechts scrollen
SendMessage(
Handle, WM_HSCROLL, SB_RIGHT, 0);
//kurze Wartezeit
sleep(500);
//Progressbar in der jeweiligen Zeile in der Spalte fünf erzeugen
PB_Rect := Items[i].DisplayRect(drBounds);
with PB_Rect do
begin
Left := Left + Columns[0].Width + Columns[1].Width +
Columns[2].Width + Columns[3].Width;
Right := Left + Columns[4].Width - 1;
Bottom := Bottom - 1;
end;
//ProgressBar beschreiben
with PB_Status do
begin
BoundsRect := PB_Rect;
Visible := true;
Position := 0;
end;
//ProgressBar an die ListView übergeben
Items[i].Data := PB_Status;
try
//
Application.ProcessMessages;
//Datei kopieren
CopyFileWithProgressBar(QuellDatei, SpeicherDatei, PB_Status, true);
//Code 1
Info_Code := 1;
//kurze Wartezeit
sleep(1000);
finally
//Progressbar verstecken
PB_Status.Visible := false;
end;
end
else
begin
If not Datei_kopieren then
//Code 6
Info_Code := 6
else
If not QuellDatei_vorhanden and not Speicherort_vorhanden then
//Code 4
Info_Code := 4
else
If not QuellDatei_vorhanden and Speicherort_vorhanden then
//Code 3
Info_Code := 3
else
If QuellDatei_vorhanden and not Speicherort_vorhanden then
//Code 2
Info_Code := 2
else
If Speicherort_Datum_gleich then
//Code 5
Info_Code := 5
else
If Speicherort_Datum_aelter then
//Code 7
Info_Code := 7
else
If not QuellDatei_unbenutzt then
//Code 8
Info_Code := 8;
end;
//
ListViewInfos(ListView_Dateien, i, 3, Info_Code);
try
Application.ProcessMessages;
except
//Meldung anzeigen
MessageDlg(Msg3, mtInformation, [mbOK], 0);
end;
end;
//Komponenten enablen
EnDisableComponents(true);