Count Gizmo |
Отправлено: 12.05.2004, 14:52 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
Кто-нибудь может доходчиво объяснить или (желательнее) показать на примере, как сделать, чтоб во время работы программы, можно было нажимать на кнопки. А то мне нужно сделать кнопку Cancel, а прога не отвечает на внешние воздействия. Просто я сам не смог разобраться, а сделать нужно срочно.
Заранее благодарю. |
|
Gedeon |
Отправлено: 12.05.2004, 15:14 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Берем кнопку и ляпаем ее на форму, в инспекторе обьектов назначаем свойство Cansel = true. Запускаем приложение и радумся .
|
|
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: Спасибо большое. У мя как раз первый случай с вайлом. Ваш совет помог. Теперь кнопка нажимается и работоает, как надо =) |
|