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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2009, 22:54   #1
Lisi4ka
Пользователь
 
Регистрация: 28.09.2008
Сообщений: 31
По умолчанию "Поймать" событие нажатия на кнопку

Доброго всем времени суток!
Каким образом приостановить выполнение цикла до нажатия на кнопку?
Это должно выглядеть примерно так:
Код:
for i:=to 10 do
 begin
  if () //если кнопку нажали - не знаю, как задать
    then
   begin
    Label1.Caption:= intToStr(i);
    continue;
   end;
 end;
Lisi4ka вне форума Ответить с цитированием
Старый 26.04.2009, 04:35   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

сделай переменную flag: boolean=false; // глобаная

при нажатии на кнопку делаешь ее true а в обработчике пишешь if flag then

и все
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 26.04.2009, 11:35   #3
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

ищем в форме событие OnKeyDown, и в нем пишем этот кусок программы.
вроде так:
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var i:integer;
begin
for i:=to 10 do
 begin
  if (key=VK_UP) //реакция на нажатие стрелочки вверх
    then
   begin
    Label1.Caption:= intToStr(i);
    continue;
   end;
 end;
end;
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 26.04.2009, 15:54   #4
Lisi4ka
Пользователь
 
Регистрация: 28.09.2008
Сообщений: 31
По умолчанию

Спасибо всем, кто ответил! Честно сказать, не получилось у меня ни 1-м, ни 2-м способом Я бы хотела приостанавливать цикл на каждой итерации до нажатия кнопки, подскажите, пжлст, как можно это сделать? Мож. Таймер на форму кинуть и в течение 1 минуты ждать, пока кнопку не нажмут?
Lisi4ka вне форума Ответить с цитированием
Старый 26.04.2009, 16:29   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

переменная flag может получить новое значение только после обработки windows сообщений от кнопки. Для этой обработки необходимо добавить внутрь цикла вот такую строчку

Application.ProcessMessage;

это вызов функций для обработки windows сообщений
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.04.2009, 16:36   #6
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

если тебе нужно выйти из цикла, то пиши break;, а не continue;
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 26.04.2009, 17:05   #7
Lisi4ka
Пользователь
 
Регистрация: 28.09.2008
Сообщений: 31
По умолчанию

Нет, не нужно выходить! Просто надо, чтобы переход на сл. итерацию происходил при нажатии на кнопку.
А можно, пжлст, кусочек маленький примера использования вызова описанной Вами ф-ции. Была бы оч.признательна!
Lisi4ka вне форума Ответить с цитированием
Старый 26.04.2009, 17:26   #8
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Не нужен Вам вобще здесь, при такой постановке вопроса, цикл.Вы же хотите, чтоб выполнялась часть кода только после нажатия кнопки. Вот и используйте запуск вашего кода по событию нажатия кнопки OnClick.Для ограничения количества запусков - вводим переменную-счетчик, которую инкрементируем ( увелич. на 1) по каждому нажатию кнопки.При достижении предельно разрешаемого значения - команда EXIT(выход из процедуры).
Если не понятно, приведу примерный код.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 26.04.2009, 17:37   #9
Lisi4ka
Пользователь
 
Регистрация: 28.09.2008
Сообщений: 31
По умолчанию

-постановка задачи: когда считали циклом очередную запись из Ворда: она должна быть показана юзеру
-юзер, если ему нравится, нажимает кнопочку "Сохранить" - данные записываются в базу, след. итерация начинается
-юзеру не нравится, он нажимает "пропустить" - в базу ничего не идет, начинается след. итерация.
Много кода переделывать, я бы и хотела обойтись малой кровью, а именно: если юзер что-нибудь нажимает, идем дальше, а нет - пускай в экран смотрит
Поэтому если не сложно, киньте код какой-нибудь, который бы позволял цикл приостанавливать. Спасибо!
Lisi4ka вне форума Ответить с цитированием
Старый 26.04.2009, 18:37   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Тогда алгоритм должен выглядеть так:
1. Любым Вашим методом считали порцию текста и вывели ее на экран.
2. Ждем события нажатия кнопок "Сохранить" или "Пропустить".
3. По нажатой "Сохранить" - заносим текст в базу и к пункту 1, а при "Пропустить" - переход к пункту 1.
Все и никаких циклов в обработке ( процедуры считывания, сохранения могут содержать циклы и тюпю).
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TRichViewEdit - как отловить событие "курсор над таблицей" chandrasecar Компоненты Delphi 0 05.04.2009 20:04
C++ StringGrid событие "правый клик" FW-TOT Общие вопросы C/C++ 0 04.03.2009 17:06
C++ StringGrid событие "правый клик" FW-TOT Помощь студентам 2 03.03.2009 19:17
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Как поймать событие в COM? den303 Общие вопросы Delphi 0 13.09.2007 12:06