![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажиет коды для "вредных" клавиш. [D6, XP]
Новочеркасский Волк © (2006-03-08 22:20:00)Для инициализации нажатия какой либо буквенной клавиши я использую код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord('z'));
if (r and 32768)=32768 then
beep;
end;
Всё работает на обычных клавишах у которых и сверху и снизу буква. Но не срабатывает для таких клавиш как: ё, ю,б, э, х, ъ и цифр. Подскажите пожалуйсто может вместо 32768 надо чтото другое подставлять или чтото, как? Подскажите пожалуйсто!!!
------------------------------------------
Заранее всем очень благодарен!!!
Новочеркасский Волк (2006-03-13 16:06:00) [1]Virgo_Style спасибо. Намёк понял. Всё работает!!!! Всем спасибо!!!!
grisme (2006-03-13 04:59:00) [2]Новочеркасский Волк © (12.03.06 22:44) [15]
вними ответу
Virgo_Style © (12.03.06 22:59) [17]
:) Ты действительно не туда пишешь. Ну я ж тебе приводил двоичный расклад, почему там 32768 должно быть (это так ради намека) :)
Virgo_Style (2006-03-12 22:59:00) [3]неправильно. и не будет. учиться, три раза. надо.
подскажу, так и быть - не туда 192 пишешь.
Новочеркасский Волк (2006-03-12 22:46:00) [4]Удалено модератором
Новочеркасский Волк (2006-03-12 22:44:00) [5]Да не не то это!!! Ну вот подставил я 192 в код получилось:
procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord('~'));
if (r and 192)=192 then
beep;
end;
Правильно??? И не работает!!! Чё делать ? Надо чёто другое думать!
---------------------------------------------------------------
Заранее всем благодарен!!!
grisme (2006-03-11 16:48:00) [6]В догонку, в [13] лучше не Edit1.text, а Caption! Сейчас тока проверил - ~ работает - код ее 192!:) х (хЭ :)-219 и т.д.:)
grisme (2006-03-11 16:44:00) [7]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Edit1.text:='Код нажатой клавиши:'+inttostr(Key);
end;
Новочеркасский Волк (2006-03-11 15:03:00) [8]Удалено модератором
Новочеркасский Волк (2006-03-11 15:00:00) [9]Ну переменная при OnKeyDown r мне ничё не возвращаяет!!! Ну подскажите по нормальному на конкретно заданный вопрос пожалуйсто!!!
----------------------------------------------------------
Заранее всем благодарен.
grisme (2006-03-10 18:27:00) [10]А ты разобрался с этим кодом,что я тебе дал(принцип):
procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord('z'));
if (r and 32768)=32768 then
beep;
end;
?
Если бы разобрался - не задал бы этот вопрос.:)
Manic Mechanic (2006-03-10 18:19:00) [11]unit KeyCodeUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Panel1.Caption:= IntToStr(Key);
end;
end.
Твоя задача - заменить Panel1 на Edit1. Дерзай.
jack128 (2006-03-10 18:18:00) [12]
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Edit1.Text := '#' + IntToStr(Key); // показываешь код введенной клавиши
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Key := #0; // чтобы сам введенный символ не отображался в Edit
end;
Новочеркасский Волк (2006-03-10 18:07:00) [13]Блин. Да я не въеду никак можно сразу исходник кода чтоб в Edit1 отображал этот самый код. Я тогда разберусь. ОК?
-----------------------------------------
Заранее всем очень благодарен!!!
Сергей М. (2006-03-10 16:54:00) [14]
> Новочеркасский Волк © (10.03.06 16:45) [5]
> какую из этих переменных
Нет тут "переменных".
Есть параметры процедуры обработки события OnKeyDown.
Параметр Key как раз и содержит код нажатой клавиши.
Цитата из справки :
The Key parameter is the key on the keyboard. For non-alphanumeric keys, use virtual key codes to determine the key pressed. For more information, see Virtual Key codes.
Новочеркасский Волк (2006-03-10 16:45:00) [15]И что??? И какую из этих переменных мне в Edit1 отображать??? Чтоб получился код нажатой клавиши? Именно клавиши, не символа!
Алхимик (2006-03-09 19:21:00) [16]
OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);?
Новочеркасский Волк (2006-03-09 17:38:00) [17]Извеняюсь за тупость но как это применить, чтоб получить в Edit1 код желаемой клавиши при её нажатии???
-----------------------------------------
Заранее всем очень благодарен!!!
jack128 (2006-03-09 00:54:00) [18]
function KeyPressed(Key: word): boolean;
begin
Result := (GetKeyState(Key) and ($1000) = $1000);
end;
Новочеркасский Волк (2006-03-09 00:16:00) [19]Удалено модератором