Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Генерация имен для Action [Delphi, Windows]


Vga ©   (30.01.17 18:19

Создаем форму, GenerateCtlNames <- true, на нее TKolActionList, создаем экшны... Обращаемся к SomeAction.Name и вылетаем с 216-й ошибкой.
WTF?
Изучаем сгенерированный код и видим такую прелесть:
   Result.ActionNew := Result.ActionList.Add( '&New', 'New file', Result.ActionNewExecute );
//---->
   Result.ActionList.SetName( Result.Form, 'ActionNew' );
//<----
   Result.ActionNew.LinkMenuItem( Result.MainMenu, 1 );
   Result.ActionNew.LinkToolbarButton( Result.Toolbar, 0 );
   Result.ActionNew.Accelerator := MakeAccelerator(FVIRTKEY or FCONTROL, $4E);

   Result.ActionOpen := Result.ActionList.Add( '&Open...', 'Open file', Result.ActionOpenExecute );
//---->
   Result.ActionList.SetName( Result.Form, 'ActionOpen' );
//<----
   Result.ActionOpen.LinkMenuItem( Result.MainMenu, 2 );
   Result.ActionOpen.LinkToolbarButton( Result.Toolbar, 1 );
   Result.ActionOpen.Accelerator := MakeAccelerator(FVIRTKEY or FCONTROL, $4F);

Явный баг кодогенерации. Версия - 3.23.
И еще, стоило бы при создании объекта и включенном USE_NAMES в конструкторе базового класса (TObj, вроде) присваивать имени пустую строку или еще какую-нибудь заглушку.


PrnZ   (12.04.17 04:45[1]

Известное дело. Изучаем mck (не помню какой конкретно файл.
Кажется гдето в SetupLast) - там и имя KOLAction неправильно генерируется (при USE_NAMES) - пишет имя KOLActionList для каждой из KOLAction. Лечится элементарно. Я сам никогда не пользовался  KOLActionList, до недавнего времени, тоже недавно столкнулся. Я обычно юзаю SetName для явного указания, ну и удалил нафиг из mck генерацию имени. Можно также и mck подправить.


Vga ©   (10.06.17 11:20[2]

На самом деле, в потрохах MCK я уже покопался и генерацию имен пофиксил. Это по большей части баг-репорт для автора.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо