Правильно использовать TAniIndicator в мобильном устройстве Firemonkey для ожидания обработки
Я использую Delphi XE-5 (мобильное приложение Firemonkey)
Я пытаюсь заставить TAniIndicator работать, отображая во время моей длинной обработки. У меня есть TAniIndicator (AniIndi) на моей основной форме, но он не вращается. Отображается правильно, но не вращается.
begin
Loading:= True;
AniIndi.Visible:= True;
AniIndi.Enabled:= True;
UpdateAll;
Application.ProcessMessages;
//do my processsing here
Loading:= False;
AniIndi.Enabled:= False;
AniIndi.Visible:= False;
UpdateAll;
Application.ProcessMessages;
end;
// РЕДАКТИРОВАТЬ НА ОСНОВЕ РЕМИс ответом
TLoadThread = class(TThread)
public
Config: Boolean;
constructor Create(const aConfig: Boolean); reintroduce;
protected
procedure DoProcessing;
procedure Execute; Override;
end;
var
loading: Boolean = false;
zLThread: TLoadThread = nil;
constructor TLoadThread.Create(const aConfig: Boolean);
begin
inherited Create(true);
Config:= aConfig;
end;
procedure TLoadThread.DoProcessing;
var
begin
//do processing here and update main form
end;
procedure TLoadThread.Execute;
begin
FreeOnTerminate:= true;
Synchronize(DoProcessing);
end;
procedure TfrmMain.FormActivate(Sender: TObject);
begin
zLThread:= TLoadThread.Create(True, Host, NamePath, Config, Port);
zLThread.OnTerminate := ThreadTerminated;
zLThread.Start;
Loading := True;
AniIndi.Visible := True;
AniIndi.Enabled := True;
UpdateAll;
end;
procedure TfrmMain.ThreadTerminated(Sender: TObject);
begin
zLThread := nil;
Loading := False;
AniIndi.Enabled := False;
AniIndi.Visible := False;
UpdateAll;
end;