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

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

Подскажиет коды для "вредных" клавиш. [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]

Удалено модератором


Наверх

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