Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1088859529
Vasya.ru
2004-07-03 16:58
2004.07.18
Как программно узнать размер оперативной памяти?


14-1087550306
Rule
2004-06-18 13:18
2004.07.18
Я только что защитил диплом !!!!!!!!!!!!!!!!!!!


14-1088558167
Гарри Поттер
2004-06-30 05:16
2004.07.18
Оккультизм


10-1022474348
fnv-hope
2002-05-27 08:39
2004.07.18
Delphi и POA


6-1084803810
Artem03
2004-05-17 18:23
2004.07.18
TIdTCPServer, TIdTCPClient - передача файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский