C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Кнопка Cancel, Please help!
Count Gizmo
Отправлено: 12.05.2004, 14:52


Ученик-кочегар

Группа: Участник
Сообщений: 9



Кто-нибудь может доходчиво объяснить или (желательнее) показать на примере, как сделать, чтоб во время работы программы, можно было нажимать на кнопки. А то мне нужно сделать кнопку Cancel, а прога не отвечает на внешние воздействия. Просто я сам не смог разобраться, а сделать нужно срочно.
Заранее благодарю.
Gedeon
Отправлено: 12.05.2004, 15:14


Ветеран

Группа: Модератор
Сообщений: 1742



Берем кнопку и ляпаем ее на форму, в инспекторе обьектов назначаем свойство Cansel = true. Запускаем приложение и радумся biggrin.gif .
olegenty
Отправлено: 12.05.2004, 15:19


Ветеран

Группа: Модератор
Сообщений: 2412



1. Это длинный цикл, например
CODE

   while (условие)
   {
       действия
   }

тогда делаешь следующее
1.1 добавляешь флаг, устанавливаешь
1.2 в цикл добавляешь Application->ProcessMessages();
1.3 в обработчик кнопки — переустановку флага
1.4 в условие — добавляешь проверку флага:
CODE

   Flag = true;
   ...
   while (условие && Flag)
   {
       действия;
       Application->ProcessMessages();
   }


   viod __fastcall Form1::buCanselClick...
   {
       Flag = false;
   }


кроме этого, цикл можно вынести в поток. читай о TThread и его наследниках

2. Твоё приложение — клиент (БД и т.д.)
тогда всё зависит от того, предоставляет ли сервер интерфейс асинхронного управления. если да, изучай его и пользуйся, если нет, то либо прога будет подвисать во время длительного отклика сервера, либо выноси опять же в поток (наследник TThread), ну и по крайней мере прога висеть не будет...
Gedeon
Отправлено: 12.05.2004, 15:30


Ветеран

Группа: Модератор
Сообщений: 1742



Да, бывает, чето я невнимательно вопрос прочитал.
Count Gizmo
Отправлено: 12.05.2004, 16:10


Ученик-кочегар

Группа: Участник
Сообщений: 9



2 olegenty: Спасибо большое. У мя как раз первый случай с вайлом. Ваш совет помог. Теперь кнопка нажимается и работоает, как надо =)

Вернуться в Вопросы программирования в C++Builder