Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.16;
Скачать: CL | DM;

Вниз

Как получить название кнопки?   Найти похожие ветки 

 
}{enon ©   (2003-04-17 17:32) [0]

В общем, пишу игрушку. Нужно, чтобы управление можно было настраивать (в том числе, на CTRL и т.п.). Проблема в том, что функция GetKeyNameText, которая должна выдавать имя кнопки вызывает системную ошибку по некоторому адресу в user32.dll (!).
Вот код:
procedure Tsettings.keysKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
s: string[20];
begin
getkeynametext(key,^s,20);
end;

Пробовал изменять тип s, но ничего не изменяется. Может кто-то знает, в чем дело? Заранее благодарен!


 
Игорь Шевченко ©   (2003-04-17 17:55) [1]

procedure Tsettings.keysKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
s: array [0..20] of char;
begin
getkeynametext(key,s,sizeof(s));
end;


 
}{enon ©   (2003-04-17 18:05) [2]

Спасибо!
Если не трудно, не могли бы объяснить, что не так в моем коде - string это же и есть array of char, но управляемый?


 
MBo ©   (2003-04-17 18:06) [3]

^s - что за дикость?

Обрабатывай WM_KEYDOWN сам:

var
s: array[0..20] of Char;
begin
getkeynametext(m.lparam,s,20);
caption:=s;


или разберись, как Key образуется из lparam


 
}{enon ©   (2003-04-17 18:25) [4]

2 MBo
Это не дикость, а аналогия:
type PChar: ^Char (tooltip при наведении на PChar)

Млин... Не работает - в s помещается пустая строка (все символы нулевые)


 
MBo ©   (2003-04-17 18:40) [5]

}{enon
Я дал рабочий пример. На всякий случай объявление:

procedure WMKeyDown(var m:TMessage); message WM_KeyDown;


 
}{enon ©   (2003-04-17 18:53) [6]

Если обрабатывать это сообщение, то действительно все работает. Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2003.06.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-50476
DiamondShark
2003-05-30 14:28
2003.06.16
Нужен козырный снимок акулы


3-50255
AGAMEMNUM
2003-05-19 13:39
2003.06.16
Как лучше вставить дату


14-50470
Андрей
2003-05-29 23:00
2003.06.16
Программа на Delphi управляет второстипенными устройствами


1-50294
asusfi
2003-06-03 11:25
2003.06.16
Динамический массив, запись, файл


1-50396
Петр
2003-06-03 13:06
2003.06.16
Обработка исключений в DLL