a demo to you:
unit MyZip_Unit;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, VCLUnZip, VCLZip,kpZipObj, filectrl;type
  TForm1 = class(TForm)
    myzip: TVCLZip;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    Button4: TButton;
    sfn: TEdit;
    Pwe: TEdit;
    incpw: TCheckBox;
    Button5: TButton;
    inzip: TEdit;
    Button6: TButton;
    outdir: TEdit;
    Button7: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button2Click(Sender: TObject);
var op:topendialog; i:integer;
begin
  op:=topendialog.Create(nil);
  op.Options:=[ofAllowMultiSelect,ofReadOnly,ofPathMustExist, ofFileMustExist];
  op.Execute;
  if op.FileName<> '' then
     for i:= 0 to Op.Files.Count-1 do
         Memo1.Lines.Add(Op.Files.Strings[i]);
  op.Free;
end;procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  With myZip do
    begin
      ZipName := sfn.Text;
      if incpw.Checked then
        password:=pwe.Text;
      for i:=0 to memo1.Lines.Count-1 do
      FilesList.Add(memo1.lines[i]); //* Zip all .PAS files */
      Recurse := True; //* Recurse directories */
      StorePaths := false;      //* Keep path information */
      packLevel := 9;  //* Highest level of compression */
      //NumberZipped := Zip; //* Return value of Zip is the actual number of files zipped */
      zip;
    end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
  memo1.Clear;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  memo1.Clear;
end;procedure TForm1.Button4Click(Sender: TObject);
var sp:tsavedialog;  savefilename:string;
begin
  sp:=tsavedialog.Create(nil);
  sp.Filter:='Zip file|*.zip';
  sp.DefaultExt:='zip';
  sp.Execute;
  if sp.FileName<>'' then savefilename:=sp.FileName;
  sp.Free;
  sfn.Text:=savefilename;
end;procedure TForm1.Button5Click(Sender: TObject);
begin
   With myZip do
    begin
      ZipName := inzip.Text;
      Destdir:=outdir.Text;
      FilesList.Add('*.*'); 
      DoAll := true;
      if incpw.Checked then
        password:=pwe.Text;
      Recurse := True; //* Recurse directories */
      StorePaths := true;      //* Keep path information */
      DoAll := False;
      unzip;
    end;
end;procedure TForm1.Button6Click(Sender: TObject);
var sp:tsavedialog;  savefilename:string;
begin
  sp:=tsavedialog.Create(nil);
  sp.DefaultExt:='zip';
  sp.Execute;
  if sp.FileName<>'' then savefilename:=sp.FileName;
  sp.Free;
  inzip.Text:=savefilename;
  myzip.ZipName:=inzip.Text;
  myzip.ReadZip;
  myzip.FillList(memo1.lines);
end;procedure TForm1.Button7Click(Sender: TObject);
var dir:string;
begin
  dir:='c:\';
  if SelectDirectory(dir, [sdAllowCreate, sdPerformCreate, sdPrompt],0) then
     outdir.Text:=dir;
end;end.