Реферат Курсовая Конспект
Лекция 1. От языка Pascal к системе Delphi - раздел Программирование, Лекция 1. От Языка Pascal К Систе...
|
Форма
Работа над новым проектом, так в Delphi называется разрабатываемое приложение, начинается с создания стартовой формы. Так на этапе разработки программы называют диалоговые окна.
Стартовая форма создается путем изменения значений свойств формы Form1и добавления к форме необходимых компонентов (полей ввода и вывода текста, командных кнопок).
Свойства формы (табл. В1) определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.
Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector.В верхней части окна Object Inspectorуказано имя объекта, значения свойств которого отображается в данный момент. В левой колонке вкладки Properties(Свойства) перечислены свойства объекта, а в правой — указаны их значения.
Таблица В1. Свойства формы (объекта Tform)
Свойство | Описание | ||
Name | Имя формы. В программе имя формы используется для управления формой и доступа к компонентам формы | ||
Caption | Текст заголовка | ||
Width | Ширина формы | ||
Height | Высота формы | ||
Top | Расстояние от верхней границы формы до верхней границы экрана | ||
Left | Расстояние от левой границы формы до левой границы экрана | ||
BorderStyle | Вид границы. Граница может быть обычной (bsSizeable), тонкой (bsSingle) или отсутствовать (bsNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна во время работы программы изменить нельзя | ||
Свойство | Описание | ||
BorderIcons Icon Color Font | Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы программы. Значение свойства задается путем присвоения значений уточняющим свойствам biSystemMenu, biMinimaze, biMaximaze и biHelp. Свойство biSystemMenu определяет доступность кнопки Свернуть и кнопки системного меню, biMinimaze— кнопки Свернуть, biMaximaze— кнопки Развернуть, biHelp — кнопки вывода справочной информации Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню Цвет фона. Цвет можно задать, указав название цвета или привязку к текущей цветовой схеме операционной системы. Во втором случае цвет определяется текущей цветовой схемой, выбранным компонентом привязки и меняется при изменении цветовой схемы операционной системы Шрифт. Шрифт, используемый "по умолчанию" компонентами, находящимися на поверхности формы. Изменение свойства Font формы приводит к автоматическому изменению свойства Font компонента, располагающегося на поверхности формы. То есть компоненты наследуют свойство Font от формы (имеется возможность запретить наследование) | ||
При создании формы в первую очередь следует изменить значение свойства caption (Заголовок). В нашем примере надо заменить текст Form1 на "скорость бега". Чтобы это сделать, нужно в окне Object Inspectorщелкнуть мышью на строке Caption, в результате чего будет выделено текущее значение свойства, в строке появится курсор, и можно будет ввести текст "скорость бега" (рис. В12).
Аналогичным образом можно установить значения свойств Height и width, которые определяют высоту и ширину формы. Размер формы и ее положение на экране, а также размер других элементов управления и их положение на поверхности формы задают в пикселях, т. е. точках экрана. Свойствам Height и width надо присвоить значения 250 и 330 соответственно.
Форма — это обычное окно. Поэтому его размер можно изменить точно так же, как размер любого другого окна, т. е. захватом и перемещением (с помощью мыши) границы. По окончании перемещения границ автоматически изменятся значения свойств Height и width. Они будут соответствовать установленному размеру формы.
Рис. В12. Установка значения свойства путем ввода значения
Положение диалогового окна на экране после запуска программы соответствует положению формы во время ее разработки, которое определяется значением свойств тор (отступ от верхней границы экрана) и Left (отступ от левой границы экрана). Значения этих свойств также можно задать путем перемещения окна формы при помощи мыши.
При выборе некоторых свойств, например, Borderstyle, справа от текущего значения свойства появляется значок раскрывающегося списка. Очевидно, что значение таких свойств можно задать путем выбора из списка (рис. В13).
Некоторые свойства являются сложными, т. е. их значение определяется совокупностью значений других (уточняющих) свойств. Перед именами сложных свойств стоит значок "+", при щелчке, на котором раскрывается список уточняющих свойств (рис. В14). Например, свойство BorderIcons определяет, какие кнопки управления окном будут доступны во время работы программы. Так, если свойству biMaximize присвоить значение False, то во время работы программы кнопки Развернутьв заголовке окна не будет.
Рис. В13. Установка значения свойства путем выбора из списка
Рис. В14. Раскрытый список вложенных свойств сложного свойства BorderIcons
Рядом со значениями некоторых свойств отображается командная кнопка с тремя точками. Это значит, что для задания значения свойства можно воспользоваться дополнительным диалоговым окном. Например, значение сложного свойства Font можно задать путем непосредственного ввода значений уточняющих свойств, а можно воспользоваться стандартным диалоговым окном выбора шрифта.
В табл. В2 перечислены свойства формы разрабатываемой программы, которые следует изменить. Остальные свойства оставлены без изменения и в таблице не приведены.
Таблица В2. Значения свойств стартовой формы
Свойство | Значение | ||
Caption | Скорость бега | ||
Height | |||
Width | |||
BorderStyle | bsSingle | ||
Свойство | Значение | ||
BorderIcons . biMinimize | False | ||
BorderIcons . biMaximize | False | ||
Font. Size | |||
В приведенной таблице в именах некоторых свойств есть точка. Это значит, что надо задать значение уточняющего свойства. После того как будут установлены значения свойств главной формы, она должна иметь вид, приведенный на рис. В15.
Рис. В15. Так выглядит форма после установки значений свойств
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;
Функция Button1Click выполняет расчет скорости и выводит результат расчета в поле Label4. Исходные данные вводятся из полей редактирования Editl и Edit2 путем обращения к свойству Text. Свойство Text содержит строку символов, которую во время работы программы введет пользователь. Для правильной работы программы строка должна содержать только цифры. Для преобразования строки в числа в программе используются функции StrToInt и StrToFloat. Функция StrToInt проверяет символы строки, переданной ей в качестве параметра (Edit1.Text - это содержимое поля Editl), на допустимость и, если все символы верные, возвращает соответствующее число. Это число записывается в переменную dist. Аналогичным образом работает функция StrToFloat, которая возвращает дробное число, соответствующее содержимому поля Edit2. Это число записывается в переменную t.
После того как исходные данные будут помещены в переменные dist и t, выполняются подготовительные действия и расчет. Первоначально с использованием функции Trunc, которая "отбрасывает" дробную часть числа, выделяется целая часть переменной t — это количество минут. Значением выражения Trunc(t*100) mod 100 является количество секунд. Вычисляется это выражение так. Сначала число t умножается на 100. Полученное значение передается функции Trunc, которая возвращает целую часть результата умножения t на 100. Полученное таким образом число делится по модулю на 100. Результат деления по модулю — это остаток от деления.
После того как все данные готовы, выполняется расчет. Так как скорость должна быть выражена в км/час, то значения дистанции и времени, выраженные в метрах и минутах, преобразуются в километры и часы.
Вычисленное значение скорости выводится в поле Label4 путем присваивания значения свойству Caption. Для преобразования чисел в строки используются функции IntToStr и FloatToStr.
В результате нажатия кнопки Завершитьпрограмма должна завершить работу. Чтобы это произошло, надо закрыть, убрать с экрана, главное окно программы. Делается это при помощи метода close. Процедура обработки события Onclick для кнопки Завершитьприведена в листинге В2.
Листинг В2. Процедура обработки события Onclick на кнопке Button2 (Завершить)
// нажатие кнопки Завершить
procedureTForm1.Button2Click(Sender: TObject);
Begin
Form1.Close; // закрыть главное окно программы
end;
Uses
Forms,vrun1 in'vrun1.pas' {Form1};
{$R *.res}
Begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
End.
Начинается главный модуль словом program, за которым следует имя программы, совпадающее с именем проекта. Имя проекта задается в момент сохранения проекта, и оно определяет имя создаваемого компилятором исполняемого файла программы. Далее за словом uses следуют имена используемых модулей: библиотечного модуля Forms и модуля формы vrunl.pas.
Строка {$R *.RES}, которая похожа на комментарий, — это директива компилятору подключить файл ресурсов. Файл ресурсов содержит ресурсы приложения: пиктограммы, курсоры, битовые образы и др. Звездочка показывает, что имя файла ресурсов такое же, как и у файла проекта, но с расширением res.
Строка Application.Initialize – означает обращение к методу Initialize объекта Application. Прочитав эту строку, компилятор создаст код, которой заставит процессор перейти к выполнению большого фрагмента программы, написанного для нас разработчиками Delphi. После выполнения этого фрагмента (т.е. после выхода из подпрограммы) управление процессором перейдет к следующей строке программы, в которой вызывается метод CreateForm и т.д.
Метод CreateForm объекта Application создает и показывает на экране окно главной формы, а метод Run реализует бесконечный цикл получения и обработки, поступающих от Windons сообщений о действиях пользователя. Когда пользователь щелкнет по кнопке Close, Windows передаст программе специальное сообщение, которое, в конечном счете, заставит программу прекратить работу и освободить назначенные ей системные ресурсы (память и процессор).
Файл ресурсов не "является текстовым файлом, поэтому просмотреть его с помощью редактора текста нельзя. Для работы с файлами ресурсов используют специальные программы, например, Resource Workshop. Можно также применять входящую в состав Delphi утилиту Image Editor, доступ к которой можно получить выбором из меню Toolsкоманды Image Editor.
Исполняемая часть главного модуля находится между инструкциями begin и end. Инструкции исполняемой части обеспечивают инициализацию приложения и вывод на экран стартового окна.
Помимо главного модуля, каждая программа включает в себя еще как минимум один модуль формы, который содержит описание стартовой формы приложения и поддерживающих ее работу процедур. В Delphi каждой форме соответствует свой модуль.
В листинге В4 приведен текст модуля программы вычисления скорости бега.
Листинг В4. Модуль программы Скорость бега
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;
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
private{ Private declarations }
public { Public declarations }
end;
varForm1: TForm1;
implementation{раздел реализации}
{$R *.dfm}
// нажатие кнопки Вычислить
procedureTForm1.ButtonlClick(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;
// нажатие кнопки Завершить
procedureTForm1.Button2Click(Sender: TObject);
Begin
Form1.Close;
end;
End.
Начинается модуль словом unit, за которым следует имя модуля. Именно это имя упоминается в списке используемых модулей в инструкции uses главного модуля приложения, текст которого приведен в листинге ВЗ.
Модуль состоит из следующих разделов:
Раздел интерфейса (начинается словом interface) сообщает компилятору, какая часть модуля является доступной для других модулей программы. В этом разделе перечислены (после слова uses) библиотечные модули, используемые данным модулем. Также здесь находится сформированное Delphi описание формы, которое следует за словом type.
Раздел реализации открывается словом implementation и содержит объявления локальных переменных, процедур и функций, поддерживающих работу формы.
Начинается раздел реализации директивой {$R *.DFM}, указывающей компилятору, что в процессе генерации выполняемого файла надо использовать описание формы. Описание формы находится в файле с расширением dfm, имя которого совпадает с именем модуля. Файл описания формы генерируется средой Delphi на основе внешнего вида формы.
За директивой {$R *.DFM} следуют процедуры обработки событий для формы и ее компонентов. Сюда же программист может поместить другие процедуры и функции.
Раздел инициализации позволяет выполнить инициализацию переменных модуля. Инструкции раздела инициализации располагаются после раздела реализации (описания всех процедур и функций) между begin и end. Если раздел инициализации не содержит инструкций (как в приведенном примере), то слово begin не указывается.
Следует отметить, что значительное количество инструкций модуля формирует Delphi. Например, Delphi, анализируя действия программиста по созданию формы, генерирует описание класса формы (после слова type). В приведенном примере инструкции, набранные программистом, выделены фоном. Очевидно, что Delphi выполнила значительную часть работы по составлению текста программы.
Примечание
Так как проект представляет собой набор файлов, то рекомендуется для каждого проекта создавать отдельную папку.
Примечание
Если во время компиляции окна Compilingна экране нет, то выберите из меню Toolsкоманду Environment optionsи на вкладке Preferencesустановите во включенное состояние переключатель Show compiler progress.
Рис. В39. Сообщения компилятора об обнаруженных ошибках
Ошибки
Компилятор генерирует исполняемую программу лишь в том случае, если исходный текст не содержит синтаксических ошибок. В большинстве случаев в только что набранной программе есть ошибки. Программист должен их устранить.
Чтобы перейти к фрагменту кода, который содержит ошибку, надо установить курсор в строку с сообщением об ошибке и из контекстного меню (рис. В40) выбрать команду Edit source.
Процесс устранения ошибок носит итерационный характер. Обычно сначала устраняются наиболее очевидные ошибки, например, декларируются необъявленные переменные. После очередного внесения изменений в текст программы выполняется повторная компиляция. Следует учитывать тот факт, что компилятор не всегда может точно локализовать ошибку. Поэтому, анализируя фрагмент программы, который, по мнению компилятора, содержит ошибку, нужно обращать внимание не только на тот фрагмент кода, на который компилятор установил курсор, но и на тот, который находится в предыдущей строке.
Рис. В40. Переход к фрагменту программы, содержащему ошибку
В табл. В10 перечислены наиболее типичные ошибки и соответствующие им сообщения компилятора.
Таблица В10. Сообщения компилятора об ошибках
Сообщение | Вероятная причина | ||
Missing operator or semicolon (Отсутствует оператор или точка с запятой) | После инструкции не поставлена точка с запятой | ||
Если компилятор обнаружил достаточно много ошибок, то просмотрите все сообщения, устраните сначала наиболее очевидные ошибки и выполните повторную компиляцию. Вполне вероятно, что после этого количество ошибок значительно уменьшится. Это объясняется особенностями синтаксиса языка, когда одна незначительная ошибка может "тащить" за собой довольно большое количество других.
Если в программе нет синтаксических ошибок, компилятор создает исполняемый файл программы. Имя исполняемого файла такое же, как и у файла проекта, а расширение — exe. Delphi помещает исполняемый файл в тот же каталог, где находится файл проекта.
Запуск программы
Пробный запуск программы можно выполнить непосредственно из Delphi, не завершая работу со средой разработки. Для этого нужно из меню Runвыбрать команду Runили щелкнуть на соответствующей кнопке панели инструментов Debug(рис. В41).
Рис. В41. Запуск программы из среды разработки
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics,Controls, Forms,Dialogs, StdCtrls;
Type
TForml = class(TForm)
Edit1: TEdit; Edit2: TEdit;
Label1: TLabel; Label2: TLabel;
Label3: TLabel; Label4: TLabel;
Button1: TButton;
Button2: TButton;
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
procedureEdit1KeyPress(Sender: TObject; var Key: Char);
private{ Private declarations }
public{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{$R *.dfm)
// нажатие кнопки Вычислить
procedureTForm1.Button1Click(Sender: TObject);
Var
dist : integer; // дистанция, метров
t: real; // время как дробное число
min : integer; // время, минуты
sek : integer; // время, секунды
v: real; // скорость
Begin
// получить исходные данные из полей ввода
dist := StrToInt(Editl.Text); t := StrToFloat(Edit2.Text);
// предварительные преобразования
min := Trunc(t); // кол-во минут — это целая часть числа t
sek := Trunc(t*100) mod100; // кол-во секунд — это дробная
// часть числа t
// вычисление
v := (dist/1000) / ( (min*60 + sek)/3600);
// вывод результата
label4.Caption := 'Дистанция: '+ Edit1.Text +
' м' + #13 + 'Время: ' + IntToStr(min) +
' мин ' + IntToStr(sek) + ' сек ' + #13 +
'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';
end;
// нажатие кнопки Завершить
procedureTForm1.Button2Click(Sender: TObject);
Begin
Form1.Close; end;
// нажатие клавиши в поле Дистанция
procedureTForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Begin
// Key — символ, соответствующий нажатой клавише.
// Если символ недопустимый, то процедура заменяет его
// на символ с кодом 0. В результате этого символ в поле
// редактирования не появляется, и у пользователя создается
// впечатление, что программа не реагирует на нажатие некоторых
// клавиш.
CaseKey of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#13 : Edit2.SetFocus ; // клавиша <Enter>
// остальные символы — запрещены
elseKey :=Chr(0); // символ не отображать
end;
end;
End.
После внесения изменений проект следует сохранить. Для этого нужно из меню Fileвыбрать команду Save all.
Окончательная настройка приложения
После того как программа отлажена, необходимо выполнить ее окончательную настройку, т. е. задать название программы и выбрать значок, который будет изображать исполняемый файл приложения в папке или на рабочем столе, а также на панели задач во время работы программы.
Настройка приложения выполняется на вкладке Applicationдиалогового окна Project Options(рис. В44), которое появляется в результате выбора из меню Projectкоманды Options.
В поле Titleнадо ввести название приложения. Текст, который будет введен в это поле, будет выведен на панели задач Windows, рядом со значком, изображающим работающую программу.
Рис. В44. Используя вкладку Application,можно задать значок и название программы
Чтобы назначить приложению значок, отличный от стандартного, нужно щелкнуть мышью на кнопке Load Icon.Затем, используя стандартное окно просмотра папок, найти подходящий значок (значки хранятся в файлах с расширением ico).
Создание значка для приложения
В состав Delphi входит программа Image Editor(Редактор изображений), при помощи которой программист может создать для своего приложения уникальный значок. Запускается Image Editorвыбором соответствующей команды из меню Toolsили из Windows — командой Пуск | Программы Borland Delphi 7 | Image Editor.
Чтобы начать работу по созданию нового значка, нужно из меню Fileвыбрать команду New, а из появившегося списка — опцию Icon File.
После выбора типа создаваемого файла открывается окно Icon Properties, в котором необходимо выбрать характеристики создаваемого значка: size (Размер) — 32x32 (стандартный размер значков Windows) и Colors (Палитра) — 16 цветов. В результате нажатия кнопки ОКоткрывается окно Icon1.ico, в котором можно, используя стандартные инструменты и палитру, нарисовать нужный значок.
Процесс рисования в Image Editor практически ничем не отличается от процесса создания картинки в обычном графическом редакторе, например, в Microsoft Paint. Однако есть одна тонкость. Первоначально поле изображения закрашено "прозрачным" (transparent) цветом. Если значок нарисовать на этом фоне, то при его выводе части поля изображения, закрашенные "прозрачным" цветом, примут цвет фона, на котором будет находиться значок.
В процессе создания картинки можно удалить (стереть) ошибочно нарисованные элементы, закрасив их прозрачным цветом, которому на палитре соответствует левый квадрат в нижнем ряду.
Кроме "прозрачного" цвета, в палитре есть "инверсный" цвет. Нарисованные этим цветом части рисунка при выводе на экран окрашиваются инверсным цветом относительно цвета фона.
Сохраняется созданный значок обычным образом, т. е. выбором из меню Fileкоманды Save.
Перенос приложения на другой компьютер
Небольшую программу, которая использует только стандартные компоненты и представляет собой один-единственный ЕХЕ-файл, можно перенести на другой компьютер вручную, например, при помощи дискеты. Как правило, при запуске таких программ на другом компьютере проблем не возникает.
Программы, которые используют библиотеки, драйверы и другие программные компоненты, например, компоненты доступа к базам данных, перенести на другой компьютер вручную проблематично. Для таких программ лучше создать установочный диск (CD-ROM). Сделать это можно, например, при помощи пакета InstallShield Express, который входит в комплект поставки Delphi.
– Конец работы –
Используемые теги: Лекция, языка, Pascal, системе, Delphi0.078
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Лекция 1. От языка Pascal к системе Delphi
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов