Форум: "KOL";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизОтображение ShortCut(Accelerator) в главном меню Найти похожие ветки
← →
Mist (2004-02-13 11:28) [0]Привет всем.
Суть. (используется библиотека 1.90)
Пункты главного меню привязаны к ActionList в котором заданы Accelerator.
В режиме разработки отображение нормальное, а в запущенном приложении
пункт меню выглядит примерно так: "Вырезать Ctrl+PAlt+BackspaceShift+Del"
Т.е. собираются все сочетания (находящиеся в ActionList) до "Ctrl".
Такой эффект наблюдается для всех клавиш не содержаши "Ctrl".
Если Accelerator добавлен в свойствах самого меню то все ОК.
И еще, так разные мелочи:
1. Клавиши Insert, Delete, PageUp, PageDown (возможно и др.) приходится
вводить вручную т.к. свойством Accelerator воспринимаются их сокращенные
названия Ins, Del, PgUp и PgDown соответственно, а ввод по нажатию клавиш дает из полное названи.
2. При установке Action для пунков меню свойство caption получает
название с Accelerator: "&Вырезать|Shift+Ins". Может конечно так
задумано, но мне потом приходиться это исправлять.
3. Accelerator в меню связанного с ActionList отображается и в случае
установки свойства showShortCuts=False компонента TKOLMainMenu.
← →
RA © (2004-02-14 17:44) [1]У меня та же проблема в 1.86, думал, что уже исправлено и исправлять не стал. придется исправлять.
← →
RA{Upgrate for mirror.pas} (2004-02-17 12:15) [2]Решение проблемы с выводом ShortCut. Надо поправить mirror.pas
function TKOLAccelerator.AsText: String;
var S: String;
begin
asm
jmp @@e_signature
DB "#$signature$#", 0
DB "TKOLAccelerator.AsText", 0
@@e_signature:
end;
Result:="";//Добавить {RA}
if kapControl in Prefix then
Result := "Ctrl+";
if kapAlt in Prefix then
Result := Result + "Alt+";
if kapShift in Prefix then
Result := Result + "Shift+";
Чтобы поправить проблему
>Клавиши Insert, Delete, PageUp, PageDown (возможно и др.) >приходится
>вводить вручную т.к. свойством Accelerator воспринимаются их >сокращенные
>названия Ins, Del, PgUp и PgDown соответственно, а ввод по >нажатию клавиш дает из полное названи.
Есть 2 варианта:
1) в mirror.pas исправить код, чтобы выглядел так:
// Maxim Pushkar:
const VirtualKeyNames: array [TVirtualKey] of string =
( "", "Back"{"BackSpace"}, "Tab", "CLEAR", "Enter", "Pause", "CapsLock",
"Escape"{"Esc"}, "Space", "PageUp", "PageDown", "End", "Home", "Left",
"Up", "Right", "Down", "SELECT", "EXECUTE", "PrintScreen",
"Ins", "Delete"{"Del"}, "Help"{"?"}, "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",
"I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z", "LWin", "RWin", "APPS",
"Numpad0", "Numpad1", "Numpad2", "Numpad3", "Numpad4",
"Numpad5", "Numpad6", "Numpad7", "Numpad8", "Numpad9",
"*", "+", "|", "-", ".", "/", "F1", "F2", "F3", "F4",
"F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13",
"F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21",
"F22", "F23", "F24", "NumLock", "ScrollLock", "ATTN", "CRSEL",
"EXSEL", "EREOF", "PLAY", "ZOOM", "PA1", "OEMCLEAR");
2) Или же править в mckAccEditor.inc процедуру
procedure TKOLAccEdit.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var S, K: String;
begin
if (Key = VK_CONTROL) or (Key = VK_SHIFT) or (Key = VK_MENU) then Exit;
if Shift * [ ssShift, ssAlt, ssCtrl ] = [ ] then Exit;
S := "";
if ssCtrl in Shift then S := S + "Ctrl+";
if ssAlt in Shift then S := S + "Alt+";
if ssShift in Shift then S := S + "Shift+";
case Key of
VK_CANCEL : K := "Cancel" ;
VK_BACK : K := "BackSpace"{"Back"} ;
VK_TAB : K := "Tab" ;
VK_CLEAR : K := "Clear" ;
VK_RETURN : K := "Enter" ;
VK_PAUSE : K := "Pause" ;
VK_CAPITAL : K := "CapsLock" ;
VK_ESCAPE : K := "Escape"{"Escape"} ;
VK_SPACE : K := "Space" ;
VK_PRIOR : K := "PgUp" ;
VK_NEXT : K := "PgDn" ;
VK_END : K := "End" ;
VK_HOME : K := "Home" ;
VK_LEFT : K := "Left" ;
VK_UP : K := "Up" ;
VK_RIGHT : K := "Right" ;
VK_DOWN : K := "Down" ;
VK_SELECT : K := "Select" ;
VK_EXECUTE : K := "Execute" ;
VK_SNAPSHOT : K := "PrintScreen" ;
VK_INSERT : K := "Insert" ;
VK_DELETE : K := "Del"{"Delete"} ;
VK_HELP : K := "?"{"Help"} ;
P.S. Первый вариант точно работает, но и втрой должен работать
← →
Mist (2004-02-17 14:21) [3]Спасибо, все получилось.
Чтобы поправить проблему
>Клавиши Insert, Delete, PageUp, PageDown (возможно и др.)
>приходится
Использовал 2 вариант - пусть названия клавишь выводятся полностью.
← →
RA © (2004-02-21 15:56) [4]Пожалуйста.
2Kladov Может внести эти поправки в следующую версию KOL?
← →
Владимир Кладов (2004-02-22 13:21) [5]Во втором разве полностью? Так я беру первый вариант?
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.029 c