Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






II. Задание для самостоятельного выполнения. Для демонстрации возможностей Delphi и технологии визуального проектирования разработаем программу, вычисляющую скорость






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

Окно программы во время ее работы приведено на рис.1.

 

Рис.1. Окно программы вычисления скорости бега.

 

Для начала работы над новой программой запустите Delphi.

Если вы уже работаете в среде разработки и у вас загружен другой проект, выберите из меню File (Файл) команду New/Application (Создать/Приложение).

 

Форма

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

На этапе разработки программы диалоговые окна называют формами.

Стартовая форма создается путем изменения значений свойств формы Form1 и добавления к форме необходимых компонентов (полей ввода и вывода текста, командных кнопок).

Свойства формы (табл.1) определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.

 

  табл.1. Свойства формы.
Свойство Описание
Name Расстояние от верхней границы формы до верхней границы экрана.
Caption Расстояние от левой границы формы до левой границы экрана.
width Вид границы. Граница может быть обычной (bizizeable), тонкой (bisingle) или отсутствовать (biNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна во время работы программы изменить нельзя.
Height Высота формы.
Тор Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню.
Left Расстояние от левой границы формы до левой границы экрана.
BorderStyle Вид границы. Граница может быть обычной (bizizeable), тонкой (bisingle) или отсутствовать (biNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна во время работы программы изменить нельзя.
BorderIcons Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы программы. Значение свойства задается путем присвоения значений уточняющим свойствам biSystemMenu, biMinimize, biMaximize и biHelp. Свойство biSystemMenu определяет доступность кнопки Свернуть и кнопки системного меню, biMinimize - кнопки Свернуть, biMaximize - кнопки Развернуть, biHelp - кнопки вывода справочной информации.
Icon Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню.
Color Цвет фона. Цвет можно задать, указав название цвета или привязку к текущей цветовой схеме операционной системы. Во втором случае цвет определяется текущей цветовой схемой, выбранным компонентом привязки и меняется при изменении цветовой схемы операционной системы.
Font Шрифт. Шрифт, используемый " по умолчанию" компонентами, находящимися на поверхности формы. Изменение свойства Font формы приводит к автоматическому изменению свойства Font компонента, располагающегося на поверхности формы. То есть компоненты наследуют свойство Font от формы (имеется возможность запретить наследование).

 

Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector.

В верхней части окна Object Inspector указано имя объекта, значения свойств которого отображается в данный момент.

В левой колонке вкладки Properties (Свойства) перечислены свойства объекта, а в правой - указаны их значения.

При создании формы в первую очередь следует изменить значение свойства Caption (Заголовок).

В нашем примере надо заменить текст Form1 на " Скорость бега".

Чтобы это сделать, нужно в окне Object Inspector щелкнуть мышью в строке Caption, в результате чего будет выделено текущее значение свойства, в строке появится курсор, и можно будет ввести текст " Скорость бега" (рис.2).

рис.2. Изменение значения свойства Caption.

 

Размер формы и ее положение на экране, а также размер других элементов управления и их положение на поверхности формы, задают в пикселях, т.е. точках экрана.

Форма - это обычное окно.

Поэтому его размер можно изменить точно так же, как любого другого окна, т.е. захватом и перемещением (с помощью мыши) границы.

По окончании перемещения границ автоматически изменятся значения свойств Height и Width. Они будут соответствовать установленному размеру формы.

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

Значения этих свойств также можно задать путем перемещения окна формы при помощи мыши.

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

Очевидно, что значение таких свойств можно задать путем выбора из списка (рис.3).

 

рис.3. Установка значения свойства путем выбора из списка.

 

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

Перед именами сложных свойств стоит значок " +", при щелчке на котором раскрывается список уточняющих свойств (рис.4).

 

рис.4. Раскрытый список вложенных свойств сложного свойства Bordericons.

Например, свойство Bordericons определяет, какие кнопки управления окном будут доступны во время работы программы.

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

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

Это значит, что для задания значения свойства можно воспользоваться дополнительным диалоговым окном.

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

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

  табл.2.
Свойство Значение
Caption Скорость бега
Height  
Width  
BorderStyle BsSingle
Borderlcons. biMinimize False
Borderlcons.biMaximize False
Font.Size  

 

Остальные свойства оставлены без изменения и в таблице не приведены.

В приведенной таблице в именах некоторых свойств есть точка.

Это значит, что надо задать значение уточняющего свойства.

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

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

Программа в окне кодов должна иметь вид:

 

unit vrun1;

 

interface

 

uses

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

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

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

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

 

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

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

procedure TForm1.Button1Click(Sender: TObject);

var

dist: integer; // дистанция, метров

t: real; // время, как дробное число

 

min: integer; // время, минуты

sek: integer; // время, секунды

 

v: real; // скорость

begin

// получить исходные данные из полей ввода

dist: = StrToInt(Edit1.Text);

t: = StrToFloat(Edit2.Text);

 

// предварительные преобразования

min: = Trunc(t); // кол-во минут - это целая часть числа t

sek: = Trunc(t*100) mod 100; // кол-во секунд - это дробная часть числа t

 

// вычисление

v: = (dist/1000) / ((min*60 + sek)/3600);

 

// вывод результата

label4.Caption: = 'Дистанция: '+ Edit1.Text + ' м' + #13 +

'Время: ' + IntToStr(min) + ' мин ' +

IntToStr(sek) + ' сек ' + #13 +

'Скорость: ' + FloatToStrF(v, ffFixed, 4, 2) + ' км/час';

 

end;

 

// щелчок на кнопке Завершить

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close;

end;

 

// нажатие клавиши в поле Дистанция

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

begin

// Key - символ, соответствующий нажатой клавише.

// Если символ недопустимый, то процедура заменяет его

// на символ с кодом 0. В результате этого символ в поле

// редактирования не появляется и у пользователя создается

// впечатление, что программа не реагирует на нажатие некоторых

// клавиш.

case Key of

'0'..'9':; // цифра

#8:; // < Backspace>

#13: Edit2.SetFocus; // < Enter>

 

// остальные символы - запрещены

else Key: =Chr(0); // символ не отображать

end;

end;

 

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

begin

case Key of

'0'..'9':; // цифра

 

', ', '.':

// точка или запятая

begin

if Key = '.' then Key: = ', '; // подменим точку запятой

// проверим, есть ли в поле Edit2 запятая

if Pos(', ', Edit2.Text) < > 0 // запятая уже есть

then Key: =Char(0); // вторую запятую не отображать

end;

 

#8:; // < Backspace>

 

// остальные символы - запрещены

else Key: =Chr(0); // символ не отображать

end;

end;

 

end.

III. Контрольные вопросы

1. Общая структура Среды Delphi

2. Основные элементы

3. Дополнительные элементы

4. Инструментальные средства

5. Стандартные компоненты

6. Инспектор объектов

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.