Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.033 c
15-1141160136
TStas
2006-02-28 23:55
2006.03.26
Кстати, была интересная ветка про возведение в встепень


15-1141390711
Nic
2006-03-03 15:58
2006.03.26
19" LCD NEC 1970-NXB


2-1141914459
oleg__
2006-03-09 17:27
2006.03.26
TRxFolderMonitor


1-1140854033
аноним
2006-02-25 10:53
2006.03.26
Frame в run-time :)


15-1141385636
Rule
2006-03-03 14:33
2006.03.26
Как расшарить СОМ-порт по сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский