Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кнопка "Отмена" в приложении / 7 сообщений из 7, страница 1 из 1
04.05.2009, 01:02
    #35966140
MAJIbIIII
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
Такой вопрос:
Нужно в процессе приложения остановить выполнение процедур(ы).
Поискал по форуму, но нужного не нашел, на foxClub'е есть пример: "Термометр с кнопкой Отмена" только он не работает...

Подскажите: такое вообще возможно?

P.S. VFP9 SP2
...
Рейтинг: 0 / 0
04.05.2009, 07:39
    #35966217
Shock19
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
MAJIbIIII,

а почему бы не использовать клавишу ESC ?
в цикле анализировать если нажата клавиша то выходим
...
Рейтинг: 0 / 0
04.05.2009, 08:32
    #35966240
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
MAJIbIIIIТакой вопрос:
Нужно в процессе приложения остановить выполнение процедур(ы).
Поискал по форуму, но нужного не нашел, на foxClub'е есть пример: "Термометр с кнопкой Отмена" только он не работает...

Подскажите: такое вообще возможно?

P.S. VFP9 SP2
Использую аналоничный прогресс-класс при асинхронных команд SQLEXEC и все работает нормально. Главное, не забыть в цикле обращения к такому "термометру" вставить команду DOEVENTS.
С уважением, Алексей
...
Рейтинг: 0 / 0
04.05.2009, 09:26
    #35966283
MAJIbIIII
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
Aleksey-KMAJIbIIIIТакой вопрос:
Нужно в процессе приложения остановить выполнение процедур(ы).
Поискал по форуму, но нужного не нашел, на foxClub'е есть пример: "Термометр с кнопкой Отмена" только он не работает...

Подскажите: такое вообще возможно?

P.S. VFP9 SP2
Использую аналоничный прогресс-класс при асинхронных команд SQLEXEC и все работает нормально. Главное, не забыть в цикле обращения к такому "термометру" вставить команду DOEVENTS.
С уважением, Алексей

Если можно небольшой пример.
Заранее благодарен.
...
Рейтинг: 0 / 0
04.05.2009, 10:37
    #35966421
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
авторНужно в процессе приложения остановить выполнение процедур(ы).

что происходит в процедуре и как Вы управляете
значением value акивикса из процедуры?

что должно произойти по кнопочке "отмена"?
(что нужно сделать с открытыми курсорами , ....?)

могу показать оборачивание какого-то механизма
в класс с подпиской на событие
...
Рейтинг: 0 / 0
04.05.2009, 10:55
    #35966449
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
Примерно так:
1. Создаю объект progress
Код: plaintext
1.
2.
3.
4.
5.
6.
loProgress = CREATEOBJECT('progress2')
WITH m.loProgress
  .Caption = 'Поехали...'
  .Show()
  .pCount = ...
ENDWITH
...
2. Основной цикл
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SCAN
..
   IF m.loProgress.CancelFlag
      *-- Если на объекте - форме loProgress нажата кнопка "Отмена", то свойство CancelFlag = .T.
      IF MESSAGEBOX("Прервать?", 4 + 32 ,"Формировние списка") = IDYES
         m.loProgress.CancelFlag = .F.
         EXIT
     ENDIF
     m.loProgress.CancelFlag = .F.
  ENDIF
  DOEVENTS
.... ОБРАБОТКА ДАННЫХ
  *-- Обновление прогресса
  loProgress.RefreshDisplay(...)
ENDSCAN
С уважением, Алексей
...
Рейтинг: 0 / 0
04.05.2009, 13:19
    #35966779
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кнопка "Отмена" в приложении
DOEVENTS имеет ряд недостатков:
1. довольно медленная команда - притормаживает общий цикл
2. Возможные действия пользователя не ограничиваются кнопкой "отмена", т.е. пользователь может открыть какое-нибудь окошко и начать что-нибудь делать (документы править например). Своего рода многопоточность получается, это необходимо будет учитывать во всем коде приложения.

По моему в данном случае лучше все-таки Escape.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET ESCAPE ON
ON ESCAPE plCancel = .T.
private plCancel
plCancel = .F.
do while .T.
	wait str(seconds(),  10 ,  2 ) window nowait
	if plCancel 
		exit
	endif
enddo
ON ESCAPE
SET ESCAPE OFF
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кнопка "Отмена" в приложении / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]