Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2008, 13:58   #1
BESS
Пользователь
 
Аватар для BESS
 
Регистрация: 30.07.2008
Сообщений: 48
Радость приостановка выполнения процедуры

задача состоит в следующем
выполняется цикл в котором проверяется условие если условие истенно то отобрадается форма а цикл должен быть остановлен ро тех пор пока форма не закроется (реакция пользователя)
иными словами должно получиться что то вроде messagedlg только с произвольной формой
как это реализовать?
BESS вне форума Ответить с цитированием
Старый 12.08.2008, 14:05   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Вызывайте форму в цикле как модальную: form2.showmodal;
zetrix вне форума Ответить с цитированием
Старый 12.08.2008, 14:09   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Как вариант, вызываешь форму как модальную и присваиваешь нужное значение свойству ModalResult кнопки, которая закрывает форму
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 14.09.2008, 23:47   #4
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Что-то я не понял как модальной формой приостановить цикл так, чтобы он потом продолжился с того места с которого была запущена форма....
У меня задача такая же как и автора темы .. Приостановить цикл ... чтобы пользователь выбрал да или нет и выполнилось несколко команд в зависимости от выобра. Попытался сделать это при помощи MessageDlg ...

А вопрос такой : Действительно ли цикл приостанавливается при выполнении MessageDlg ?


код у меня такой
Код:
DataModule4.Table1.Active:=True;
strvl:=Datamodule4.Table1.RecordCount;
strvl2:=Datamodule4.Table5.RecordCount;
Datamodule4.Table1.First ;
DataModule4.Table5.First;
for j:=0 to strvl2-1 do begin
swer:=Datamodule4.Table5.FieldByName('pug').AsString+Datamodule4.Table5.FieldByName('tech').AsString+Datamodule4.Table5.FieldByName('podkom').AsString+Datamodule4.Table5.FieldByName('certeg').AsString;
ch:=0;
for i:=0 to strvl-1 do begin
if swer= (DataModule4.Table1.FieldByName('pug').AsString+ DataModule4.Table1.FieldByName('tech').AsString+DataModule4.Table1.FieldByName('podkom').AsString)+Datamodule4.Table1.FieldByName('certeg').AsString then
begin
  ch:=ch+1 ;
  if MessageDlg('В базе уже есть строка'+DataModule4.Table1.FieldByName('pug').AsString+ DataModule4.Table1.FieldByName('tech').AsString+DataModule4.Table1.FieldByName('podkom').AsString+ Datamodule4.Table1.FieldByName('certeg').AsString+'  с трудоемкостью '+Datamodule4.Table1.FieldByName('trud').AsString+ 'Если будете изменять данные нажмите ОК', mtInformation , [mbOK , mbNo], 0)=mrOk then
  begin
 DataModule4.Table1.Edit;
 DataModule4.Table1.FieldByName('pug').AsString:=DataModule4.Table5.FieldByName('pug').AsString;
 DataModule4.Table1.FieldByName('tech').AsString:=DataModule4.Table5.FieldByName('tech').AsString;
 DataModule4.Table1.FieldByName('podkom').AsString:=DataModule4.Table5.FieldByName('podkom').AsString;
 DataModule4.Table1.FieldByName('certeg').AsString:=DataModule4.Table5.FieldByName('certeg').AsString;
 DataModule4.Table1.FieldByName('trud').AsString:=DataModule4.Table5.FieldByName('trud').AsString;
 DataModule4.Table1.Post;
  end;
sergey113 вне форума Ответить с цитированием
Старый 14.09.2008, 23:56   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Действительно ли цикл приостанавливается при выполнении MessageDlg ?
Да, останавливается.
Проверить это вы можете сами, поставив точку останова на начало цикла и пройдясь по шагам...
mihali4 вне форума Ответить с цитированием
Старый 15.09.2008, 00:53   #6
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Да, останавливается.
Проверить это вы можете сами, поставив точку останова на начало цикла и пройдясь по шагам...
да я пока плохо владею инструментами отладки брейк могу поставить или там вывести сообщение тестовое.. как освою потестирую
sergey113 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приостановка выполнения цикла ACE Valery Общие вопросы C/C++ 21 19.11.2011 12:40
Приостановка цикла для выполнения внешней программы Uomo Общие вопросы Delphi 3 04.04.2008 11:48
Как организовать задержку выполнения?? Kenifer Общие вопросы Delphi 12 03.09.2007 21:56
Как замерить время выполнения программы Gracel Общие вопросы Delphi 5 12.06.2007 22:16
Приостановка программы Hintman Общие вопросы Delphi 6 14.04.2007 23:38