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

Вниз

Отображение 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.043 c
9-1080232856
Zak3D[@Tm]
2004-03-25 19:40
2004.07.18
Изометрическая игра.


4-1086516080
Hyboid
2004-06-06 14:01
2004.07.18
Скриншот средствами API


3-1088102643
Колбасьев
2004-06-24 22:44
2004.07.18
dbf-файл с ntx-индексом


3-1087477544
Yakudza
2004-06-17 17:05
2004.07.18
DataSource у TQuery


3-1088070856
Nemra
2004-06-24 13:54
2004.07.18
OLAP