Unit delphi

Delphi 7. Занятие 2_5. Часть 1.

Подключения стандартного модуля — delphi unit uses

Мы уже говорили, что кроме кода, написанного программистом, для работы программы требуется множество стандартных процедур и функций.

Например, преобразование целого числа в строку символов — функция «IntToStr()».

Код этой функции находится в модуле SysUtils, указанном в предложении uses.

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Buttons, ExtCtrls;

в Delphi имеется возможность отображать графическую информацию (картинки), представленные в формате «.bmp». Но боле распространён формат «.jpeg или .jpg».

Если попробовать загрузить картинку в таком формате, компилятор выдаст ошибку.

К счастью, имеется модуль «JPEG», подключение которого решает проблему:

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, StdCtrls, Buttons, ExtCtrls, JPEG;

Для просмотра «.png» картинок надо скачать в интернете модуль TPNGImage и подключить его наподобие модуля JPEG.

Интерфейс главной формы проекта.

При своём открытии среда IDE Delphi автоматически создаёт форму с именем Form1, которая будет являться главной формой программы (то есть её закрытие приводит к закрытию всей программы).

Разместим на ней все необходимые нам компоненты:

unit delphi

Во первых, это главное меню «TmainMemu». Далее, это панель, на которой расположим компонент «Tmemo». В нём будет размещено краткое справочное описание разрабатываемой нами программы.

Дополнительно используем две кнопки «BitBtn». Воспользуемся свойством «Kind» этого компонента. Для кнопки, расположенной на панели, установим значение «bkOK». Для второй установим «bkClose». Кнопка такого вида будет закрывать форму автоматически при её нажатии.

Сделаем так, чтобы панель «Panel1»не была видима при запуске программы. Для этого в инспекторе объектов установим свойство панели «Visible» в «false».

Если пользователь захочет посмотреть краткое описание программы, он должен выбрать пункт меню «О программе».

Main menu delphi

Создание главного меню формы.

Разместим на «Form1» компонент главное меню (MainMenu).

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

Для создания пунктов меню необходимо вызвать редактор, дважды щёлкнув по компоненту MainMenu1 или выбрать пункт «Items …» в окне ObjeсtInspector.

В открывшемся окне щелкаем по прямоугольнику и он окрашивается в голубой цвет:

unit delphi

В инспекторе объектов заполняем свойство «Caption» значением «Перейти» и нажимаем «Enter». Поле заполнится введённым значением.

unit delphi

Далее выделяем прямоугольник, расположенный справа и в «Caption» в инспекторе объектов вводим значением «О программе».

unit delphi

Ограничимся пока двумя пунктами основного меню и начнём формировать подпункты. Ограничимся одним подпунктом для первого пункта. Для этого выделяем пункт «Перейти» и затем выделяем прямоугольник внизу. Вводим значение «перейти к ->»

unit delphi

Переходить мы будем либо на вторую форму, либо к завершению программы. Для этого создадим подменю (Submenu). Редактор подменю вызывается щелчком правой кнопки по пункту «перейти к ->» и выбором команды «CreateSubmenu»:

unit delphi

Появляется пункт подменю:

unit delphi

Подпункты подменю заполняются аналогично пунктам меню, вводя туда два значения: «ко второй форме» и «завершить программу».

В итоге получим:

unit delphi

Здесь приведём обработчики обработчики «кликов» по пунктам меню.

Обработчики пунктов меню.

Обработчики пунктов меню вызываются так же, как и для кнопки: двойным щелчком по пункту (если вдруг редактор пунктов меню исчез, то он вызывается вновь двойным щелчком по компоненту MainMenu).

Обработчики задаём для пунктов подменю.

Для пункта «ко второй форме»:

procedure TForm1.N3Click(Sender: TObject);

begin

form2.Show;

end;

Обработчик второго пункта меню «завершить программу»:

procedure TForm1.N4Click(Sender: TObject);

begin

close; //процедура завершения программы.

End;

Второй пункт главного меню «о программе»

procedure TForm1.N5Click(Sender: TObject);

begin

self.Panel1.Visible:=true; //панель становится видимой.

end;

Обработчик «клика» кнопки «ok»:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

self.Panel1.Visible:=false; // делаем панель снова невидимой.

End;

обработчик события для кнопки «Close» писать не надо. При выборе такого типа кнопки её срабатывание происходит автоматически и программа будет закрыта.

Создание второй, третьей и так далее форм и модулей.

В предыдущем разделе мы создали главную форму программы. Однако реальные программы часто содержат две и более форм.

Создадим вторую форму. Для этого в пункте главного меню IDE выберем пункт «File» и в нём пункт «New» и далее в открывающемся подменю пункт «Form».

Будет создана вторая форма с именем «Form2» и соответствующий ей модуль «Unit2».

Но модуль не обязательно должен быть привязан к форме. Создадим самостоятельный модуль «Unit3». Для этого опять воспользуемся главным меню «File» > «New» > «Unit».

Связь модулей между собой.

Если в созданных модулях написать программный код, то он никак не будет связан между собой. Пока модули не могут видеть друг друга.

Вспомним, что в главном меню, расположенном на «Form1», содержится пункт «перейти на вторую форму» и создан обработчик клика по этому пункту. В нём содержится оператор: form2.Show; .

Но попытка компиляции выдаст ошибку, так как в модуле «Unit1» ничего не известно о существовании «Unit2».

Чтобы разрешить эту коллизию, надо добавить ссылку в «Unit1» на «Unit2» следующего вида: uses Unit2; . Это делается автоматически, если воспользоваться главным меню Delphi: «File» > «Use Unit …». В открывающемся диалоговом окне выбираем нужный для подключения модуль.

Аналогично добавляется ссылка на модуль «Unit3».

Предложение будет добавлено в секцию «implementation», а не в главное предложение «Uses» в секции «Interface» в связи со следующими соображениями.

Circular unit reference delphi — перекрёстные ссылки.

Существует проблема перекрёстных ссылок на модули.

Предположим, в модуле 2 есть данные, которые используются для работы процедур, расположенных в модуле 1.

Тогда в модуле 1 в предложении uses надо сделать ссылку на модуль 2. В принципе, это можно сделать в uses, расположенном в секции interface.

Всё будет нормально, пока не потребуется получить из модуля 2 доступ к данным, расположенным в модуле 1. Если сделать ссылку на модуль 1 в секции interface модуля 2, то в силу особенностей компилятора он выдаст ошибку «о недопустимости перекрёстных ссылок».

Решение этой проблемы весьма тривиально. Необходимо размещать ссылки на модули в секции implementation, что и происходит автоматически при использовании команды главного меню «File» > «Use Unit …».

Заключение.

Перейти ко второй части статьи.

Отображение картинки в Image.

Обновлено: 07.01.2021 — 19:45

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *