![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про аккселераторы в PopupMenu
dvk © (2005-06-10 13:49:00)Предлагаю сделать пубичным свойство fAccelTable объекта TControl. Иначе акселераторы PopupMenu, назначенного одному из компонентов формы действуют по всей форме. А так хоть можно по Leave на нужном компоненте делать fAccelTable=0, а по Enter - fAccelTable=OldAccelTable. Заодно предлагаю зранить таблицу акселераторов в ресурсах приложения - тогда их и менять удобнее.
dvk (2005-06-14 07:21:00) [1]Насколько я понял, NEW_MENU_ACCELL работает только в PAS_VERSION, а я хочу использовать ASM_VERSION (размер кода тогла меньше). К тому же я попробовал скомпилировать нормально работающий проект в PAS_VERSION и получил стабильный Exception при закрытии формы.
SPeller (2005-06-10 19:42:00) [2]Да, это включает реализацию обработки хоткеев идентичной VCL. Т.е. Срабатывать будет в объекте и его детях, выше по иерархии - нет.
SPeller (2005-06-10 19:40:00) [3]
{$define NEW_MENU_ACCELL}
в kol.pas
или добавить NEW_MENU_ACCELL в свойствах проекта. И будет тебе счастье :)
ECM (2005-06-10 14:55:00) [4]Если ОЧЕНЬ нужно изменить ЛЮБОЕ protected-поле (например fAccelTable) можно воспользоваться следующим приемом:
type
PControlAccess = ^TControlAccess;
TControlAccess = object(TControl)
end;
...
SomeObject: PControl;
...
PControlAccess(SomeObject).fAccelTable := ...