Re[7]: Акселераторы TMainMenu не работают после смены Captio
От: Danchik Украина  
Дата: 04.04.05 13:31
Оценка: 51 (1)
Здравствуйте, Tack, Вы писали:

T>Здравствуйте, fetis, Вы писали:


F>>Может стоит посмотреть в VCL, что делается в оригинале при отрисовке пункта меню?


T>Да я бы с радостью! Но нету у меня сорсов! Delphi 7 пиратская, без исходников VCL...

T>К тому же может кто уже на форуме сталкивался, так побыстрее было бы.

Посмотрел я в код. Решения твоей проблемы без исходников нету. Разве что перехватывать Menu месаги самому на форме и обрабатывать их как надо.
Вся проблема в том что при OwnerDraw VCL Menu обрабатывает кнопки само но не совсем корректно. Есть в Forms.pas функция IsAccel, так вот она сравнивает символы с разными регистрами не используя твоих языковых настроек

function IsAccel(VK: Word; const Str: string): Boolean;
begin
  Result := CompareText(Char(VK), GetHotKey(Str)) = 0;
end;


Еее нужно поменять на

function IsAccel(VK: Word; const Str: string): Boolean;
begin
  Result := AnsiCompareText(Char(VK), GetHotKey(Str)) = 0;
end;


Дуругими словами, что бы нажать на меню &Файл небе нужно, кроме то что переключится на русскую расскладку, так еще и Caps-Lock нажать (поднять регистр)

Что бы все заработало тебе необходимо переписать Forms.pas в директорию твоего проэкта и изменить соответствующую функцию.

Удачи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.