Файл: Интегрированные среды разработки программ..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 11.03.2024

Просмотров: 26

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Свойства управляющего элемента Командная кнопка Как видно из примера, при щелчке на кнопке Сложение вычисляется сумма a+b и результат выводится на соответствующем поле. При щелчке на кнопке Вычитание вычисляется разность a-b и результат выводится на соответствующем поле. При щелчке на кнопке Умножение вычисляется произведение a*b и результат выводится на соответствующем поле. При щелчке на кнопке Деление вычисляется частное a/b и результат выводится на соответствующем поле. Управляющий элемент Командная кнопка также находится на панели компонентов Стандартные. После размещения четырех командных кнопок следует определить их свойства.

Основным свойством Командной кнопки является свойство Name и свойство Caption. Как было указано выше значение свойства Name позволяет программно обращаться к этим командным кнопкам. По умолчанию среда разработки Delphi 7 присваивает следующие имена: Button1, Button2 и т. д. Важным свойством командной кнопки является свойство Caption. Это свойство определяет надпись, которая появляется на командной кнопке. Из рис. 1.3 видно, что значения для этого свойства командных кнопок должны быть соответственно Сложение, Вычитание, Умножение и Деление.

Свойства формы При выделенной форме на Инспекторе объектов появляются свойства формы. Наиболее важными свойствами формы являются свойства Name, Caption и Color. Свойство Caption определяет текст, который появляется на заго-ловке формы. Как видно из рисунке 1.3, необходимо ему присвоить значение «Мой калькулятор». Свойство Color определяет цвет формы: выбирайте из предполагаемого списка цветов цвет на свой вкус. Свойству Name формы автоматически присваивается имя Form1. На этом первый этап создания приложения окончен - графический интерфейс пользователя построен. Перейдем к написанию программного кода нашего приложения.

Написание кода приложения Код приложения вводится и редактируется в окне кода программы. При создании нового проекта система Delphi в этом окне уже отображает некоторый код. При размещении элементов управления на форме, в окне кода автоматически появляется дополнительный код. И плюс ко всему, программист должен ввести дополнительный код, который и определяет прикладные задачи, решаемые данной программой.

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

Код нового проекта При создании нового проекта система в окне кода отображает код модуля Unit1. Код вновь созданного проекта приведен ниже: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end;


var Form1: TForm1; implementation {$R *.dfm} end.

Проведем анализ этого програмнного кода. Модулем в Pascal считается некоторый файл кода. Сам проект может состоят из нескольких модулей. Любой модуль состоит из двух основных частей: интерфейсная часть и часть реализации. Интерфейсная часть начинается модуля с ключевого слова interface и в нем указываются модули, функции, типы переменных и переменные которые могут быть использованы с любого места проекта.

В части реализации указываются модули, функции, типы переменных и переменные, которые могут быть использованы только в пределах модуля. Далее должны быть приведены программные реализации функций, как интерфейсной части, так и части реализации. Заметим, что в Delphi каждой форме соответствует собственный модуль. В нашей программе форме Form1 соответствует модуль Unit1. В интерфейсной части этого модуля, после ключевого слова uses, представлены те стандартные модули, которые отвечают за работу основных компонентов проекта: работа с окнами, меню, графикой и т.д.

Затем объявляется новый тип TForm1, как класс. Объявление класса вы-глядит следующим образом: type TForm1 = class (TForm) private { Private объявления } public { Public объявления } end;

Как видно, класс также состоит из двух частей: часть private и часть public. В части private приводятся переменные и функции, которые могут быть использованы внутри класса. А в части public приводятся переменные и функции, которые могут быть использованы в пределах проекта или модуля. После ключевого слова class, в скобках указывается наследуемый класс TForm. Класс TForm является стандартным классом Delphi, который определяет свойства формы (представление формы в виде окна, изменение размеров формы и многое другое). Таким образом, наш класс наследует все свойства этого класса. Кроме стандартных свойств, в разделе public могут быть также определены и другие свойства и методы класса. После объявления класса, объявляется переменная Form1 класса TForm1:

var

Form1: TForm1;

Таким образом, форма Form1 представлена в программе типом (классом) TForm1, который при создании новой программы не имеет новых полей и ме-тодов, так как форма пуста. Далее в модуле следует раздел реализации модуля, в котором имеется всего одна директива компилятора: {$R *. DFM} Она предназначена для связывания модуля с описанием соответствующей ему формы.

Примечание. Описание формы и всех размещенных на ней компонентов система Delphi 7 хранит в файлах с расширение .dfm. Эти файлы имеют обычный текстовый формат. Для просмотра содержимого этого файла вы-полните команду


Проект/ Показать Исходный текст. Создаваемая в среде Delphi 7 программа состоит из нескольких файлов.

Это файлы с исходными текстами на Pascal и файлы описаний форм. Все они связаны друг с другом. Кроме того, в среде Delphi 7 имеется множество настроек, которые хранятся в отдельном файле. Набор файлов, в которых содержатся исходные тексты и различные настройки, называется проектом. Файлы проекта лучше сохранять в отдельной папке (команда Файл/Сохранить Проект как …). В этой же папке компилятор в будущем создаст и исполнимое приложение (ехе-файл).

Код проекта, добавляемый при проектировании пользовательского интерфейса приложения При проектировании пользовательского интерфейса (этап 1) мы на форме размещали различные элементы управления и изменяли их свойства. При этом в окно кода автоматически добавляется код, описывающий эти управляющие элементы. После ввода всех изменений свойств описание класса TForm1 выглядит следующим образом: type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Button2: TButton; procedure Button2Click(Sender: TObject);

private { Private declarations } public { Public declarations } end;

Как видно из текста программы, в описание класса добавились (по умол-чанию в раздел Public) объявления размещенных элементов управления. При этом значение свойства Name определяет имя переменной. После символа “:” указывается тип этой переменной. Например, объявление: Edit1: TEdit; означает, что переменная Edit1 принадлежит типу TEdit. Класс TEdit является стандартным типом (а точнее, классом), которое определяет все свойства текстового поля.

Далее по тексту идут объявления переменных, описывающих поля меток и командных кнопок. Поля меток принадлежат классу TLabel, а командные кнопки принадлежат классу TButton. При изменении свойства Name формы также меняется имя класса, которая описывает форму. Наверно вы заметили, имена классов начинаются с префикса “T”: TEdit, TLabel, TButton.

В системе Delphi принято соглашение, обозначать классов с идентификаторами, которые начинаются с префиксом “T”. Примечание. Изменения свойства Name элементов управления через Инспектор объектов приводит к изменению соответствующего кода в окне кода. Однако изменение имен переменных в окне кода не приводит к изменению свойства Name элементов управления. Поэтому неопытный программист не должен ввести изменения в ту часть кода программы, которая отвечает за описание элементов управления.

События и обработчики событий Теперь рассмотрим код, который программист должен ввести для реализации задач, решаемых программой. Структура программы для ОС Windows представляет собой набор подпрограмм, каждая из которых ответственна за об-работку конкретного события. Программист сам решает, какие события в про-грамме требуется обрабатывать. В нашем примере необходимо реагировать только на щелчок на кнопках Сложение, Вычитание, Умножение и Деление.


Каждый элемент управления содержит множество различных событий. Полный список поддерживаемых событий представлен во вкладке События

19 Инспектора объектов. Для создания заготовки процедуры обработки события следует выполнить двойной щелчок на правом поле списка событий. При этом система Delphi в окне кода определяет заголовок процедуры обработки собы-тий и пустое тело процедуры.

Например, заголовок процедуры обработки (далее обработчик) события Щелчок на командной кнопке Cложение имеет вид: procedure TForm1.Button1Click(Sender: TObject); begin ... end;

Примечание. Имеется более простой способ создания заготовки обработчика события нажатие на кнопке. Для этого следует выполнить двойной щелчок на командной кнопке. При этом система Delphi 7 автоматически сгенерирует нужный программный код и переключится в окно редактора кода. Заголовки процедур ButtonClick и FormCreate создаются средой Delphi авто-матически (если набрать их вручную, то программа работать не будеть). При запуске программы на выполнение все функции обработки событий, у которых между begin и еnd не был написан текст удаляются автоматически по соответствующему запросу среды Delphi. Поэтому не надо вручную удалять ошибочно созданные обработчики.

Как видно из текста программы, название процедуры имеет составное имя следующей структуры: Тип_Формы. Имя_Командной_КнопкиClick

Эта процедура имеет один параметр: параметр Sender, как объект класса TObject. Класс TObject является базовым классом (первым родителем) для всех элементов управления. Этот класс имеет свойства (методы) для создания и удаления объекта класса, вывода объекта класса в окно формы и т. д. Параметр Sender определяет, какой объект программы вызывает данную подпрограмму. Хотя он будет вызываться автоматически при щелчке на кнопке Сложить, его можно вызывать и непосредственно из текста программы, как обычную подпрограмму. Например, чтобы проверить, является ли вызов данного обработчика реакцией на нажатие кнопки cmdSum, можно использовать сле-дующий условный оператор:

if Sender = cmdSum then …

Обработчик должен функционировать следующим образом. Строки, вве-денные в поля Edit1 и Edit2, надо преобразовать в числа с помощью стандарт-ной функции StrToInt( ), затем сложить их, результат преобразовать обратно в строку (функция IntToStr( )) и записать его в свойство Text текстового поля Edit3. Доступ к свойству Text и любым другим свойствам происходит путем об-ращения к нему с помощью составного имени: Имя_переменной. Название_свойства Например, свойству Text текстового поля Edit1 следует обращаться так: Edit1.Text


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

С учетом сказанного, ниже приведем код обработчика нажатия на кнопке Сложение. procedure TForm1.Button1Click(Sender: TObject); var x, y, Summa:integer; begin x:= StrToInt(Edit1.Text); y:=StrToInt(Edit2.Text); Summa:= x + y; Edit3.Text:= IntToStr(Sum); end;

Здесь переменные x, y и Summa были введены лишь для сокращения выражений. В этих выражениях хранятся промежуточные значения. Нажатие кнопки Вычитание приводит к вычислению частного чисел, введенных в текстовые поля Edit1 и Edit2 соответственно. С учетом сказанного, код этой процедуры должен иметь вид: procedure TForm1.Button1Click(Sender: TObject); var x, y, Summa:integer; begin

x:= StrToInt(Edit1.Text);

y:=StrToInt(Edit2.Text);

Summa:= x - y; Edit3.Text:= IntToStr(Sum);

end;

Остальные три кнопки пользователю предлагается запрограммировать самостоятельно. Теперь можно сохранить проект и выполнить компиляцию программы (команда Проект/Компилировать проект), запустить ее, ввести в поля ввода два произвольных числа и щелкать на соответствующих кнопках.

Примечание. В этом примере считалось, что в текстовые полях вводят-ся только целочисленные значения.

Для вычисления суммы чисел с десятичной запятой необходимо использовать другие функции преобразования строки в число и наоброт:

1) StrToFloat( ) – это преобразование строки в вещественное число;

2) FloatToStr( ) – это преобразование вещественнго числа в строку.

В данном примере мы использовали такие компоненты как: кнопка, тек-стовое поле, метка. Этот же пример можно реализовать, используя другой ком-понент – ComboBox(Раскрывающийся список). Рассмотрим данный вариант ре-ализации калькулятора (рисунок 1.4):

Рисунок 1.4 Использование компонента ComboBox

Приводим программный код выбора пункта компонента Раскрывающийся список: procedure TForm1.ComboBox1Select(Sender: TObject); var a,b,c:Real; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); case ComboBox1.ItemIndex of 0: c:=a+b; 1: c:=a-b; 2: c:=a*b; 3: c:=a/b; end; Edit3.Text:=FloatToStr(c); end;