В прошлом уроке мы рассматривали структуру программы и модулей. Они состоят из заголовка и программного блока.
Процедуры и функции представляют собой кирпичики, дополнительные блоки, содержащиеся в программном блоке. И по своему строению очень напоминает модуль или программу. Тоже состоит из заголовка и блока.
Заголовок состоит из первого слова procudure для процедуры и function для функции. После этого слова следует идентификатор, по которому данная процедура или функция будет вызываться из другого места программы (возможно даже из этой же процедуры). После идентификатора могут следовать в скобках входящие или выходящие параметры. Заголовок функции завершается описанием ее типа.
После заголовка может следовать (по необходимости) описание внутренних типов, констант, переменных, меток.
Далее следует сам программный блок процедуры или функции, заключенный в операторные скобки begin и end.
Пример процедуры:
procedure MyProcedure (InData: Integer); // заголовок процедуры. InData - вносимый параметр
Var i1,i2,i3: Integer; // описание переменных в данной процедуре
begin
// текст программы
end;
Функция от процедуры отличается только тем, что кроме выполняемого программного блока может возвращать определенное значение
(по окончанию сама принимает некоторое значение).
Пример функции:
function MyFunction (InData: Integer): Integer; // возвращаемый тип данных - Integer
Var i1,i2,i3: Integer;
begin
// текст программы
Result:= 1; // возвращаемое значение
end;
Для осмысления вышесказанного рассмотрим следующий пример.
function MyFunction (x: String): String;
begin
Result:= x+'рамма';
end;
procedure MyProcedure;
begin
ShowMessage(MyFunction('прог'));
end;
Допустим мы имеем некий программный код, который в определенный момент вызывает на выполнение процедуру MyProcedure. Порядок выполнения программы можно расписать следующим образом.
1. Вход в процедуру MyProcedure.
2. Вызывается функция MyFunction и управление передается в нее. При этом туда передается строковый параметр "прог".
3. В функции выполняется арифметическая операция со строкой. К вносимому параметру прибавляется строка "рамма" и все это передается в качестве возвращаемого параметра функции Result.
4. Возвращение в процедуру MyProcedure. Теперь MyFunction принимает значение "программа" и это значение передается в качестве параметра в процедуру ShowMessage.
5. Процедура ShowMessage является стандартной (она описана в стандартном модуле, автоматически подключаемом изначально). Эта процедура производит вывод окошка с сообщением и кнопкой Ok.
6. После вывода окошка с текстом "программа" текущая позиция выполнения программы выходит из процедуры MyProcedure в то место, откуда она была вызвана.
Написание всего текста кода проекта сводится к написанию программного блока внутри процедур и функций, с переходом друг к другу по мере необходимости.
В почти каждом MDI-приложении есть меню "Окно" или "Window", в котором первыми пунктами стоят различного рода операции с позиционированием дочерних окон. Сделаем что-то подобное в нашем многооконном приложении.
Открываем проект на приложении в среде программирования Delphi. Комбинацией клавиш Shift+F12 выводим на экран главную форму MainForm.
Начиная с версии Delphi 4, на странице палитры компонентов Standart есть компонент TActionList.
Устанавливаем этот компонент на проектировочную форму MainForm.
Дважды щелкаем по нему мышкой или выбираем пункт "Action List Editor" из выпадающего меню по правой кнопке мыши.
Открывается окно изменения действий.
Нажимаем комбинацию клавиш Ctrl+Ins, или выбираем пункт "New Standart Action" из ниспадаюшего меню на желтой кнопки.
Появляется окно добавления стандартных действий, которые в последствии можно привязать к пунктам меню или кнопкам.
С помощью нажатой кнопки Shift или Ctrl выберите все стандартные действия, которые относятся к категории Window.
Это и есть действия управлением состоянием окон. Нажимаем на кнопку Ok.
Теперь вы видите, что в списке действий появилась категория Window (в левой части), в которой находятся все выбранные стандартные действия с окнами (в правой части).
По умолчанию все стандартные действия будут иметь названия на английском языке, поэтому будем из русифицировать вручную. Выбираем первый пункт списка действий Arrange1 и меняем свойство Caption на "Упорядочить значки". Здесь вы сразу заметите, что изначально это свойство имеет значение "&Arrange". Знак амперсанта означает, что следующий за ним символ будет подчеркнут. Это свойство полезно для быстрого выбора пункта данного меню с помощью горячей подчеркнутой клавиши, когда меню активизировано (подробнее можно узнать из справочной системы Windows). Вы сами можете назначать свои буквы быстрого доступа к пунктам меню самостоятельно. Скажу только, что за свою многолетнюю практику ни разу не встречал человека, который пользовался бы таким доступом в меню, поэтому в своих программах подчеркнутых букв не делаю. Но вы пожете не пренебрегать правилами хорошего тона в программировани и все делать по правилам.
Таким образом меняем свойства Caption для всех действий, согласно таблице
&Arrange | Упорядочить значки |
&Cascade | Каскадом |
C&lose | Закрыть |
&Minimize All | Минимизировать все |
Tile &Horizontally | Упорядочить по горизонтали |
&Tile Vertically | Упорядочить по вертикали |
Теперь можно закрыть окно с действиями. Вызываем проектировщик пунктов меню MainMenu1 для формы MainForm.
Удаляем все пункты из меню "Окна". Там из наших первых уроков присутствует только один пункт "Упорядочить". Дальше все довольно просто. Для первого пустого пункта меню изменяем свойство Action в Arrange1. Этот пункт меню сразу изменит свое название на "Упорядочить значки". В проектировщике меню сразу добавляется новый пункт. Изменяем его свойство Action на Cascade1.
И так далее. Добавляем в меню все стандартные действия с окнами.
Теперь сохраняйте проект и запускайте приложение на выполнение. Обратите внимание, что если дочерних окон нет, то эти пункты меню становятся серыми и недоступными для пользователя.
Еще раз отмечу прелесть визуального программирования. На этом примере вы убедились, что можно не писать ни строчки программного кода в редакторе, а добавлять необходимые компоненты, изменять некоторые свойства и в результате получается некоторое работоспособное приложение.
У нас остался незадействованным меню "Правка". Там содержатся три стандартных пункта "Вырезать", "Копировать" и "Вставить". Эти действия являются стандартными и содержатся в списке стандартных действий в ActionList1. Они находятся в категории Edit. Добавьте их в список действий самостоятельно. Не забудьте о русификации свойства Caption. В проектировщике меню измените свойство Action у пунктов правки на соответствующие пункты стандартных действий.
Комментариев нет:
Отправить комментарий