Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.051 c
2-1187980519
led
2007-08-24 22:35
2007.09.16
Edit


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


15-1187364665
isasa
2007-08-17 19:31
2007.09.16
Ищу работу в Киеве (Delphi, вроде знаю)


2-1188118767
ins
2007-08-26 12:59
2007.09.16
HexToInt


15-1187538724
Piter
2007-08-19 19:52
2007.09.16
Очень классная иллюзия





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский