На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
  
> Процесс подключения к постгресу , прогрес бар не работает в процессе подключения к постгресу
    Попытку подключения к постгресу осуществляю, в основной форме программы, следующим образом, как показано ниже.

    ExpandedWrap disabled
      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;

    Но в процессе подключения программа "немножко" зависает и для того что бы показать что идет подключение и нужно подождать, ввел прогресбар который запускаю в потоке создаваемом до подключения к постгресу.

    ExpandedWrap disabled
      FMBZ_MyThread := TFMBZ_ProgressBarThread.Create(False);
      FMBZ_MyThread.Priority:= tpNormal;

    процедуры изменения прогресбара ниже

    ExpandedWrap disabled
      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) Либо заставить не зависать программу

    Спасибо
      Все правильно. Обработчик в главной форме вошел в iFMBZ_ZConnection.Connect и там застрял. Вспомогательный поток шлет сообщения, но толку от них, если главный поток по-прежнему внутри iFMBZ_ZConnection.Connect.
      Т.ч. либо
      1) Connect в отдельном потоке
      2) Форма-ждун на Winapi, см. тут.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0235 ]   [ 17 queries used ]   [ Generated: 28.03.24, 20:43 GMT ]