Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.09.2015, 08:02
Maxjuvefan Maxjuvefan вне форума
Прохожий
 
Регистрация: 24.08.2015
Сообщения: 30
Версия Delphi: delphi 2010
Репутация: 10
По умолчанию Параллельные процессы в Delphi 2010

Ребят, есть код:
Код:
procedure TFormMain.BitBtn2Click(Sender: TObject);
begin
   FormAnimate.ShowModal;
   ADOStoredProcImport.ExecProc;
   FormAnimate.Close;
   ShowMessage('Информация передана');
end;
Админ: Пользуемся тегами для оформления кода!

В этой процедуре идет вызов отдельной формы с анимацией, на ней располагается компонент TAnimate, к компоненту прикреплен файл avi. После вызова формы идет использование хранимой процедуры ADOStoredProcImport.ExecProc, которая осуществляет передачу данных из файла в базу данных. Далее закрытие формы с анимацией и вывод сообщения, что данные переданы. Проблема в том, что процессы идут последовательно, и пока форма с анимацией работает, вызов хранимой процедуры не осуществляется.
Как сделать в Delphi 2010, чтобы эти два процесса шли одновременно, то есть во время работы хранимой процедуры (передача данных) на экране шла анимация с другой формы?

Последний раз редактировалось Admin, 10.09.2015 в 19:11.
Ответить с цитированием
  #2  
Старый 10.09.2015, 09:08
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

потоки и еще раз потоки...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 10.09.2015, 20:03
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Например можно попробовать выполнить хранимку асинхронно, а уже на событие ее завершения повесить вызов:
Код:
FormAnimate.Close;
ShowMessage('Информация передана')
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 10.09.2015, 21:54
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,022
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, как уже написали, лучше использовать потоки.
Простой способ поправить то, что у тебя уже есть:
1. Ставим у FormAnimate FormStyle в fsTopmost (или как оно там называется, ну что бы форма отрисовывалась поверх всех окон).
2. Заместо ShowModal используем просто Show.
3. После Show ставим Application.ProcessMessages (надо дать форме прорисоваться).
Далее так, как у тебя. Суррогат, конечно, но ничего не надо переделывать по серьезному.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter