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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2010, 10:37   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
Вопрос Повторяющееся событие в таймере

В таймере дейтвие выпоняется только 1 раз! При повторном нажатии на кнопку выполняется только основная часть кода, таймер не работает! как сделать так что бы процедура работала неоднократно, работала при каждом нажатии на кнопку?
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
 Form1.Timer2.Enabled:= True;
 Num:= 4;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 case Form1.Timer2.Tag of
  0:
    begin
      (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style :=
      (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style + [fsBold];
       Timer2.Tag := 1;
       Exit;
     end;
  1:
    begin
      (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style :=
      (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style - [fsBold];
       Form1.Timer2.Tag := 2;
       Exit;
     end;
  2:
    begin
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style:=
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style + [fsBold];
      Form1.Timer2.Tag:= 3;
      Exit;
    end;
  3:
    begin
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style:=
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style - [fsBold];
      Form1.Timer2.Tag:= 4;
      Exit;
    end;
  4:
    begin
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style:=
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style + [fsBold];
      Form1.Timer2.Enabled:= False;
 case Form1.ComboBox6.ItemIndex of
 0:
  begin
   ShowMessage ('Необходимы значения суточного коэффициента наполняемости МТС');
   Form1.ComboBox6.SetFocus;
   Exit;
  end;
 1:
  begin
   Form1.Enabled:= False;
   Form2.Enabled:= False;
   Form3.Visible:= True;
  end;
 end;
end;
end;
end;
kta87 вне форума Ответить с цитированием
Старый 20.03.2010, 10:42   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Код:
...
3:
    begin
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style:=
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style - [fsBold];
      Form1.Timer2.Tag:= 4;
      Exit;
    end;
  4:
    begin
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style:=
     (FindComponent('Button' + IntToStr(Num)) as TButton).Font.Style + [fsBold];
      Form1.Timer2.Enabled:= False;
      Timer2.Tag := 0;
    end;
 case Form1.ComboBox6.ItemIndex of
 0:
...
Добавлено:

Чем делать форму недоступной, может лучше вообще скрыть её?
Код:
  begin
    Form1.Hide;
    Form2.Hide;
    Form3.Show; 
  end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 20.03.2010 в 10:49.
Marsel737 вне форума Ответить с цитированием
Старый 20.03.2010, 10:57   #3
n971030
 
Регистрация: 18.03.2010
Сообщений: 9
По умолчанию

Можно внотри поставить цикл, а потом генерировать событие нажатия допустим кнопки.
n971030 вне форума Ответить с цитированием
Старый 21.03.2010, 10:08   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
 Form1.Timer2.Enabled:= True;
 Num:= 4;
 Form1.Timer2.Tag:=0; ???
// при первом нажатии это и так так выполнено 
// а при втором кто это должен делать
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 case Form1.Timer2.Tag of
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.03.2010 в 10:11.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие vitamin.rulez Помощь студентам 7 10.02.2009 11:46
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
Событие maha Общие вопросы Delphi 6 18.06.2008 18:53
событие BeforePost azat БД в Delphi 2 17.12.2007 15:34
В целочисленном массиве найти самое часто повторяющееся число Алена Помощь студентам 2 01.11.2007 19:46