Попытку подключения к постгресу осуществляю, в основной форме программы, следующим образом, как показано ниже.
Код:
1 2 3 4 5 6 7 8 9 | 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;
Но в процессе подключения программа "немножко" зависает и для того что бы показать что идет подключение и нужно подождать, ввел прогресбар который запускаю в потоке создаваемом до подключения к постгресу.
Код:
1 2 | FMBZ_MyThread := TFMBZ_ProgressBarThread . Create( False );
FMBZ_MyThread . Priority:= tpNormal;
|
процедуры изменения прогресбара ниже
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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) Либо заставить не зависать программу
Спасибо