Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизПодскажиет коды для "вредных" клавиш. Найти похожие ветки
← →
Новочеркасский Волк © (2006-03-08 22:20) [0]Для инициализации нажатия какой либо буквенной клавиши я использую код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord("z"));
if (r and 32768)=32768 then
beep;
end;
Всё работает на обычных клавишах у которых и сверху и снизу буква. Но не срабатывает для таких клавиш как: ё, ю,б, э, х, ъ и цифр. Подскажите пожалуйсто может вместо 32768 надо чтото другое подставлять или чтото, как? Подскажите пожалуйсто!!!
------------------------------------------
Заранее всем очень благодарен!!!
← →
Новочеркасский Волк © (2006-03-09 00:16) [1]Удалено модератором
← →
jack128 © (2006-03-09 00:54) [2]
function KeyPressed(Key: word): boolean;
begin
Result := (GetKeyState(Key) and ($1000) = $1000);
end;
← →
Новочеркасский Волк © (2006-03-09 17:38) [3]Извеняюсь за тупость но как это применить, чтоб получить в Edit1 код желаемой клавиши при её нажатии???
-----------------------------------------
Заранее всем очень благодарен!!!
← →
Алхимик © (2006-03-09 19:21) [4]
OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
?
← →
Новочеркасский Волк © (2006-03-10 16:45) [5]И что??? И какую из этих переменных мне в Edit1 отображать??? Чтоб получился код нажатой клавиши? Именно клавиши, не символа!
← →
Сергей М. © (2006-03-10 16:54) [6]
> Новочеркасский Волк © (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 18:07) [7]Блин. Да я не въеду никак можно сразу исходник кода чтоб в Edit1 отображал этот самый код. Я тогда разберусь. ОК?
-----------------------------------------
Заранее всем очень благодарен!!!
← →
jack128 © (2006-03-10 18:18) [8]
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;
← →
Manic Mechanic © (2006-03-10 18:19) [9]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. Дерзай.
← →
grisme © (2006-03-10 18:27) [10]А ты разобрался с этим кодом,что я тебе дал(принцип):
procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord("z"));
if (r and 32768)=32768 then
beep;
end;
?
Если бы разобрался - не задал бы этот вопрос.:)
← →
Новочеркасский Волк © (2006-03-11 15:00) [11]Ну переменная при OnKeyDown r мне ничё не возвращаяет!!! Ну подскажите по нормальному на конкретно заданный вопрос пожалуйсто!!!
----------------------------------------------------------
Заранее всем благодарен.
← →
Новочеркасский Волк © (2006-03-11 15:03) [12]Удалено модератором
← →
grisme © (2006-03-11 16:44) [13]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Edit1.text:="Код нажатой клавиши:"+inttostr(Key);
end;
← →
grisme © (2006-03-11 16:48) [14]В догонку, в [13] лучше не Edit1.text, а Caption! Сейчас тока проверил - ~ работает - код ее 192!:) х (хЭ :)-219 и т.д.:)
← →
Новочеркасский Волк © (2006-03-12 22:44) [15]Да не не то это!!! Ну вот подставил я 192 в код получилось:
procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord("~"));
if (r and 192)=192 then
beep;
end;
Правильно??? И не работает!!! Чё делать ? Надо чёто другое думать!
---------------------------------------------------------------
Заранее всем благодарен!!!
← →
Новочеркасский Волк © (2006-03-12 22:46) [16]Удалено модератором
← →
Virgo_Style © (2006-03-12 22:59) [17]неправильно. и не будет. учиться, три раза. надо.
подскажу, так и быть - не туда 192 пишешь.
← →
grisme © (2006-03-13 04:59) [18]Новочеркасский Волк © (12.03.06 22:44) [15]
вними ответу
Virgo_Style © (12.03.06 22:59) [17]
:) Ты действительно не туда пишешь. Ну я ж тебе приводил двоичный расклад, почему там 32768 должно быть (это так ради намека) :)
← →
Новочеркасский Волк © (2006-03-13 16:06) [19]Virgo_Style спасибо. Намёк понял. Всё работает!!!! Всем спасибо!!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.064 c