Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > очередность нажатия клавиш


Автор: Novichek27 14.3.2013, 21:04
Всем привет!

Программа должна показать какая кнопка нажата первой, какая второй и т. д.. Всего 5 кнопок.

Набросал это:

Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if getasynckeystate($70)<>0 then
BitBtn1.Caption:='Вы нажали F1';
if getasynckeystate($71)<>0 then
BitBtn2.Caption:='Вы нажали F2';
if getasynckeystate($72)<>0 then
BitBtn3.Caption:='Вы нажали F3';
if getasynckeystate($73)<>0 then
BitBtn4.Caption:='Вы нажали F4';
if getasynckeystate($74)<>0 then
BitBtn5.Caption:='Вы нажали F5';
end;


Нужно пронумеровать BitBtn-ы после нажатия клавиш по факту.

Заранее благодарен.

Автор: northener 15.3.2013, 00:43
Цитата(Novichek27 @  14.3.2013,  21:04 Найти цитируемый пост)
Всем привет!

Программа должна показать какая кнопка нажата первой, какая второй и т. д.. Всего 5 кнопок.

Какое учебное заведение? Какая учебная задача (Подробно. Желательно строгое цитирование без собственных умозаключений)?

Автор: Novichek27 15.3.2013, 19:57
northener, прошу не отвечать вас на мой вопрос. 


В моей теме нет того что вам нужно, т.е.

Цитата

Какое учебное заведение? Какая учебная задача (Подробно. Желательно строгое цитирование без собственных умозаключений)?

Автор: northener 16.3.2013, 01:20
Цитата(Novichek27 @  15.3.2013,  19:57 Найти цитируемый пост)
northener, прошу не отвечать вас на мой вопрос. 

OK. Не буду дальше принимать участие в вашем топике.
Удачи! Правда неизвестно в чём smile

Автор: Novichek27 17.3.2013, 00:08
На форме есть пять кнопок, каждая кнопка - участник игры. Например: нажаты 5 клавиш с клавиатуры почти одновременно, нужно показать на 5-ти кнопках формы их очередность, т. е. пронумеровать каждого участника после нажатия. Кто был первым, вторым и т. д.

Автор: Чучмек 17.3.2013, 14:23
Для формы ставишь KeyPreview=true
и делаешь обработчик OnKeyDown

Цитата(Novichek27 @  17.3.2013,  00:08 Найти цитируемый пост)
почти одновременно
 только ничего у тебя не получится.
Порядок всегда будет один и тот же.  почти одновременно== одновременно

Автор: Novichek27 17.3.2013, 17:17
Вы ничего не поняли по моему.

Но все удалось.

Код

begin
    if btn.Tag = 0 then
    begin
      Inc(lstIndex);
      btn.Caption:=IntToStr(lstIndex) + ' ' + s;
      btn.Tag := 1;
    end;

Автор: northener 18.3.2013, 00:49
Цитата(Novichek27 @  17.3.2013,  17:17 Найти цитируемый пост)
Вы ничего не поняли по моему.

Эт точно! 
Ни вопрос не поняли, ни решение его. smile

Автор: oleg2s 18.3.2013, 06:29
Код
s
procedure TForm1.FormKeyDown(Sender: TObject; var  Key: Word; Shift: TShiftState);
begin
   case Key of
        112: ShowMessage('Вы нажали F1');
        113: ShowMessage('Вы нажали F2');
        114: ShowMessage('Вы нажали F3');
        115: ShowMessage('Вы нажали F4');
        116: ShowMessage('Вы нажали F5');
   end;
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)