![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получение текстового представления из виртуального кода клавиши
ter © (2007-09-03 10:15:00)вот неработающий код:
procedure Button1Click(Sender: TObject);
Var FModifiers: Byte;
FHotKey: Byte;
C: TListItem;
Key: Longint;
begin
C := hList.ItemFocused;
if C = nil then Exit;
FModifiers := 0;
if cControl.Checked then
FModifiers := FModifiers or MOD_CONTROL;
if cShift.Checked then
FModifiers := FModifiers or MOD_SHIFT;
if cAlt.Checked then
FModifiers := FModifiers or MOD_ALT;
if cWin.Checked then
FModifiers := FModifiers or MOD_WIN;
FHotKey := HotKey1.HotKey;
Key := MakeWord(FHotKey,FModifiers);
C.SubItems[0] := KeyToText(Key);
C.Data := Pointer(Key);
end;
function KeyToText(Key: Longint): String;
Var FModifiers: Byte;
FHotKey,res: Byte;
S,AA: String;
A: array[0..31] of char;
VirtCode,ScanCode: Integer;
begin
FModifiers := LoWord(HiByte(Key));
FHotKey := LoWord(LoByte(Key));
S := '';
if (FModifiers and MOD_CONTROL) = MOD_CONTROL then S := S + 'Control+';
if (FModifiers and MOD_SHIFT) = MOD_SHIFT then S := S + 'Shift+';
if (FModifiers and MOD_ALT) = MOD_ALT then S := S + 'Alt+';
if (FModifiers and MOD_WIN) = MOD_WIN then S := S + 'Win+';
ScanCode := MapVirtualKeyEx(FHotKey, 0);
A := #0;
res := GetKeyNameText(ScanCode,A, 32);
Result := S + StrPas(A);
end;
ter (2007-09-03 11:24:00) [1]О!
спасибо!
Leonid Troyanovsky (2007-09-03 11:21:00) [2]
> ter (03.09.07 11:12) [5]
> нету в хелпе
Menus.ShortCutToText
--
Regards, LVT.
ter (2007-09-03 11:12:00) [3]нету в хелпе
delphi 2007
Leonid Troyanovsky (2007-09-03 11:10:00) [4]
> ter (03.09.07 11:02) [3]
> это ж где такая функция объявлена?
В хелпе ;)
--
Regards, LVT.
ter (2007-09-03 11:02:00) [5]это ж где такая функция объявлена?
Leonid Troyanovsky (2007-09-03 10:52:00) [6]
> ter (03.09.07 10:15)
> FHotKey := HotKey1.HotKey;
ShortCutToText(FHotKey)
--
Regards, LVT.
ter (2007-09-03 10:30:00) [7]Все, вопрос снят, проблема решена:
ScanCode := MapVirtualKey(FHotKey, 0) shl 16;