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

Delphi Sources



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

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

Есть база данных на sql server 2008 с номерами телефонов и программа на delphi 2010, осуществляющая поиск по этой базе данных нужного номера. Сам поиск реализован в хранимой процедуре Proc_Poisk_po_nomeru на sql server :
Код:
 
procedure TFormMain.PoiskNomeraClick(Sender: TObject);
var  i: integer;
begin //если в поле поиска номера телефона ничего не введено, то выдаем сообщение об ошибке
   if Length(VvodNomeraDlyaPoiska.Text) < 1 then MessageBox(0,'Номер телефона не задан!','Предупреждение',MB_OK);
   begin 
//делаем поиск по базе данных                             
      ADOStoredProc_Poisk_po_nomeru.Parameters.ParamValues['@nom'] := VvodNomeraDlyaPoiska.Text;
      ADOStoredProc_Poisk_po_nomeru.ExecProc;
//Отображение результата поиска в Grid
      ADOQueryPoisk.Sql.Clear;
      ADOQueryPoisk.Sql.Add('Select Номер,"Дата и время",Длительность, Комментарий from ##Rezultat_poiska_po_nomeru');
      ADOQueryPoisk.Open;
      ShowMessage('Найдено записей по указанному номеру телефона - ' + IntToStr(ADOQueryPoisk.RecordCount));
      end;
   end;
end;
Так как телефонов в БД много и поиск реализован на неполное соответствие, то весь процесс занимает много времени. Поэтому хотелось, чтобы пользователь видел, что поиск идет. Для этого реализована другая форма с анимацией (форма с компонентой Animate1):
Код:
procedure TFormAnimate.FormCreate(Sender: TObject);
begin
   Animate1.Active := true;
end;
Как сделать так, чтобы при вызове хранимой процедуры поиск одновременно запускалась форма с анимацией до окончания процесса поиска? Если просто делать вызов этой формы, то все идет последовательно, то есть пока не закрыть форму с анимацией, хранимая процедура вызываться не будет. Как эти процессы сделать параллельными?

Последний раз редактировалось lmikle, 07.10.2015 в 19:30.
Ответить с цитированием
  #2  
Старый 07.10.2015, 19:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Пользуемся тегами.
2. Форму делаешь StayOnTop
3. Показываешь ее через Show (не ShowModal)
4. Вызываешь поиск
5. По завершению поиска делаешь форме с анимацией Close (и Free, если нужно).
6. Ну и делаешь это все в try..finally, что бы форма в любом случае убралась:
Код:
FormAnimate.Show;
try
  PoiskNomera_stored_proc_call;
finally
  FormAnimate.Close;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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