Вам нужно сделать это в другой ветке. Вы не можете выполнить такую длинную задачу и ожидать, что пользовательский интерфейс будет применим, когда все это будет сделано в одном потоке.
Вот пример, который я сделал для вас:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
FMX.StdCtrls, System.Zip;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TExtractZip = class(TThread)
private
fZIP: string;
protected
procedure Execute; override;
public
constructor Create(const aZipFile: string);
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
{ TExtractZip }
constructor TExtractZip.Create(const aZipFile: string);
begin
inherited Create(True);
FreeOnTerminate := True;
fZIP := aZipFile;
end;
procedure TExtractZip.Execute;
begin
if TZipFile.IsValid(fZIP) then
TZipFile.ExtractZipFile(fZIP, '.\contents\');
end;
procedure TForm1.btn1Click(Sender: TObject);
var
extractzip: TExtractZip;
begin
extractzip := TExtractZip.Create('.\azipfile.zip');
extractzip.Start;
end;
end.