Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tvp.doc
Скачиваний:
2
Добавлен:
08.11.2019
Размер:
1.12 Mб
Скачать

2. Лабораторные работы

Лабораторная работа № 1. Первая программа на Delphi

Напишем простейшее Windows-приложение, которое умеет завершаться при нажатии кнопки Выход, а при нажатии кнопки Старт выводит некоторое сообщение.

1. Для хранения файлов проекта создайте новый каталог, например, f:\projects. Соблюдайте правило: каждый новый проект хранить в отдельном каталоге.

2. Запустите Delphi и выберите пункт меню File|New Application. Если другой проект был уже загружен и модифицирован, то Delphi c помощью диалогового окна предоставит возможность сохранить этот проект перед загрузкой нового (при выборе Yes) или отказаться от его сохранения (при выборе No).

3. По умолчанию файлам нового проекта присваиваются имена Project1, Unit1, а сами файлы будут размещены в рабочем каталоге Delphi. Рекомендуется сразу же сохранить эти файлы в личном каталоге с новыми, содержательными именами, выбрав команду File | Save Project As. Сохраним новый проект с именем MyFirstProject.exe, а модуль - MainUnit.

4. Измените заголовок формы. Для этого выделите форму, указав на нее мышью, выберите закладку Property в окне инспектора объектов и справа от свойства Caption введите текст, например, Моя первая программа, без кавычек (свойство Caption имеет тип String).

5. В принципе, Ваша первая программа уже готова. Откомпилируйте и запустите ее, нажав F9, или выбрав Run | Run в меню, или нажав кнопку Run на панели инструментов. Завершите программу, нажав кнопку  в правой части ее окна или комбинацию Alt+F4.

6. Доработаем проект. Щелкните на закладке Standard на палитре компонентов. Щелкните сначала по кнопке Button, а затем еще раз в то место формы, где Вы хотите разместить кнопку. Узнать название компонентов в палитре легко по подсказке, которая появляется, если задержать указатель мыши на пиктограмме на одну-две секунды.

7. Убедитесь, что кнопка выделена - она должна быть обрамлена квадратными маркерами. По умолчанию экземпляр компонента «кнопка» TButton будет называться Button1. Дайте ему более осмысленное название btExit, изменив свойство Name в инспекторе объектов. Измените надпись на кнопке (свойство Caption) - Выход.

При большом количестве компонентов на форме настоятельно рекомендуется отказаться от бессмысленных имен объектов (Name) вроде Button1, …, Button99 и т.п., крайне затрудняющих чтение и модификацию программы. Старайтесь придерживаться известной «венгерской» нотации, в которой имя состоит из двух частей: «сокращенное название типа + функциональное назначение». Например, в рассмотренном примере кнопки можно назвать btStart, btExit, а панель – pnMessage. Незнание английского языка – не смягчающее, а отягчающее обстоятельство.

8. Аналогично создайте вторую кнопку btStart с надписью Старт (рис.2).

Рис. 2. Форма на этапе проектирования

9. Разместите на форме компонент Panel. Используя инспектор объектов, в свойстве Caption объекта Panel1 удалите имевшийся текст по умолчанию (см.рис.). Установите свойство Font (шрифт) для последующего вывода на Panel1 сообщения. Обратите внимание: если рядом с названием свойства в инспекторе объектов расположены знак +, то это свойство составное и состоит из нескольких подсвойств. Щелчок по знаку + раскрывает список подсвойств. Если напротив названия свойства расположены три точки ..., то щелчок по ним вызывает диалоговое окно для выбора значения свойства (в данном случае - стандартное окно выбора шрифта).

10. Создайте обработчик события щелчка мышью для кнопки btExit. Для этого выделите кнопку и два раза щелкните на странице Events инспектора объектов справа от события OnClick, либо два раза по кнопке btExit. В окне редактирования появится заготовка исходного текста процедуры-обработчика. Курсор расположится внутри тела процедуры между ключевыми словами begin и end. Введите метод формы Close, закрывающий форму:

procedure TMainForm.btExitClick (Sender: TObject);

begin

Close; //Полностью записывается Form1.Close

end;

Так как Form1 - главная форма приложения, ее закрытие ведет к завершению приложения. Здесь Sender - стандартный параметр, содержащий ссылку на объект-источник события. Используется редко, в основном, когда несколько объектов используют один и тот же обработчик события.

11.Аналогичные действия проделайте с кнопкой btStart. Для нее обработчик события запишите следующим образом:

procedure TMainForm.btStartClick(Sender: TObject);

begin

pnMessage.Caption:=’Нажата кнопка Старт’

end;

Напомним, что btStart - имя объекта (значение свойства Name),

Старт - надпись на объекте (значение свойства Caption).

12. Просмотрите текст модуля. Найдите в нем объявление класса TForm1. Этот класс является наследником стандартного класса TForm, описывающего пустое окно. Найдите, какие в нем появились новые свойства и методы.

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

Рис.3. Программа на этапе выполнения

14. Завершите программу нажатием кнопки Выход.

15. Видоизмените проект. Расположите еще одну кнопку btHelp с надписью Помощь и создайте обработчик для этой кнопки:

procedure TMainForm.bthelpClick(Sender: TObject);

begin

pnMessage.Caption:=’Нажата кнопка’+ bthelp.Caption;

end;

Рассмотрим структуру написанного Вами с помощью Delphi программного модуля Unit1.pas. Обратите внимание, что только строки, выделенные жирным шрифтом, написаны Вами собственноручно.

unit MainUnit; // Заголовок модуля

interface // Секция интерфейса (открытых описаний)

uses

// При размещении компонентов на форме модули,

// содержащие их объявления подключаются автоматически

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

type

// Объявление класса формы

TMainForm=class(TForm)

// Наша форма наследует от класса TForm.

// Компоненты, размещенные нами визуально,

// включаются в описание класса формы

// как обычные поля:

btStart: TButton:

btExit: TButton;

pnMessage: TPanel;

// Обработчики событий для всех компонентов входят

// в описание класса формы:

procedure btStartClick(Sender:TObject); procedure btExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

//Объявление переменной типа TMainForm:

var MainForm: TMainForm;

implementation // Секция реализации модуля

// Директива компилятору, заставляющая его включить в

// исполняемый файл визуальное описание формы, связанное с // данным модулем. Описание хранится на диске в отдельном // одноименном файле с расширением .DFM, например, для // модуля MainUnit.pas в файле MainUnit.dfm

{$R *.DFM}

// Далее располагаются обработчики событий

procedure TMainForm. btStartClick(Sender: TObject);

begin

pnMessage.Caption:=’Нажата кнопка Старт’

end;

procedure TMainForm.btExitClick(Sender: TObject);

begin

Сlose;

end;

end.

Файл проекта MyFirstProject.dpr был сгенерирован Delphi полностью самостоятельно. Вот его текст:

program MyFirstProject;

// Указываются сылки на модули, входящие в проект,

// причем модули могут располагаться в разных каталогах

uses Forms,

MainUnit in ‘MainUnit.pas’ {MainForm};

{$R *.RES} //Включение файла ресурсов в исполняемый файл

begin

// Инициализация приложения

Application.Initialize;

// Создание главной формы приложения:

Application.CreateForm(TMainForm, MainForm);

// Выполнение приложения

Application.Run;

end.

При изучении этих файлов возникают два вопроса: 1) куда исчезли введенные нами значения свойств компонентов, например, заголовки кнопок Старт, Выход в листинге отсутствуют, и 2) выше упоминалось, что все объекты являются динамическими, но где тогда вызовы методов для их создания в памяти? Свойства компонентов, присвоенные через инспектор объектов, т.е. визуально, сохраняются в файле *.dfm. Директива {$R *.DFM} заставляет компилятор читать этот файл, компилировать и включать в исполняемый модуль. Текстовое представление файла *.dfm можно увидеть, нажав клавиши Alt+F12. Форма является владельцем (Owner), отвечающим за создание и уничтожение размещенных на ней компонентов. Создание главной формы выполняется в модуле проекта вызовом конструктора объекта

Application.CreateForm(TMainForm, MainForm1).

Замечания по ходу работы.

1. Чтобы удалить ошибочно размещенный компонент, нужно указать на него мышью и нажать клавишу Delete. При этом будут удалены и все обработчики событий данного компонента. Не удаляйте обработчики «вручную». Если был создан «лишний» обработчик, надо удалить его содержимое между begin и end, и Delphi сама при последующей компиляции удалит пустой обработчик. Разумеется, последствия ручного удаления поправимы, но для этого Вам придется согласовывать секцию реализации модуля и описание класса формы.

2. При выполнении работы не набирайте обработчики событий полностью. Вводите только код, выделенный жирным шрифтом. Все остальное (написание заголовка процедуры, сопоставление обработчика событию, включение заголовка обработчика в объявление формы) среда Delphi выполняет за нас автоматически, когда мы щелкаем мышью рядом с событием в инспекторе объектов. Иначе все упомянутые операции надо будет проделать «вручную».

3. При сохранении проекта File | Save Project As сохраняются с новым именем файл проекта и модули, входящие в проект. Диалоговое окно для сохранения модуля появляется только при первом сохранении проекта, в дальнейшем модули (и связанные с ними формы) сохраняются автоматически. Поэтому будьте внимательны, если Вы решили сохранить проект в другой папке для его переработки. После File | Save Project As там появится только файл *.dpr, а чтобы сохранить остальные модули, следует отдельно вызывать File | Save As. Просмотреть состав проекта можно командами меню View | Project Manager или View | Units , View | Forms, а добавить или удалить модули - командами Project | Add to Project и Project | Remove from Project.

4. В проект можно включить обычные «паскалевские» модули, т.е. модули, не содержащие директивы {$R *.DFM}. Такие модули подключаются обычным способом в секции Uses, либо через пункт меню File | Use Unit.

Лабораторная работа № 2. Компоненты для ввода данных

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

1. Создайте каталог для нового проекта. Выберите пункт меню File | New Application. Сразу же сохраните новый проект в данном каталоге.

2.Разместите на форме две кнопки с надписями Старт и Выход, три компонента Label (статический текст) и компонент Edit (строка редактирования).

3.Установите следующие значения свойств компонентов:

Компонент Name Caption

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]