Далее в файле размещены обработчики различных действий. Процедура АМепиЕхеси1е показывает как модальную вспомогательную форму РМ8е1ир, описанную ниже и обеспечивающую настройку меню. Процедура АСа11Не1р-Ехеси1е вызывает файл справки. Многие из других обработчиков действий не реализованы и ограничиваются просто сообщениями о выполняемой команде. Это еделано, чтобы не загромождать и без того большой код данного примера. Обработчик AOpenExecute открывает файл, а также создает и заносит в меню связанный с ним раздел. Этот обработчик рассмотрен в разд. 5.2.4. Реально работающий обработчик - AFontExecute, обеспечивающий выбор пользователем атрибутов шрифта. В нем вызывается диалог FontDialogl, в свойство SelAttributes компонента RichEditl переносятся все атрибуты выбранного пользователем шрифта, а затем в соответствии с выбранными атрибутами делаются выбранными те или иные действия, определяющие полужирный шрифт (ABold), курсив (Altalic), подчеркивание (А_). Процедура FontDialogl Apply - обработчик события OnApply компонента FontDialogl срабатывает, если работая с диалогом выбора шрифта пользователь нажмет кнопку Применить.

Процедуры ABoldExecute, AltalicExecute, A_Execute являются обработчиками действий, связанных с установками текущих атрибутов шрифта. Все они построены по одному принципу: изменяют состояние индикатора действия, а затем, исходя из этого состояния, заносят в свойство SelAttributes.Style или удаляют из него соответствующие элементы множества атрибутов. Процедуры ALeftExecute, ACenterExecute, ARightExecute, ABulExecute выполняют форматирование текущего абзаца. Процедура ComboBoxlChange является обработчиком события Оп-Change компонента ComboBoxl и заносит в свойство RichEditl.SelAttributes.Na-те имя выбранного пользователем шрифта.

Теперь перейдем к обсуждению файла вторичной формы UMSetup.pas. Вспомогательная функция CopyMenuItem, объявленная вне класса этой формы, создает и возвращает дубль объекта указанного раздела меню Item и копирует в него основные свойства объекта Item.

Для того чтобы пояснить назначение другой вспомогательной функции-элемента FindComandTag надо пояснить принятую в данном приложении кодировку. Когда на вспомогательной форме создается дубль раздела меню, в его свойство Tag заносится индекс оригинала (исходного объекта раздела) в свойстве Components главной формы. Посмотрев описанную выше вспомогательную функцию CopyMenuItem, вы увидите, в ней предусмотрено соответствующее изменение свойства Tag. В процессе выполнения приложения возникает задача найти в списке LBComand.Items.Objects объект (дубль), соответствующий оригиналу с указанным индексом Ind. Именно эту задачу решает функция FindComandTag. Она ищет в списке LBComand.Items.Objects объект, в свойстве Tag которого записан индекс, заданный параметром Ind. Если такого объекта не находится, возвращается значение -1. В противном случае возвращается индекс найденного объекта в списке LBComand.

Если вы создаете приложение VCL .NET, то присваивание свойству Tag целого значения вызывает сообщение компилятора об ошибке: несоответствии типов Variant и Integer. Чтобы избежать этой ошибки, в предложение uses модуля надо включить ссылку на модуль Variants, как показано в виде комментария в приведенном коде. В этом случае сообщение об ошибке компиляции исчезнет, и все будет выполняться нормально.


⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Апрель
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31