Текущий архив: 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