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

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

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

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

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

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

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

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

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

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

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

могу показать оборачивание какого-то механизма
в класс с подпиской на событие
...
Рейтинг: 0 / 0
Кнопка "Отмена" в приложении
    #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
Кнопка "Отмена" в приложении
    #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
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кнопка "Отмена" в приложении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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