Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Работа с клавиатурой.   Найти похожие ветки 

 
hprx   (2007-08-24 15:32) [0]

Добрый день! Вот пытался сделать постейший клавиатурный тренажер. Посередине формы разместил label, а label.caption написал буквы, с которыми должен работать. Дальше вот:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
if key=70 then Label1.Left:=Label1.Left-32;

Ну проблема в том, что если сейчас нужно нажать буква А(F), то все хорошо, но вот следующая буква допустим О(J), а в коде Key=70.
Что можно сделать?


 
engine ©   (2007-08-24 15:36) [1]


> [0] hprx   (24.08.07 15:32)


> Что можно сделать?


Не нажимать на другие кнопки?


 
Сергей М. ©   (2007-08-24 15:37) [2]

Откуда взялось это самое "70" ?


 
max_   (2007-08-24 15:38) [3]

вот так можно узнать коды клавишь - for i:=0 to 255 do memo1.line.add(chr(i) + " = " inttostr(i));, а после в обр. FormKeyDown() написать if Key = ThisKey (новая глоб. перем., типа char) then ThisKey:=random(256);


 
max_   (2007-08-24 15:41) [4]

блин, ...if Key=ord(ThisKey) then ThisKey:=chr(random(256)), или ThisKey сделать типа Word, и тогда можно оставить так, как написано выше.


 
iXT ©   (2007-08-24 15:48) [5]

> [2] Сергей М. ©   (24.08.07 15:37)
> Откуда взялось это самое "70" ?

Ну как откуда - это код единственной "рабочей кнопки" на клавиатуре или требование заказчика


 
hprx   (2007-08-24 15:55) [6]


> max_   (24.08.07 15:38) [3]
> вот так можно узнать коды клавишь - for i:=0 to 255 do memo1.
> line.add(chr(i) + " = " inttostr(i));, а после в обр. FormKeyDown()
> написать if Key = ThisKey (новая глоб. перем., типа char)
> then ThisKey:=random(256);

Что в коде означает  " = " ?


 
max_   (2007-08-24 16:07) [7]


> Что в коде означает  " = " ?


напиши так - memo1.line.add(chr(i) + " " inttostr(i));


 
max_   (2007-08-24 16:08) [8]

блин, ...memo1.line.add(chr(i) + " " + inttostr(i));


 
hprx   (2007-08-24 16:33) [9]

Извини max_, я вот попробовал то, что ты написал, что-то не получается. Объясни, пожалуйста, для чего используешь Memo1 и что должно быть  + " ?" +


 
max_   (2007-08-24 16:38) [10]

ок...проехали с мемо, у тебя есть буквы, которые надо нажать на клаве, они записаны в label, делаешь тогда так - в обр FormKeyDown() пишешь:

if Key = ord(label.caption[1]) then label.caption:=copy(label.caption, 2, length(label.caption)) else message("не та кнопка");


 
hprx   (2007-08-24 16:47) [11]

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if Key = ord(label.caption[1]) then label.caption:=copy(label.caption, 2, length(label.caption)) else showmessage("не та кнопка");
end;

max_ что бы не нажимал всегда "не та кнопка"?


 
max_   (2007-08-24 16:50) [12]

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var str:string;
begin
str:=label.caption;
if Key = ord(str[1]) then label.caption:=copy(label.caption, 2, length(label.caption)) else showmessage("не та кнопка");
end;


а так?


 
iXT ©   (2007-08-24 16:52) [13]

> Вот пытался сделать постейший клавиатурный тренажер.

Не лучше ли будет почитать букварь?


 
hprx   (2007-08-24 16:54) [14]


> а так?


И так всегда не та кнопка.


 
max_   (2007-08-24 16:55) [15]

раскладку менял?


 
hprx   (2007-08-24 16:57) [16]


> Не лучше ли будет почитать букварь?


Букварь? Почему бы нет? Скажи где, какой взять?
И вот http://www.delphimaster.ru/cgi-bin/forum.pl?n=18 почитай сверху.


 
hprx   (2007-08-24 16:58) [17]


> раскладку менял?

Да менял, и регистр букв тоже.


 
max_   (2007-08-24 17:07) [18]

о, а повесь не на onkeydown, а на onkeypress и напиши там:
str:=label.caption;
if key = str[1] then
... тоже самое


 
@!!ex ©   (2007-08-24 17:15) [19]

> [18] max_   (24.08.07 17:07)

Ты не там ошибку ищешь.

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
var str:string;
begin
str:=UpperCase(label.caption);
if Key = ord(str[1]) then
 label.caption:=copy(label.caption, 2, length(label.caption)) else showmessage("не та кнопку");
end;


 
@!!ex ©   (2007-08-24 17:16) [20]

З.Ы.
С любой раскладкой, с любым регистром.


 
iXT ©   (2007-08-24 17:23) [21]

> Букварь? Почему бы нет? Скажи где, какой взять?

А что-нибудь уже прочитал? Что знаешь?


 
hprx   (2007-08-24 17:36) [22]


> А что-нибудь уже прочитал? Что знаешь?

Тебе названия перечислить?


 
hprx   (2007-08-24 17:46) [23]

max_ , @!!ex делал все как вы сказали, но все равно всегда "не та кнопка", вы не пробовали у вас работает?


 
@!!ex ©   (2007-08-24 18:03) [24]

> [23] hprx   (24.08.07 17:46)

Я пробовал, у меня работает, слюбой раскладкой, с любым регистром, но только с английским языком.


 
hprx   (2007-08-24 18:19) [25]

Да, с английским у меня тоже работает, большое спасибо max_ и @!!ex. Если не трудно ответьте, ещё на вопрос: Благодоря чему в коде при нажатии на правильную кнопку исчезает буква в label и как сделать, чтобы когда буквы кончаться выходило соответствующее сообщение?


 
@!!ex ©   (2007-08-24 18:51) [26]

> [25] hprx   (24.08.07 18:19)

Удаляется первая буква вот здесь:
label.caption:=copy(label.caption, 2, length(label.caption))
Функция копи копирует из строки все, начиная со второго символа, соответственно строка получаеться без первого символа.

Проверяй длину Length(Label.Caption)=0

З.Ы.
Чтобы переделать на русский язык, нужно выставить соответствие буквам.
Например Й = Q Ц = W и т.д.


 
hprx   (2007-08-24 18:53) [27]

@!!ex все понятно. Очень благодарен. Спасибо!


 
Zeqfreed ©   (2007-08-25 01:07) [28]

> @!!ex ©   (24.08.07 18:51) [26]

> Чтобы переделать на русский язык, нужно выставить соответствие
> буквам.
> Например Й = Q Ц = W и т.д.

А если у пользователя будет раскладка отличная от QWERTY?


 
@!!ex ©   (2007-08-25 12:27) [29]

> [28] Zeqfreed ©   (25.08.07 01:07)

Клавиатурные тренажеры пишуться под конкретную раскладку, и учат как правильно держать руки, чтобы достигнуть максимальной эффективности.
Так что ваше замечание в данном случае не уместно.


 
Zeqfreed ©   (2007-08-25 12:59) [30]

> @!!ex ©   (25.08.07 12:27) [29]

Ну ладно, как скажете :)



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.025 c
9-1157787679
Viv
2006-09-09 11:41
2007.09.16
Ищу программку переводящую фонт в бмпшку...


8-1165527875
devastator
2006-12-08 00:44
2007.09.16
SampleGrabber не работает


15-1187275279
Igorek
2007-08-16 18:41
2007.09.16
Project Version


2-1187890177
Alex.rus
2007-08-23 21:29
2007.09.16
Как рисовать прямо на экране мопитора?


1-1183951734
Dr. Andrew
2007-07-09 07:28
2007.09.16
Как эмулировать показ hint нажатием, например, button на форме?