Попытку подключения к постгресу осуществляю, в основной форме программы, следующим образом, как показано ниже.
Код:
FMBZ_MyThread := TFMBZ_ProgressBarThread.Create(False);
FMBZ_MyThread.Priority:= tpNormal;
sleep(50);
try
iFMBZ_ZConnection.Connect;
except
ShowMessage('Please clarify: is the server running on host ' + iFMBZ_ZConnection.HostName + '?');
end;
где iFMBZ_ZConnection это переменная TZConnection;
Но в процессе подключения программа "немножко" зависает и для того что бы показать что идет подключение и нужно подождать, ввел прогресбар который запускаю в потоке создаваемом до подключения к постгресу.
Код:
FMBZ_MyThread := TFMBZ_ProgressBarThread.Create(False);
FMBZ_MyThread.Priority:= tpNormal;
процедуры изменения прогресбара ниже
Код:
procedure TFMBZ_ProgressBarThread.Execute;
while not(FMBZ_MyThread.Terminated) do
begin
sleep(50);
PostMessage(FMBZ_MainAdminForm.Handle,PROGRESS_POS,0,1);
end;
end;
procedure TFMBZ_MainAdminForm.SetProgressPos(var Msg: TMessage);
begin
FMBZ_ProgressBar.Position:=FMBZ_ProgressBar.Position + Msg.LParam;
if (FMBZ_ProgressBar.Position >= FMBZ_ProgressBar.Max) then
FMBZ_ProgressBar.Position := 0;
FMBZ_ProgressBar.Refresh;
end;
НО, шкала прогресбара начинает изменяться только после обработки подключения. (Поток делал и через синхронайз если что, результат одинаковый)
Может ли кто нибудь подсказать как
1) Либо заставить прогресбар изменяться в процессе подключения к постгресу
2) Либо заставить не зависать программу
Спасибо