Описание работы

Наше приложение будет состоять всего из одной формы, на которой надо разместить 4 компонента типов TMainMenu, ТМеmо и две TOpenDialog (рис. 16). С помощью этих компонентов мы реализуем два способа решения поставленной задачи. Рассмотрим их.


Для создания главного меню в Delphi используется компонент типа TMainMenu. Для этого необходимо поместить его на форму и дважды щелкнуть по нему. После этого на экране появится окно редактора меню (рис. 17).


Замечание

Для изменения пунктов меню используйте клавиши Insert, Delete и Ctrl+->

Сначала меню состоит из одного пустого элемента. Для добавления нового пункта меню можно просто начать изменять любой пустой пункт меню в редакторе меню (он обведен пунктирным прямоугольником). Для вставки - нового пункта меню в любой позиции необходимо нажать клавишу Insert. Для удаления пункта меню клавишу Delete. Для создания подменю второго уровня - клавишу Ctrl+->.

Таблица 8. Основные свойства объектов типа TMenuItem
Свойство Тип Комментарий
Caption String Текст, появляющийся в меню. Если перед некоторой буквой поставить знак &, то во время выполнения программы этот знак будет не виден, а буква будет изображаться с подчеркиванием, что позволит ее использовать в качестве горячей клавиши. Если текст состоит всего из одного знака «минус», то пункт меню становится разделительной линией.
Cheeked Boolean При установке значения True слева от пункта меню будет отображаться «галочка».
Enabled Boolean Если значение будет равно False, то пункт меню будет недоступен для выбора и станет отображаться серым цветом.
Shortcut TShortCut Горячая клавиша, которую можно будет использовать для быстрого вызова пункта меню. Кроме того, она будет отображаться справа от пункта меню.
Visible boolean Если значение будет равно False, то пункт меню будет невидим

Для изменения описания пунктов меню необходимо выбрать требуемый. При этом он станет доступным в инспекторе объектов, где можно изменить все необходимые свойства. В табл. 8 приведено краткое описание основных свойств элементов меню.

В данной лабораторной работе необходимо создать в главном меню два вида подменю. В первом подменю «Файл» можно создать три пункта и один разделитель. Это команды «Открыть...» для выбора файла в диалоге и загрузки его в главную форму, «Выполнить...» для выбора выполняемого файла в диалоге и его запуска, а также команда «Выход».

Все остальные подменю должны соответствовать предыдущим лабораторным работам и оформлены примерно так, как показано на рис. 18. Первым пунктом такого подменю должно быть название файла проекта, например Labl.dpr. Затем после разделителя список всех модулей, входящих в состав проекта. А в конце после разделителя имя выполняемого файла.

После создания меню необходимо создать обработчики событий выбора пунктов меню. Для их создания можно просто дважды щелкнуть в нужный пункт меню, находясь в редакторе меню, либо просто выбрать этот пункт в меню формы.

Самый простой из обработчиков соответствует пункту меню «Выход». В нем просто нужно вызвать метод формы Close.

Наша программа должна выполнять два вида действий - загрузку файла для просмотра в многострочный текстовый редактор и запуск программы на выполнение. Для этого создадим две соответствующие процедуры OpenFile и ExecuteFile с одним входным параметром строкового типа для передачи имени файла. Процедура OpenFile должна открыть текстовый файл, считать все его строчки и поместить их в многострочный редактор типа ТМето. Наиболее важные свойства компоненты данного типа приведены в табл. 9.

Процедура ExecuteFile должна запускать выполняемый файл. Для этого можно воспользоваться функцией WinExec, определенной в модуле Windows. Функция имеет два параметра. Первый типа PChar задает имя файла, второй целочисленный - способ запуска. В большинстве случаев способ запуска можно задавать равным 0. Тип данных PChar эквивалентен типу *char, используемому в языке С. Для приведения к нему обычной строки Delphi, например FileName типа string, можно просто записать PChar(FileName).

Таблица 9. Основные свойства объектов типа ТМето
Свойство Тип Комментарий
Align TAlign Определяет режим автоматического изменения размера компоненты. Значение, равное alClient, позволяет автоматически растягивать компонент по размеру содержащего его визуального компонента, например формы.
ReadOnly Boolean При установке значения True, текст нельзя будет редактировать.
Lines TStrings Содержимое многострочного редактора.
ScrollBars TScrollStyle Определяет видимость полос прокрутки. Значение равное ssBoth включает обе полосы.

Замечание

Для назначения пунктам меню уже созданного обработчика событий необходимо в инспекторе объектов просто выбрать из ниспадающего списка нужный метод-обработчик.

Теперь рассмотрим обработчики событий выбора пунктов меню «Открыть...» и «Выполнить...». В них нужно вызвать диалоги выбора файлов типа TOpenDialog и вызвать соответствующую процедуру OpenFile или ExecuteFile. Наиболее важные свойства компонента типа TOpenDialog приведены в табл. 10. Для того чтобы выдать диалог на экран, необходимо использовать его метод Execute, возвращающий логическое значение, которое равно True, если пользователь выбрал файл.

Замечание

Для задания фильтра в компонентах для выбора файлов, можно вызвать редактор для свойства Filter, нажав кнопку с многоточием справа от его значения в инспекторе объектов. В нем имеется таблица с двумя колонками: в левой помещается описание варианта фильтра, а в правой - сам фильтр.

Теперь рассмотрим обработчики событий для пунктов меню, соответствующих файлам с расширениями dpr, pas и ехе. Для первых двух логично написать один общий обработчик, который загружает текстовый файл. Предполагая, что все лабораторные работы находятся в своих каталогах, например, так, как на рис. 1, будем формировать имя файла автоматически, составляя его из некоторого каталога, содержащего все лабораторные работы, например, 'H:\Work\Delphi', затем имени главного меню, например, 'Lаb1', и имени файла, указанного в тексте пункта меню, например, 'MainUnit.pas'. Основные процедуры в обоих обработчиках те же процедуры OpenFile и ExecuteFile.

В листингах 11-12 приведены тексты файлов проекта и модуля.



r.php"; ?>