Главная страница
    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.51 MB
Время: 0.046 c
2-1187643455
wp2
2007-08-21 00:57
2007.09.16
Как загрузить Rich-тест в компонент TRichEdit на этапе проэктир..


15-1187762538
umbra
2007-08-22 10:02
2007.09.16
Никто не встречал такого вируса/трояна/руткита


2-1187658254
koha
2007-08-21 05:04
2007.09.16
Послать сообщение в Edit1.text


4-1174730784
Torero
2007-03-24 13:06
2007.09.16
Поиск нужной иконки в трее (TrayBar)


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский