Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Мансуров. Основы программирования в среде Lazarus. 2010

.pdf
Скачиваний:
45
Добавлен:
27.04.2021
Размер:
6.3 Mб
Скачать

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

На экране появится пустая форма, рис. 6.11.

Рис. 6.11. Форма нового проекта

Если формы не видно, нажмите клавишу F12.

В окне редактора исходного кода Lazarus автоматически создаст следую-

щий код:

unit Unit1;

{$mode objfpc}{$H+} interface

uses

Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs;

type

TForm1 = class(TForm) private

{private declarations } public

{public declarations }

end;

var

471

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Form1: TForm1;

implementation

initialization {$I unit1.lrs}

end.

Мы видим, что Lazarus создал для нас модуль со стандартным именем

Unit1. А в теле модуля создается класс TForm1 основанный на базовом классе

TForm и описывает объект – стандартное графическое окно.

Сразу же сохраните свой проект в нужной папке. Если необходимо, то соз-

дайте новую папку. При сохранении помните, что имена модуля и проекта не должны совпадать, то есть файл проекта (lpr) и файл модуля (pas) должны иметь разные имена, потому что Lazarus присваивает имя модулю (в исходном коде) такое же, какое и имя файла модуля, а программе по имени файла проек-

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

Исходный код основной программы (проекта) будет сохранен в файле с именем <Имя проекта>.lpr и имеет вид:

program project1; {$mode objfpc}{$H+} uses

{$IFDEF UNIX}{$IFDEF UseCThreads} cthreads,

{$ENDIF}{$ENDIF}

Interfaces, // this includes the LCL widgetset Forms, Unit1, LResources

{ you can add units after this };

472

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}

begin

{$I project1.lrs} Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;

end.

Здесь в объявлении uses перечисляются модули, подключаемые в проект по умолчанию. Кроме того, Lazarus автоматически включил имя только что созданного модуля. По умолчанию это Unit1. Далее директивой

{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}

для операционной системы Windows включается файл описания ресурсов. Под ресурсами понимаются ресурсы приложения: пиктограммы, курсоры, битовые образы и пр.

В исполняемой части программы содержится еще одна директива

{$I project1.lrs}

с помощью которой подключается автоматически генерируемый файл ресурсов

Lazarus. Заметьте, что это не файл ресурсов Windows.

Последние три оператора

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

473

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

реализуют обращение к методам объекта Application. В объекте

Application собраны данные и подпрограммы, необходимые для нормаль-

ного функционирования программы в среде операционной системы. Lazarus

автоматически создает объект-программу Application для каждого нового проекта. Метод Initialize отвечает за инициализацию (первоначальную настройку) приложения. Метод CreateForm создает главную форму прило-

жения Form1 (окно приложения). После вызова метода Run осуществляется запуск нашего приложения.

Без особой необходимости не следует редактировать код проекта. Поэтому при создании проекта этот код не виден. Lazarus "скрывает" этот код от из-

лишне любопытных. Но, если "очень хочется", то можно посмотреть его в ме-

ню Проект->Просмотреть исходный код проекта или открыть файл проекта с расширением .lpr любым текстовым редактором.

А исходный код нашего приложения будет сохранен в файле <имя моду-

ля>.pas (по умолчанию Unit1.pas).

Откомпилируйте и выполните свое приложение. Вы увидите пустое окно.

Ну и что тут такого, скажете вы. По большому счету вы правы, ничего особен-

ного. Но если вдуматься, то мы с вами только что, без видимых усилий, создали полноценное приложение с графическим интерфейсом! Окно вашей программы обладает всеми свойствами стандартных графических окон. Его можно свер-

нуть, можно развернуть во весь экран, можно менять размеры. Окно можно пе-

ремещать в любое место экрана. Так же как и любое другое окно, оно имеет строку заголовка и системное меню. Не так уж и мало! И все это на основе стандартного класса TForm. В Lazarus имеется немало таких стандартных клас-

сов, на основе которых можно создавать приложения практически любой слож-

ности!

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

474

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

земпляр класса. Это делается с помощью объявления

var

Form1: TForm1;

Теперь мы можем работать с этим объектом, обращаясь к нему по имени

Form1.

6.3.2 Форма и ее основные свойства

При создании нового проекта появляется пустая форма (рис. 6.8.). Следует заметить, что форма и окно приложения это не одно и то же. Форма – это то,

что вы видите во время проектирования, а окно – это то, что видит пользова-

тель во время выполнения вашего приложения. Таким образом, с помощью формы вы проектируете вид окна вашего приложения. Кроме того, форме соот-

ветствует класс, производный от базового класса TForm.

В главе V мы с вами рассматривали спецификаторы доступа private, protected и public с помощью которых можно управлять видимостью членов класса извне.

Имеется еще один спецификатор – published (опубликованный). В этом разделе помещаются свойства, которые пользователь может устанавливать на этапе проектирования, но доступны и во время выполнения, т.е. содержат так называемую RTTI – информацию (run-time type information). Обычно в разделе published размещаются только свойства и события.

Все компоненты Lazarus имеют опубликованный интерфейс, который ото-

бражается в инспекторе объектов.

Рассмотрим подробнее некоторые свойства формы. Как вы уже поняли,

свойства формы, равно как и события, представляют собой опубликованную часть интерфейса класса формы. Их можно будет увидеть в инспекторе объек-

475

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

тов во вкладке Свойства, рис 6.12.

Рис. 6.12. Вкладка "Свойства" Инспектора объектов

Свойство Caption – заголовок окна, представляет собой некоторый текст.

По умолчанию присваивается значение "Form1". Желательно здесь указывать краткое содержание программы, например "Расчет заработной платы". Очень часто разработчики здесь выводят название программы и имя документа, свя-

занного с этой программой.

Свойство Name – имя формы в программе. По этому имени можно обра-

щаться к форме как к объекту в программе. По умолчанию присваивается имя

Form1. Желательно давать осмысленные имена, особенно если в программе имеется несколько форм. Именование должно подчиняться требованиям языка Паскаль, т.е. имя не должно содержать недопустимые символы, пробелы и т.д. (см. главу 2).

Свойство Left устанавливает координаты левого верхнего угла окна по горизонтали.

476

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Свойство Top устанавливает координаты левого верхнего угла окна по вертикали.

Сами размеры окна задаются свойствами Height и Width. Размеры за-

даются в пикселах.

Положение окна при запуске определяется свойством Position, оно мо-

жет принимать следующие значения:

poDesigned – положение окна и его размеры остаются такими же, что и при проектировании;

poDefault – положение окна и его размеры определяется автоматически операционной системой;

poDefaultPosOnly – положение окна определяется автоматически опе-

рационной системой, а размеры соответствуют установкам при проектирова-

нии;

poDefaultSizeOnly – размеры окна определяется автоматически опе-

рационной системой, а положение соответствуют установкам при проектирова-

нии;

poScreenCenter или poDesktopCenter – окно выводится в центре экрана, размер определяется при проектировании;

poMainFormCenter – форма отображается в центре главной формы,

размер определяется при проектировании, если имеется только одна главная форма, то этот параметр соответствует poScreenCenter;

poOwnerFormCenter – форма отображается в центре той формы, кото-

рая является владельцем данной формы.

Для того чтобы выбрать нужное значение, необходимо щелкнуть на назва-

ние свойства. Появится раскрывающийся список, из которого и можно выбрать требуемое значение, рис. 6.13.

477

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Рис. 6.13. Возможные значения свойства "Position"

Управлять положением формы на экране можно также с помощью свойст-

ва Align. Оно может принимать значения:

alNone – положение формы и его размеры не меняются; alBottom – форма располагается внизу экрана; alLeft – форма располагается в левой части экрана; alRight – форма располагается в правой части экрана; alTop – форма располагается вверху экрана; alClient – форма занимает весь экран;

478

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Перечисленные свойства относятся к так называемым простым свойствам,

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

Есть свойства, которые называются составными или сложными. Они поме-

чаются в инспекторе объектов знаком "+" или кнопкой с троеточием. Напри-

мер, свойство Font является составным. Составные свойства, как следует из названия, состоят из нескольких значений. На рис. 6.14 показан пример задания значений для свойства Font.

Рис. 6.14. Окно выбора шрифта (Linux)

С другими свойствами формы мы будем знакомиться в дальнейшем по ме-

ре необходимости.

Над объектами – экземплярами класса можно производить некоторые дей-

ствия, причем перечень действий определен в самом классе. Никаких других действий с ними производить нельзя. Эти действия иначе называются метода-

ми.

Например, для класса формы существует метод Show – показать, метод

479

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Hide – скрыть, метод Close – закрыть.

В редакторе исходного кода Lazarus есть прекрасный инструмент

CodeTools с помощью которого можно просмотреть все свойства и методы того или иного класса.

Посмотрим, например свойства и методы класса TForm1. Для этого в ре-

дакторе исходного кода после строк

initialization

{$I unit1.lrs}

наберите Form1. и немного подождите. Перед вами появится список всех свойств и методов класса TForm1, рис. 6.15.

Рис. 6.15. Окно "Code Tools"

Пользуясь подсказками CodeTools можно значительно ускорить процесс набора кода программы.

Форма может быть модальной и немодальной. Модальная форма это такая форма, которая не позволяет открывать другие формы, пока она сама не будет закрыта. К таким формам чаще всего относятся диалоговые окна. Чтобы ото-

бразить форму в модальном режиме необходимо вызвать метод ShowModal.

По умолчанию главная форма приложения открывается в немодальном режиме.

480