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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2011, 14:02   #1
getout
 
Регистрация: 11.06.2011
Сообщений: 6
По умолчанию однократное событие

привет всем! как сделать однократное событие на edit 1 , то есть если зажать клаву, то событие продолжается, а нужно что б он один раз сработал и все.
код:
Код:
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Timer1: TTimer;
    Timer2: TTimer;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit2: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    procedure FormCreate(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);

    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
   procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);


     
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  HIT , MIS : Integer;
  i,r: Integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);


begin
  Randomize;

  i:=30 ;

end;

   procedure TForm1.Timer1Timer(Sender: TObject);

begin


   i:= i - 1 ;
  Label3.Caption := ('Îñòàëîñü äî îêîí÷àíèÿ  ') + IntToStr(i)  ;
     if i = 0 then
     begin

     Timer1.Enabled:=False;
     Timer2.Enabled:=False;
     ShowMessage('HIT- ' + IntToStr(hit));
          end;


end;

 procedure TForm1.Timer2Timer(Sender: TObject);

begin
      r:= 49+Random(5);
     Label1.Caption := IntToStr(r - 48);
     Edit1.Clear;
    // Edit1.Enabled:=False;
     Edit1.SetFocus;
     Label6.Caption:= IntToStr(r) ;
end;



 procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

begin
  if Key = 69 then
      begin
     Timer2.Interval := 3000 ;

      timer1.Enabled:= True;
   Timer2.Enabled:= True;
   end ;

   if Key = 77 then
        begin
       Timer2.Interval := 2000;
          timer1.Enabled:= True;
         Timer2.Enabled:= True;
       end ;

   if Key = 72 then
        begin
       Timer2.Interval := 1000;
          timer1.Enabled:= True;
         Timer2.Enabled:= True;
       end ;
end;



procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

begin
   Edit1.Clear;
     Edit1.SetFocus;
     if Key = r then
     begin
        HIT := HIT + 1;
           Label2.Caption := ('HIT- ') + IntToStr(HIT);


     end
        else
         begin
            MIS :=MIS +1;
            Label4.Caption := ('MIS- ') + IntToStr(MIS);
          end;

   Label5.Caption:= IntToStr(key);

end;
end.

Последний раз редактировалось Stilet; 11.06.2011 в 15:50.
getout вне форума Ответить с цитированием
Старый 11.06.2011, 14:07   #2
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Код:
var
  Form1: TForm1;
  i    : Integer = 0;

implementation

{$R *.dfm}

begin
..........................
if i = 0 then begin
Ваше событие.......................
Inc(i);
end;
.............................

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 11.06.2011, 14:52   #3
getout
 
Регистрация: 11.06.2011
Сообщений: 6
Радость

Цитата:
Сообщение от volod3000 Посмотреть сообщение
Код:
var
  Form1: TForm1;
  i    : Integer = 0;

implementation

{$R *.dfm}

begin
..........................
if i = 0 then begin
Ваше событие.......................
Inc(i);
end;
.............................
а если нужно что б, при следующем обновлении рандома (когда рандом сгенерирует следующее число) имели возможность снова ввести число в edit1 ??

Последний раз редактировалось getout; 11.06.2011 в 15:51.
getout вне форума Ответить с цитированием
Старый 11.06.2011, 16:08   #4
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Ловите события обновлении рандома и объявите (в событии) -> i := 0;

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 11.06.2011, 16:15   #5
getout
 
Регистрация: 11.06.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от volod3000 Посмотреть сообщение
Ловите события обновлении рандома и объявите (в событии) -> i := 0;
ыыы))) что то я не до пру, я это примерно как? Пардоньте за тупость, только начинаю изучать

вот , собственно сама прога, если во время игры зажать или нажимать (лихорадочно) циферку, то можно столько "очей" набить!!!
Никак не могу победить эту напасть
Вложения
Тип файла: rar игрушка.rar (170.7 Кб, 10 просмотров)

Последний раз редактировалось getout; 11.06.2011 в 16:21.
getout вне форума Ответить с цитированием
Старый 11.06.2011, 17:55   #6
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Если я правильно понял логику игры , то в
procedure TForm1.Timer2Timer(Sender: TObject);
вставьте :

i := 0;

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 11.06.2011, 18:05   #7
getout
 
Регистрация: 11.06.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от volod3000 Посмотреть сообщение
Если я правильно понял логику игры , то в
procedure TForm1.Timer2Timer(Sender: TObject);
вставьте :

i := 0;
Я написал по другому, но кажись получилось то же самое , что Вы советовали, в итоге все работает !!! Может я там лишнее что то написал, или может что то коряво, но работает!!! кому интересно можете посмотреть !
volod3000 , Вам спасибо за вразумительные советы начинающему !!!
Вложения
Тип файла: rar обновленный Disco Duck.rar (167.9 Кб, 10 просмотров)
getout вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие на F1 fet87 Общие вопросы Delphi 3 31.05.2010 14:10
Событие кнопки Navado Общие вопросы Delphi 7 27.02.2010 13:17
Событие vitamin.rulez Помощь студентам 7 10.02.2009 11:46
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
Событие maha Общие вопросы Delphi 6 18.06.2008 18:53