Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с клавиатурой. [D7, XP]


Страницы:   1 2

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_ что бы не нажимал всегда "не та кнопка"?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо