![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
клавиатура
Adios © (2007-02-12 18:24:00)как получить при нажатии число:
стрелка вверх-200
стрелка вниз-208
стрелка влево-203
стрелка вправо-205
W-17
S-31
A-30
D-32
brother (2007-02-15 07:16:00) [1]Удалено модератором
Примечание: МАТ
Adios (2007-02-13 23:43:00) [2]?
Adios (2007-02-12 22:06:00) [3]короче объясняю зачем и где я это увидел:
эмулятор sega "Fusion"
эмулятор PS "eSPXe"
в них нужно програмно осуществить настройку клавишь, эмуляторы от разных производителей, но после того как в них определяешь клавиши они одинаковые, в смысле и там и там
стрелка вверх-200
стрелка вниз-208
стрелка влево-203
стрелка вправо-205
W-17
S-31
A-30
D-32
а значит используется какаято одинаковая кодировка, возможно какойто определённый стандарт, мнебы как нибудь его надо узнать
RASkov (2007-02-12 21:52:00) [4]> приведи пожалуйста пример констант.
Если чесно, я что-то не въехал, какая там у тебя кодировка, но вот можешь свою построить:
const
MyCode: Array[0..255] of Byte=
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 203, 200, 205, 208, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 30, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 31, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.KeyPreview:=True;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var Chislo: Integer;
begin
case Key of
VK_DOWN: Chislo:=208; //как вариант
VK_UP: Chislo:=200; //с числом
VK_LEFT: Chislo:=203; //оставил
VK_RIGHT: Chislo:=205; //тоже
ORD('W'): Chislo:=17;
ORD('A'): Chislo:=30;
ORD('S'): Chislo:=31; //можно дальше
ORD('D'): Chislo:=32; //продолжить список
.....................................
end;
Caption:=Format('Код: %d, Мой код: %d, Chislo: %d', [Key, MyCode[Key], Chislo]);
end;
Adios (2007-02-12 20:47:00) [5]эти значения наверное должны быть обозначены где-то в системе я думаю, а то переменные на всю клавиатуру вводить неохота
Adios (2007-02-12 20:41:00) [6]koha приведи пожалуйста пример констант.
koha (2007-02-12 19:41:00) [7]procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.KeyPreview:=true;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage(IntToStr(Ord(Key)));
end;
а так то необходимо знать текущую кодировку и разницу между кодами = "константа" , например,
Ord(Key)+константа = нужная кодировка.
Efir (2007-02-12 19:39:00) [8]Можно примерно так:
if GetAsyncKeyState(VK_UP)<>0 then ...
if GetAsyncKeyState(VK_DOWN)<>0 then ...
if GetAsyncKeyState(VK_LEFT)<>0 then ...
if GetAsyncKeyState(VK_RIGHT)<>0 then ...
и т.д.
RASkov (2007-02-12 19:39:00) [9]Или так:
KeyPreview = True;
На OnFormKeyUp формы
case Key of
VK_DOWN: ShowMessage('Down Chislo:=208');
VK_UP: ShowMessage('UP Chislo:=200');
VK_LEFT: ShowMessage('Left Chislo:=203');
VK_RIGHT: ShowMessage('Right Chislo:=205');
ORD('W'): ShowMessage('W Chislo:=17');
ORD('A'): ShowMessage('A Chislo:=30');
ORD('S'): ShowMessage('S Chislo:=31');
ORD('D'): ShowMessage('D Chislo:=32');
end;
Adios (2007-02-12 19:01:00) [10]в своей
koha (2007-02-12 18:32:00) [11]- где получить, в своей форме или за прделами формы?