Главная страница
    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.039 c
2-1142339389
Fenix
2006-03-14 15:29
2006.03.26
Создание разделителя между RichEdit ами.


11-1123144916
jumpingjack
2005-08-04 12:41
2006.03.26
Запись/чтение текущего времени в файл


1-1140096851
Дмитрий_177
2006-02-16 16:34
2006.03.26
Как увеличить изображение в Image?


3-1138788233
AlAnNik
2006-02-01 13:03
2006.03.26
Проблема с MSDE


2-1142226931
Rubey
2006-03-13 08:15
2006.03.26
Текущая строка в STRINGGRID





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский