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

ЛАБОРАТОРНАЯ РАБОТА №1

«ПРИМЕНЕНИЕ БАЗОВЫХ КОМПОНЕНТ В ИНСТРУМЕНТАЛЬНОЙ СРЕДЕ DELPHI»

Тема: Применение базовых компонент в инструментальной среде

Delphi.

Цель работы: знакомство с инструментальной средой программирования Delphi, развитие навыков работы с базовыми компонентами Delphi.

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

Delphi;

научиться работать с базовыми компонентами;

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

Windows.

Лабораторная работа выполняется в операционной системе Windows ХР/200х с использование инструментальной среды Delphi и языка программирования Object Pascal.

1ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1.1Общие замечания

Приступая к созданию законченного приложения Windows, необходимо помнить:

Процесс создания программы в Delphi состоит из двух шагов: сначала нужно создать форму программы (диалоговое окно), затем — написать процедуры обработки событий. Форма приложения (так принято называть прикладные программы, работающие в Windows) создается путем добавления в форму компонентов и последующей их настройки.

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

Label — поле вывода текста;

Edit — поле ввода/редактирования текста; Button — командную кнопку;

CheckBox — независимую кнопку выбора; RadioButton — зависимую кнопку выбора; ListBox — список выбора;

ComboBox — комбинированный список выбора.

Вид компонента, его размер и поведение определяются значениями свойств (характеристик) компонента (описание свойств базовых компонентов можно найти в справочнике, во второй части книги).

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

Исходную информацию программа может получить из полей ввода/редактирования (компонент Edit), списка выбора (компонент

ListBox) или комбинированного списка (компонент ComboBox). Для ввода значений логического типа можно использовать Компоненты

CheckBox и RadioButton.

• Результат программа может вывести в поле вывода текста (компонент

Label) или в окно сообщения

(функция MessageDlg).

• Для преобразования текста,

например находящегося в поле

ввода/редактирования, в целое число нужно использовать Функцию StrToInt, а В Дробное — функцию StrToFloat. Для

преобразования целого, например значения переменной, в строку нужно использовать функцию intTostr, а для преобразования Дробного — функцию

FloatToStr или FloatToStrF.

1.2Палитра компонентов Standart

Втаблице приведены компоненты страницы Standart.

TFrames

TMainMenu

TPopupMenu

Фрейм (кадр). Компонент визуальный. Панель с возможностями наследования. Проектируется как отдельное окно. Фрейм представляет собой нечто среднее между панелью и формой.

Главное меню. Компонент невизуальный. Он позволяет вам поместить главное меню в программу.

Всплывающее меню. Компонент невизуальный. Этот компонент позволяет создавать всплывающее контекстное меню. Этот тип меню появляется по щелчку правой кнопки мыши на объекте, к которому привязано данное меню. У всех видимых объектов имеется свойство PopupMenu, где и указывается нужное меню. Создается Popup-Menu аналогично главному меню.

2

Родионов К.А. Лабораторный практикум

TLabel

TEdit

TMemo

TButton

TCheckBox

TRadioButton

Метка. Компонент визуальный. Этот компонент служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойстве Font (шрифт) в Инспекторе объектов. Вы увидите, что это легко cделать и во время выполнения программы, написав всего одну строчку кода.

Окно редактирования. Компонент визуальный. Это стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.

Многострочное окно редактирования. Компонент визуальный. Это иная форма TEdit. Подразумевает работу с большими текстами. ТМето может переносить слова, сохранять в Clipboard (Буфер обмена) фрагменты текста и восстанавливать их. ТМето имеет ограничения на объем текста в 32 Кб, это составляет 10-20 страниц.

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

Контрольный индикатор с флажком. Компонент визуальный. Он отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то вы брано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из

CheckBox'oB.

Радиокнопка. Компонент визуальный. Он позволяет выбрать только одну опцию из нескольких. Радиокнопки часто применяются в диалоговых окнах настройки какоголибо элемента операционной среды Windows. Посмотрите программы папки Панель управления.

3

Родионов К.А. Лабораторный практикум

TListBox

TScrollBar

TGroupBox

TRadioGroup

TPanel

TActionList

Окно списка. Компонент визуальный. Он нужен для показа прокручиваемого списка. Классический пример ListBox'a в среде Windows — выбор файла из списка в пункте меню File | Open (Файл | Открыть) многих приложений. Названия файлов или директорий и находятся в ListBox'e.

Полоса прокрутки. Компонент визуальный. Она появляется автоматически в объектах редактирования, ListBox'ax, при необходимости прокрутки текста для просмотра.

Групповое окно. Компонент визуальный. Он используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).

Группа радиокнопок. Компонент визуальный. Является комбинацией группового окна TGroupВох с набором радиокнопок TRadioButton; служит специально для создания групп радиокнопок, но никакие другие органы управления не разрешены.

Панель. Компонент визуальный. Управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.

Список событий. Компонент невизуальный. Обеспечивает диспетчеризацию событий компонентов.

4

Родионов К.А. Лабораторный практикум

2ПРАКТИЧЕСКАЯ РАБОТА

2.1Создание простейшего приложения Windows.

Задание: Написать программу, которая пересчитывает скорость ветра из "метров в секунду" в "километров в час".

Рекомендуемый вид формы приведен на рисунке 1.

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

Рисунок 1. Форма программы «Скорость ветра»

1.Создайте проект. В Строке заголовка формы укажите название окна проекта. Для этого в Инспекторе объектов, в свойстве Caption (заголовок) для формы, запишите: «Скорость ветра». На рис. 1 показан вид формы.

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

3.Выберите на странице Standard (стандартные) компонент TLabel (метка). Щелкните на поле формы, и на нем появится объект Label1, а Инспектор объектов отобразит его свойства. Свойство Visible (видимый) для объекта Labell надо оставить True (истина). Это значит, что текст будет видимым. В свойстве Caption (заголовок) запишите: «Программа пересчитывает скорость …» (см. рисунок 1). Выберите параметры для шрифта с помощью свойства Font (шрифт).

4.Создайте аналогично еще две надписи Label2 и Label3. В свойстве Caption запишите: «Скорость (м/с)» для Label2 и « » для Label3.

5.Для того чтобы при щелчке на кнопке появлялся результат пересчета, надо написать код, обрабатывающий событие «щелчок на кнопке». Выделите кнопку мышью, в Инспекторе объектов откройте лист Events (свойства), на котором выберите событие OnClick (щелчок указателем мыши), и дважды щелкните в пустом поле, находящемся рядом с названием события.

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

5

Родионов К.А. Лабораторный практикум

procedure TForm1.Button1Click(Sender: TObject); begin

end;

Это заготовка процедуры обработки события OnClick (щелчок). Между словами begin (начало) и end (конец) надо записать текст

процедуры:

// щелчок на кнопке Пересчет

procedure TForm1.Button1Click(Sender: TObject); var

ms: integer; // скорость м/с kmh: real; // скорость км/час

begin

//если поле Edit1 пустое, то при выполнении функции

//StrToInt возникает ошибка.

//Проверим, ввел ли пользователь скорость в поле Edit1

if Length(Edit1.Text) = 0 then begin

ShowMessage('Надо ввести скорость'); exit; // завершить обработку события

end;

 

 

 

 

ms

:=

StrToInt(Edit1.Text);

//

ввести исходные данные

kmh

:=

ms * 3.6;

//

пересчитать

// вывести результат

Label3.Caption :=

IntToStr(ms) + ' м/с - это ' + FloatToStr(kmh) + ' км/час'

end;

Здесь результат пересчета выводится текстовую надпись

Label3.Caption.

6. Сохраните изменения и запустите программу. На этом конструирование проекта приложения закончено. Здесь представлен листинг всей программы с комментариями:

Листинг 1.

unit wind2_; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls; type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Button1: TButton;

6

Родионов К.А. Лабораторный практикум

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char); private

{Private declarations } public

{Public declarations } end;

var

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

// щелчок на кнопке Пересчет

procedure TForm1.Button1Click(Sender: TObject); var

ms: integer; // скорость м/с kmh: real; // скорость км/час

begin

//если поле Edit1 пустое, то при выполнении функции

//StrToInt возникает ошибка.

//Проверим, ввел ли пользователь скорость в поле Edit1

if Length(Edit1.Text) = 0 then begin

 

ShowMessage('Надо ввести

скорость');

 

exit; // завершить обработку события

end;

 

ms

:= StrToInt(Edit1.Text);

// ввести исходные данные

kmh

:= ms * 3.6;

// пересчитать

// вывести результат

 

Label3.Caption :=

это ' + FloatToStr(kmh) + '

 

IntToStr(ms) + ' м/с -

км/час' end;

// нажатие клавиши в поле Edit1

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin

//В поле Скорость (Edit1) можно ввести только

//цифры. Процедура проверяет, является ли символ

//допустимым. Если нет, то она заменяет

//введеный символ нулевым. В результате символ

//в поле редактирования не отображается.

//Key - символ, соответствующий нажатой клавише if not ((Key >= '0') and (Key <='9') or (Key = #8))

then Key := Chr(0);

end;

end.

7

Родионов К.А. Лабораторный практикум

7. Обратите внимание на процедуру Edit1KeyPress, в которой происходит обработка события – нажатие клавиши клавиатуры для текстового поля Edit1. Процедуре передается параметр <Key> - символ, соответствующий нажатой клавише и далее процедура допускает нажатие клавиш с цифрами и <Backspace>, остальные символы не отображает.

7. Запустите программу на решение, используя кнопку на панели

инструментов «Debug» или команду системного меню Run Run (клавиша

F9).

8. Просмотрите и проверьте полученные результаты.

7. Результаты пересчета, диалоговое окно формы и код программы поместите в отчет по лабораторной работе.

9. Для закрепления практических приемов работы выполните упражнение 1 из раздела 3 самостоятельной работы .

2.2 Программа расчета сопротивления электрической цепи

Задание. Разберем следующую задачу.

 

Написать программу, которая вычисляет

 

сопротивление

электрической

цепи,

 

состоящей

из

двух

сопротивлений.

 

Сопротивления

могут

быть

соединены

 

последовательно

или

параллельно.

 

Рекомендуемый вид формы приведен на

 

рисунке 2. Если величина сопротивления

 

цепи превышает

1 000

Ом,

то

результат

 

должен быть выведен в килоомах.

 

 

1. Создайте проект. В Строке заголовка

 

формы укажите название окна проекта.

 

2. Для задания значений сопротивлений

Рисунок 2. Рекомендуемый вид

R1 и R2 в форму необходимо добавить два

текстовых поля Edit1 и Edit2.

 

 

формы программы.

 

 

 

3. Учитывая, что расчетные формулы величины сопротивления зависят от типа соединения, следовательно в форму диалогового окна необходимо установить переключатели RadioButton1 и RadioButton2.

Переключатели RadioButton1 и RadioButton2 зависимые, поэтому о типе соединения можно судить по состоянию одного из них. Значение свойства Checked = true указывает на выбор данного переключателя.

4. Исходный текст программы приведен в листинге 2.

8

Родионов К.А. Лабораторный практикум

Листинг 2.

unit sopr_;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm) Label2: TLabel; Edit1: TEdit; Label3: TLabel; Edit2: TEdit;

RadioGroup1: TRadioGroup; Button1: TButton; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label4: TLabel;

Label1: TLabel;

procedure Button1Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1;

implementation

{$R *.dfm}

// щелчок на кнопке Вычислить

procedure TForm1.Button1Click(Sender: TObject); var

r1,r2: real; // величины сопротивлений r: real; // сопротивление цепи

begin

// получить исходные данные r1 := StrToFloat(Edit1.Text); r2 := StrToFloat(Edit2.Text);

if (r1 = 0) and (r2 = 0) then begin

9

Родионов К.А. Лабораторный практикум

ShowMessage('Надо задать величину хотя бы одного сопротивления');

exit;

end;

//переключатели RadioButton1 и RadioButton2

//зависимые, поэтому о типе соединения можно

//судить по состоянию одного из этих

//переключателей

if RadioButton1.Checked

then // выбран переключатель Последовательно r:= r1+r2

else // выбран переключатель Параллельно r:= (r1*r2)/(r1+r2);

Label4.Caption := 'Сопротивление цепи: '; if r < 1000 then

Label4.Caption := Label4.Caption + FloatToStrF(r,ffGeneral,3,2) + ' Ом'

else

begin r:=r/1000;

Label4.Caption := Form1.Label4.Caption + FloatToStrF(r,ffGeneral,3,2) + ' кОм';

end

end;

// щелчок на переключателе Последовательно procedure TForm1.RadioButton1Click(Sender: TObject); begin

// пользователь изменил тип соединения

Label4.Caption := ''; end;

// щелчок на переключателе Параллельно

procedure TForm1.RadioButton2Click(Sender: TObject); begin

// пользователь изменил тип соединения

Label4.Caption := ''; end;

end.

5.Запустите программу на решение, просмотрите и проверьте полученные результаты.

6.Сохраните проект.

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

10

Родионов К.А. Лабораторный практикум

Соседние файлы в папке Лаба 1