Hallo Delphianer*innen,
ich will der TZipFile-class noch eine Methode hinzufügen. Der Anwender wählt ein Archiv aus, dann öffnet sich ein kleines Fenster mit einer ListBox, welches die im Archiv enthaltenen Dateien anzeigt. Der Anwender kann eine Datei auswählen. Das habe ich fertig und in der Test-Umgebung läuft es gut. Aber sicher ist sicher. Ich habe noch kein dynamisches Fenster ohne Parent gebaut.
Delphi-Quellcode:
procedure AuswahlDlg(Filelist: TStringList; out Filename: string);
var
dlgAuswahl: TForm;
LB: TListBox;
btnOk, btnCancel: TButton;
Lbl: TLabel;
begin
dlgAuswahl := TForm.Create(nil);
dlgAuswahl.SetBounds(100,100,300,150);
dlgAuswahl.Caption := 'aus Archiv auswählen';
dlgAuswahl.BorderStyle := bsDialog;
dlgAuswahl.BorderIcons := [biSystemMenu];
dlgAuswahl.Position := poScreenCenter;
dlgAuswahl.Color := clMoneyGreen;
LB := TListBox.Create(dlgAuswahl);
LB.Parent := dlgAuswahl;
LB.Items.Assign(FileList);
LB.ItemIndex := 0;
LB.SetBounds(20, 20, 120, 58);
btnOk := TButton.Create(dlgAuswahl);
btnCancel := TButton.Create(dlgAuswahl);;
btnOk.Parent := dlgAuswahl; btnCancel.Parent := dlgAuswahl;
btnOk.Left := 150; btnOk.Top := 20;
btnCancel.Left := 150; btnCancel.Top := 55;
btnCancel.Cancel := true;
btnOk.ModalResult := mrOk; btnCancel.ModalResult := mrCancel;
Lbl := TLabel.Create(dlgAuswahl);
Lbl.Parent := dlgAuswahl;
Lbl.Left := 20; Lbl.Top := 90;
Lbl.Caption := FileList.Count.ToString;
btnOk.Caption := 'Übernehmen'; btnCancel.Caption :='Verwerfen';
Filename := '';
if dlgAuswahl.ShowModal = mrOK then begin
Filename := FileList[LB.ItemIndex];
end;
LB.Destroy;
Lbl.Destroy;
btnOk.Destroy; btnCancel.Destroy;
dlgAuswahl.Destroy;
end;
Kann ich das in die class TZipFile einbauen, ohne das mir da was um die Ohren fliegt. Ich will die Datei anschließend im Temp-Ordner auspacken. Das direkte Übernehmen krieg ich nicht hin, war hier lange Thema. Den TypeCast von TByte zu einer komplizierten Record-Struktur schaffe ich nicht.
Danke und Gruß
Willie.