![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с клавиатурой. [D7, XP]
hprx © (2007-08-24 15:32:00)Добрый день! Вот пытался сделать постейший клавиатурный тренажер. Посередине формы разместил 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.
Что можно сделать?
Zeqfreed (2007-08-25 12:59:00) [1]> @!!ex © (25.08.07 12:27) [29]
Ну ладно, как скажете :)
@!!ex (2007-08-25 12:27:00) [2]> [28] Zeqfreed © (25.08.07 01:07)
Клавиатурные тренажеры пишуться под конкретную раскладку, и учат как правильно держать руки, чтобы достигнуть максимальной эффективности.
Так что ваше замечание в данном случае не уместно.
Zeqfreed (2007-08-25 01:07:00) [3]> @!!ex © (24.08.07 18:51) [26]
> Чтобы переделать на русский язык, нужно выставить соответствие
> буквам.
> Например Й = Q Ц = W и т.д.
А если у пользователя будет раскладка отличная от QWERTY?
hprx (2007-08-24 18:53:00) [4]@!!exвсе понятно. Очень благодарен. Спасибо!
@!!ex (2007-08-24 18:51:00) [5]> [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:19:00) [6]Да, с английским у меня тоже работает, большое спасибо max_и @!!ex. Если не трудно ответьте, ещё на вопрос: Благодоря чему в коде при нажатии на правильную кнопку исчезает буква в label и как сделать, чтобы когда буквы кончаться выходило соответствующее сообщение?
@!!ex (2007-08-24 18:03:00) [7]> [23] hprx (24.08.07 17:46)
Я пробовал, у меня работает, слюбой раскладкой, с любым регистром, но только с английским языком.
hprx (2007-08-24 17:46:00) [8]max_, @!!exделал все как вы сказали, но все равно всегда "не та кнопка", вы не пробовали у вас работает?
hprx (2007-08-24 17:36:00) [9]
> А что-нибудь уже прочитал? Что знаешь?
Тебе названия перечислить?
iXT (2007-08-24 17:23:00) [10]> Букварь? Почему бы нет? Скажи где, какой взять?
А что-нибудь уже прочитал? Что знаешь?
@!!ex (2007-08-24 17:16:00) [11]З.Ы.
С любой раскладкой, с любым регистром.
@!!ex (2007-08-24 17:15:00) [12]> [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;
max_ (2007-08-24 17:07:00) [13]о, а повесь не на
onkeydown, а наonkeypressи напиши там:
str:=label.caption;... тоже самое
if key = str[1] then
hprx (2007-08-24 16:58:00) [14]
> раскладку менял?
Да менял, и регистр букв тоже.
hprx (2007-08-24 16:57:00) [15]
> Не лучше ли будет почитать букварь?
Букварь? Почему бы нет? Скажи где, какой взять?
И вот http://www.delphimaster.ru/cgi-bin/forum.pl?n=18почитай сверху.
max_ (2007-08-24 16:55:00) [16]раскладку менял?
hprx (2007-08-24 16:54:00) [17]
> а так?
И так всегда не та кнопка.
iXT (2007-08-24 16:52:00) [18]> Вот пытался сделать постейший клавиатурный тренажер.
Не лучше ли будет почитать букварь?
max_ (2007-08-24 16:50:00) [19]
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;
а так?
hprx (2007-08-24 16:47:00) [20]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_ что бы не нажимал всегда "не та кнопка"?