Технология создания программ в среде Delphi — к..

Технология создания программ в среде Delphi

В среде Delphi работа выполняется с проектами. Проект –это набор файлов, используя которые компилятор создает файл выполняемой программы.

Turbo Delphi
После запуска командой File-New-VCL FormsApplication-DelphiFor32 появляется окно среды Turbo Delphi.
Главное Окно Окно Окно Окно Окно
Окно структуры Инспектора Конструктора кода политры
объектов объектов формы программы инструментов




13EMBED PBrush1415

Окно Окно
Наблюдений сообщений


Назначение окон
1. Главное окно содержит:
- главное меню – для ввода команд (File, Edit, Search, View, Project, Run, Component, Database, Tools, Window, Help);
- панель инструментов (под главным меню) – быстрые кнопки, дублирующие наиболее часто используемые команды главного меню.
2. Окно Конструктора формы служит для размещения на ней управляющих элементов (УЭ) и не визуальных компонентов, используемых, например, для создания меню пользователя (интерфейса).
3. Окно Редактора кода программы (первоначально закрыто окном Конструктора формы) служит для создания и редактирования текста программы модуля. Для перехода из одного окна в другое используют ярлыки Code, Design или клавишу .
4. Окно структуры (Structure) отображает структуру проекта (приложения), над которым работают в данный момент. С его помощью удобно просматривать объекты приложения.
5. Окно Инспектора объектов (Object Inspector) содержит две вкладки: Properties и Events. Вкладка Properties (свойства) служит для задания свойств объектов (формы, командной кнопки, поля редактирования и т.д.). Свойства определяет вид объекта, его положение и поведение. Например, свойство формы (Caption) определяет текст в ее заголовке, а свойство Width – eго ширину.
На вкладке Events (события) перечислены события, которые может воспринимать объект.
Каждое событие имеет имя. Например, событие OnClick – это щелчок кнопкой мыши. Событие (Event) это то, что происходит во время работы программы. Реакция на событие оформляется процедурой обработки события в виде обработчика с пустым телом, заполняемым в дальнейшем в окне кода программы.
6. Окно палитры инструментов (Tool Palette) содержит группы компонентов (Standard,
Additional, Win32 и т.д.), используемых для создания формы. Компонент является элементом
пользовательского интерфейса. Например, на вкладке Standard находятся компоненты Label (поле текста), Button (командная кнопка), Edit (поле редактирования) и др. Компоненты, обеспечивающие взаимодействие с пользователем, образуют библиотеку визуальных компонентов (Visual Components Library, VCL).
7. Окно сообщений (Messages) содержит сообщения об ошибках и указывает расположение в программе соответствующих операторов (мест), для перехода к которым следует сделать двойной щелчок на сообщении.
8. Окно наблюдения (Watch List) служит для отображения в процессе отладки текущих значений переменных или выражений. Появляется по команде Run\Add Watch.
Если какое-либо окно на экране не отображается, то чтобы увидеть его, нужно в меню View выбрать соответствующую команду.
Настройка панелей инструментов среды для редактирования и отладки
Введите команду View\Toolbars\Customize, на вкладке Commands щелкните на строке Edit и перетащите на панель инструментов значки 13EMBED PBrush1415 13EMBED PBrush1415 13EMBED PBrush1415 13EMBED PBrush1415 13EMBED PBrush1415. Затем выделите строку Run и перетащите на панель инструментов значки 13EMBED PBrush1415 13EMBED PBrush1415.
Конструирование формы
Добавить стандартный компонент на форму – щелкнуть на компоненте в окне Палитры инструментов, щелкнуть на форме в месте вставки компонента.
Удалить компонент с формы – щелкнуть на нем и нажать клавишу Delete.
Изменить значение свойства компонента – выделить компонент, щелкнуть на свойстве на вкладке свойства (Properties) в окне Инспектора объектов, ввести или выбрать нужное значение в строке этого свойства.
Добавить для компонента шаблон обработчика события (процедура с пустым телом) - выделить компонент, на вкладке Events в окне Инспектора объектов или сделать двойной щелчок на событии, или щелкнуть на событии и ввести или выбрать нужное значение в его строке. Преобразовать шаблон обработчика в заглушку, добавив комментарии (не законченный обработчик), чтобы его сохранить его при отладке.
Удалить обработчик события – удалить текст обработчика и его заголовок в описании типа класса формы, а также очистить строку соответствующего события в окне Инспектор объектов.
Выполнение и отладка программы
Запуск программы – или Run\Run, или кнопка 13EMBED PBrush1415, или F9
Выполнить до курсора – Run\Run to Cursor или F4
Выполнить строку с заходом в п\п – или Run\Trace Into, или кнопка 13EMBED PBrush1415, или F7
Выполнить строку без захода в п\п – или Run\Trace Over, или кнопка 13EMBED PBrush1415, или F8
Завершить отладку – Run\Program Reset или Ctrl+F2
Отобразить окно наблюдения - Run\Add Watch или нажать Ctrl+F5, ввести имя переменной или выражение, нажать OK. Появившееся окно Watch List можно отбуксировать к нижней части окна редактора кода и объединить с окном Messages, как показано на рисунке. Чтобы добавить в окно наблюдения новую переменную, можно установить на ней курсор в окне редактора кода, активизировать окно наблюдения, сделать на нем двойной щелчок и нажать кнопку OK.
Установить точку останова – щелкнуть в окне редактора кода на сером поле перед строкой, на которой должна быть эта точка.
Убрать точку останова – повторить действия предыдущего пункта.
Создание проекта и макета формы
Запустите Turbo Delphi, введите команду File\New\VCL Forms Application – Delphi for Win32. При этом автоматически будет создана форма с именем Form1 (или с именем Form#, где # - очередной номер формы).
Сохраните проект (в отдельной папке) командой File\Save All или щелкнуть на пиктограмме 13EMBED PBrush1415 панели инструментов. Turbo Delphi последовательно предложит сохранить в файлах в появляющемся окне Save Until As - имя программного модуля Unit1.pas , а затем в еще одном окне имя проекта Project1.dpr. Можно не менять эти имена. В дальнейшем, если Turbo Delphi открывается для загрузки программы на редактирование, выбирайте файл Project1 типа Delphi Project Type или, после открытия Turbo Delphi, используйте команду File\Open Project для этого файла. Проект это набор (совокупность) файлов, используя которые компилятор создает выполняемый файл программы (EXE.файл).
В простейшем случае в состав проекта входят:
- файл описания проекта (.bdsproj) является файлом специального формата и содержит общие сведения о проекте;
- файл главного модуля (.dpr) содержит инструкции, с которых начинается выполнение приложения (проекта);
- файл модуля формы (.pas) является текстовым файлом для хранения текста программы;
- файл описания формы (.dfm) содержит характеристики формы и ее компонентов;
- файл ресурсов (.res) содержит описания ресурсов проекта, которые являются ресурсами Windowus (пиктограммы, растровые изображения, курсоры);
- файл конфигурации (.cfg) содержит установки компилятора.
Для запуска из среды Turbo Delphi необходимо использовать файлы с расширением .dpr, .pas, .dfm. Остальные файлы сохранять не следует, так как они формируются системой на разных этапах обработки приложения.
В процессе работы не забывайте периодически сохранять файлы программы щелчком на кнопке 13EMBED PBrush1415 панели инструментов.
Зеленая линия на полях обозначает, что эти строки изменялись с момента открытия программы, но они уже сохранены.
Желтая линия выделяет строки, которые изменялись с момента открытия, но не сохранены.
Щелчком активизируйте окно формы, в диалоге (в окне диалога) Инспектора объектов (Object Inspector) на вкладке Properties щелкните на поле Caption и введите заголовок формы Задание 1.
Измените размеры формы мышкой или заданием значений в свойствах Height и Width в окне Инспектора объектов.
Разместите на форме поле ввода Edit1 и дайте ему название (например, Число А), используя компонент Label1 и его свойство Caption.
Разместите на форме поле вывода Edit2 и дайте ему название (например, Число В), используя компонент Label2.
Разместите на форме поле вывода Edit3 и дайте ему название (например, Сумма), используя компонент Label3.
Разместите на форме компонент Button1. Измените название кнопки, используя свойство Caption (например, Сложить).
Разместите на форме компонент Button2. Измените название кнопки, используя свойство Caption (например, Выход).
Запустите программу кнопкой 13EMBED PBrush1415 или Run\Run, или F9 и завершите ее, закрыв окно формы.
Программирование
Создайте обработчик события «Сложить» (Button1). В тело обработчика включить
описания переменных А, В, С типа real и записать операторы:
A:= StrToFloat (Edit1.Text);
В:= StrToFloat (Edit2.Text);
C:=A+B;
Edit3.Text:=FloatToStr(C);
Edit1.Text:=’’; Edit2.Text:=’’;
Создайте обработчик события «Выход» (Button2). В теле обработчика
записать процедуру закрытия Close.
Создайте обработчик события создания формы, который будет задавать символ 0’ в качестве значения свойства Text полей ввода, выполнив соответствующие действия:
- щелкнуть на форме и затем двойной щелчок на строке события OnCreate на вкладке Events
Инспектора объектов. В результате этого Turbo Delphi добавит в класс TForm1 заголовок
метода Procedure FormCreate (Sender: TObject ); ,
а в раздел реализации – описание этого метода с пустым телом
Procedure FormCreate (Sender: TObject );
begin
end;
В тело обработчика записать операторы: Edit1.Text:=’0’; Edit2.Text:=’0’;
Edit3.Text:=’0’;
- Управление свойствами при создании макета формы
В Инспекторе объектов на вкладке Properties
- Управление свойствами при выполнении программы
В операторе присваивания <Компонент>(< . ><Свойство>(:=<Значение>, например, Label1.Caption:=’РЕЗУЛЬТАТ СЧЁТА = ’; Edit1.Text:=FloatToStr(X);
Помощь в Delphi
Для получения сведений щелкните на поле этого события в Инспекторе объектов и нажмите клавишу F1.
Задание
Вычислить значение интеграла
b
c =
· f(x) .dx методами прямоугольника и трапеций.
a
Форма должна иметь поля ввода данных (поля Edit): нижний предел интегрирования, верхний предел интегрирования, число подинтервалов; поля вывода результатов; кнопки событий Button (метод прямоугольников, метод трапеций, выход)
Для проверки правильности задания исходных данных в полях ввода Edit1, Edit2, Edit3 использовать обработку исключений с выводом сообщений в окне MessageDLG.
try
a:=StrToFloat(Edit1.Text);
except
MessageDLG('Введите нижний предел интегрирования’
,’ например, так 2,5',mtInformation,[mbOk],0);
exit;
end;
Аналогично для верхнего предела.

try
N:=StrToInt(Edit3.Text);
except
MessageDLG('Введите число подинтервалов’
,’ например, так 10',mtInformation,[mbOk],0);
exit;
end;

Введение в визуальное программирование в DELPHI


Интегрированная среда программирования Delphi предназначена для создания 32-х разрядных приложений Windows. В среде программирования Delphi пользователю предоставляются возможности “визуального программирования интерфейса”, что позволяет прямо на экране формировать интерфейс разрабатываемого программного продукта, используя стандартные элементы пользовательского интерфейса.
Языком программирования в среде Delphi является язык Object Pascal 9.0, который является дальнейшим развитием языка Borland/Turbo Pascal.
Программирование в среде Delphi относится к категории событийного программирования, при котором программа представляет собой набор обработчиков событий. В качестве событий при этом может использоваться нажатие какой-либо “кнопки” в окне программы, а также некоторая ситуация в самой программе, например, вызов формы. Основной цикл работы программы представляет собой ожидание какого-либо события, вызов соответствующего обработчика для обработки этого события, после чего вновь следует ожидание события, и цикл повторяется.
Такая программа не имеет алгоритма в традиционном смысле, так как связь между отдельными блоками программы не задается жестко, а зависит от последовательности тех или иных событий.
Задача программиста заключается в том, чтобы определить множество событий для решаемой задачи и написать соответствующие разработчики. В свою очередь, Delphi предоставляет как стандартные обработчики событий, так и заготовки для добавляемых событий.

1. Основные понятия. Технология работы в среде Delphi базируется на идеях объектно-ориентированного и визуального программирования. Идея объектно-ориентированного программирования состоит в инкапсуляции (объединении) данных и средств их обработки (методов) в тип, который называется классом. Конкретная переменная определенного класса называется объектом. Примерами объектов могут быть элементы управления (ЭУ) в окне: кнопки, списки, текстовые поля и т.п. Среда визуального программирования Delphi – это графическая автоматизированная оболочка над объектно-ориентированной версией языка Паскаль (Object Pascal). Если в языке Паскаль структурными единицами являются данные и команды, то в Delphi такой структурной единицей является визуальный объект, который называется компонентом. Автоматизация программирования достигается благодаря возможности переносить компонент на форму (в программу) из палитры компонентов и изменять его свойства, не внося вручную изменений в программный код.
Формой называется компонент, который обладает свойствами окна Windows и предназначен для расположения на нем других компонентов. Компоненты на форме могут быть видимыми и невидимыми. Видимые компоненты служат для организации диалога с пользователем. Это различные кнопки, списки, текстовые поля, изображения и т.п. Они отображаются на экране во время выполнения программы. Невидимые компоненты предназначены, в частности, для доступа к системным ресурсам компьютера.
Проект – это совокупность файлов, из которых складывается Delphi – программа.

2. Инструменты среды Delphi. Основными инструментами являются:
главное меню;
панель инструментов;
палитра компонентов (Component Palette);
инспектор объектов (Object Inspector);
окно формы ;
редактор кода (Code Editor).

3. Главное меню и панель инструментов. Главное меню состоит из следующих элементов: File, Edit, Search, View, Project, Run, Component, Database, Tools, Help (рис.1)..
Меню File содержит стандартные команды для работы с файлами проекта. С помощью этих команд можно создать новый проект (New Application), новую форму или новый модуль(New Form и New Unit), открыть или закрыть файл проекта(Open и Close), закрыть все открытые файлы (Close All),сохранить файл, проект или все сразу(Save, Save As, Save Project As, Save All).
С помощью команд меню Edit можно выравнивать компоненты относительно сетки и между собой (Align to Grid, Align), задавать порядок отображения компонентов, которые перекрываются (Bring to Front, Send to Back), изменять размер избранного компонента (Size), масштабировать визуальные компоненты (Scale) и т.п.
Меню Search содержит стандартные команды поиска и замены фрагмента текста (Find, Replace, Search Again, Incremental Search), и др. В меню View находятся команды визуализации элементов среды. Меню Project содержит команды компиляции (Compile, Build All) и проверки синтаксиса программы (Syntax Check). Меню Run содержит команды отладки и запуска программы. Меню Component используется для создания и инсталляции новых компонентов. Меню Database содержит команды вызова инструментов базы данных. В меню Tools находятся команды для настройки параметров среды.
Панель инструментов служит для дублирования команд меню с помощью кнопок.

4. Палитра компонентов. Палитра компонентов распологается в главном окне и имеет вид многостраничного блокнота. Каждая страница имеет свой набор компонентов. Чтобы поместить компонент в центре окна формы, нужно дважды щелкнуть на его пиктограмме. Если надо разместить компонент в любом месте на форме, нужно щелкнуть один раз на его пиктограмме и один раз в нужном месте формы. Для того, чтобы вставить один и тот же компонент несколько раз, нужно нажать клавишу Shift и щелкнуть на его пиктограмме, затем можно щелкать в окне формы. Того же результата можно добится, если нажать на кнопку палитры компонентов с изображением стрелки. Выбранный компонент можно перемещать на форме, а также изменять его размеры, перетягивая маркеры.

5. Инспектор объектов.С помощью инспектора объектов можно задавать начальные значения свойств объекта и реакцию на стандартные события. Окно инспектора объектов содержит список компонентов текущей формы, а также две закладки: свойства (Properties) и события (Events).Чтобы активизировать окно инспектора объектов, следует нажать клавишу F11.
Закладка свойств состоит из двух столбцов: левый содержит названия свойств компонентов, а правый – их значения. Свойства могут быть простыми или комплексными (составными). Комплексные свойства состоят из набора других свойств. Такие свойства в инспекторе объектов обозначены символом «+», например, +Font.
Закладка событий также имеет два столбца. В левом отображаются имена стандартных событий, на которые объект может реагировать, а в правом – имена методов (процедур), реализующих реакцию на событие. Каждому стандартному событию отвечает название метода, которое появляется после двойного щелкания мыши в правом столбце. В этот момент в окно текста программы добавляется шаблон базового кода (процедуры) для соответствующего метода, который необходимо заполнить соответствующими командами.
Для ввода значений свойств числового или текстового типов (Width, Name и т.п.) используется стандартное поле ввода. Значение свойств перечислимого типа (Align, Cursor и т.п.) описывается комбинированным списком, из которого следует выбрать необходимое. Некоторые комплексные свойства (Font, Picture, Gluph и т. п.) используют диалоговые окна, набор управляющих элементов которых зависит от конкретного свойства.

6.Окно формы. Форма – это окно Windows, которое создается в одном из возможных для окон стилей. Все внутреннее пространство формы называется рабочей областью. На рабочую область нанесена сетка выравнивания для удобного расположения на ней компонентов. Для выполнения групповых операций несколько компонентов можно объединять. Для этого необходимо нажать на левую клавишу мыши и перемещением указателя охватить на экране все нужные компоненты. В группу приобщаются компоненты, которые хотя бы частично попадают в охваченную область. Можно также приобщить/изъять отдельный элемент. Для этого необходимо нажать клавишу Shift и, не отпуская ее, щелкнуть мышью на нужном компоненте на форме. Удаление выделенных компонентов или группы выполняется клавишей Delete. Перемещение выделенного компонента в границах формы осуществляется мышью. Над компонентами и их группами можно выполнять операции вырезания, копирование в буфер обмена и вставки из буфера.
Выравнивать компоненты можно как относительно окна формы, так и относительно друг друга. Для этого используется команда Edit -> Align главного меню или палитра выравнивания (команда – View -> Alignment Palette главного меню). Тот же результат можно получить, если непосредственно задать значения свойствам Left и Top компонентов в инспекторе объектов. Компоненты в группе выравниваются относительно компонента, попавшего в группу первым.

7. Структура проекта. Проектом называется совокупность файлов, из которых Delphi создает готовую для выполнения программу. В состав каждого проекта обязательно входят следующие файлы:
- файл проекта *.dpr. Это небольшой файл с программным кодом на языке Object Pascal, сформированный самой средой Delphi, в котором записаны ссылки на все файлы проекта. Именно этот файл запускает программу;
- файлы описания всех форм, которые входят в проект: файл модуля *.pas и файл формы *.dfm. Каждой форме проекта соответствует свой модуль;
- файл ресурсов программы *.res. В нем описаны ресурсы, не входящие в форму, например, пиктограмма программы;
- файл параметров проекта *.dof;
- файлы параметров среды *.drf, *.dsk, *.dsm. Эти файлы создаются лишь после компиляции проекта.
Кроме указанных компонент программа может использовать динамические библиотеки DLL , файлы которых имеют расширение .dll.
При создании программы используется также библиотека стандартных компонент DCL (файлы которых имеют расширение .dcl),содержащая особым образом подготовленные классы.
Для сохранения Delphi-проекта необходимо задать имена модулей (автоматически предлагаются имена Units1.pas, Unit2.pas, ..) и имя проектa (Project1.dpr). Эти имена можно заменить на собственные.
После успешной компиляции программы создается исполняемый файл с именем, совпадающим с именем проекта, и расширением .exe, и файлы скомпилированных модулей с расширением .dcu.
Для перемещения Delphi-проекта на другой компьютер необходимо с собой брать файлы следующих типов: *.dpr,*.dfm, *.pas, *.res. Другие файлы создаются автоматически.

8.Редактор кода. Редактор кода находится в отдельном окне. Это окно организовано как многостраничный блокнот открытых на данное время файлов. В момент открытия нового проекта в модуль Unit1.pas, который соответствует форме Form1, редактор автоматически заносит программный код описания этой формы. Во время добавления новых компонентов в окно формы в программу автоматически заносятся коды с описаниями параметров этих компонентов (высота, ширина, расположение, стиль и т.п.). Добавление определенного объекта или применение к нему метода ведет к появлению заготовки базового кода соответствующей процедуры в окне редактора. Заготовка (шаблон) состоит из заголовка процедуры и ключевых слов begin и end. Заготовку заполняет пользователь. Заканчивается модуль собственной командой end.
Модуль Unit1 имеет следующий общий вид:
unit Unit1; {Название модуля}
interface {Раздел деклараций процедур и функций}
uses {Список использованных модулей, например}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type {Описание классов и типов объектов , например }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender:TObject);
.
private {Частные объявления}
public {Общедоступные объявления}
end;
var {Описание переменных}
Form1: TForm1;
{Опережающее объявление процедур и функций пользователя, например}
procedure Information;
procedure SetPicture;
{Раздел описаний процедур и функций}
implementation
{$R*.DFM} {Добавляется файл с описанием формы}
procedure Tform1.Button1Click(Sender: TObject);
begin
{Здесь пользователь записывает тело процедуры}
end;
end. {Конец модуля}



















Назначение окон

Главное окно – для ввода команд с помощью меню и панелей инструментов.
Конструктор формы – для создания образа формы с размещенными на ней управляющими элементами (УЭ), а также размещение невизуальных компонентов, используемых, например, для разработки главного или всплывающих меню. Для помещения на форму нового компонента следует щелкнуть на соответствующем значке панели инструментов Палитра компонентов (Component Palette, см. рисунок, вкладки Standard, Additional, Win32,). Для работы с компонентом в Инспекторе объектов его следует выделить щелчком.
Редактор кода – для редактирования текста программы.
Проводник кода – для быстрого (по двойному щелчку) перехода в тексте программы к ссылке на модуль, к описанию переменной, константы, поля в классе формы или к началу тела подпрограммы метода - обработчика события .
Инспектор объектов – для задания на вкладке Properties свойств выделенного объекта и создание (двойным щелчком) на вкладкеEvents для событий объекта новых методов (обработчиков с пустым телом, заполняемым в дальнейшем в Редакторе кода) или назначение (выбором из раскрывающегося списка) событиям объекта уже имеющихся обработчиков.
Обозреватель дерева объектов – для выделения объекта, с которым предстоит работать в Инспекторе объектов.
Окно сообщений об ошибках, вкладка Messages – для вывода сообщений об ошибках и расположении в программе соответствующих операторов (мест), для перехода к которым следует сделать двойной щелчок на сообщении.
Окно наблюдения, вкладка Watch List – для отображения в процессе отладки текущих значений переменных или выражений. Появляется по команде Run\Add Watch. Объединяется с Окном сообщений перетаскиванием на последнее.

Конструирование формы

Добавить стандартный УЭ на форму – щелкнуть на УЭ на вкладке Stadard, щелкнуть на форме в месте вставки УЭ.
Удалить УЭ с формы – щелкнуть на нем и нажать клавишу Delete.
Изменить значение свойства УЭ-та – выделить УЭ, щелкнуть на свойстве на вкладке Properties в окне Инспектор объектов, ввести или выбрать нужное значение в строке этого свойства.
Добавить для УЭ-та обработчик события - выделить УЭ, на вкладке Events в окне Инспектор объектов или сделать двойной щелчок на событии, или щелкнуть на событии и ввести или выбрать нужное значение в его строке.
Удалить обработчик события – удалить текст обработчика и его заголовок в описании типа класса формы, а также очистить строку соответствующего события в окне



Визуальные компоненты страниц:
Standard(стандартная), Additional(дополнительная) и Win32( 32-разрядный интерфейсWindows)

Компоненты страницы
Standard
Компоненты страницы
Additional
Свойства Win32












Frames – фреймы
Bitbtn - кнопка с рисунком
Tabcontrol – закладка

MainMenu- главное меню
SpeedButton – кнопка
быстрого доступа
PageControl – Блокнот

PopupMenu – всплывающее меню
MaskEdit – однострочный
Редактор ввода по шаблону
ImageList – список
Графических образов

Label - надпись
StringGrid – таблица строк
RichEdit - полнофукциональный строчный редактор

Edit - однострочный редактор
DrawGrid – таблица
TrackBar – ползунок

Memo - многострочный
редактор
Image – графический образ
ProgressBar – индикатор хода работ

Button - стандартная кнопка

Shape – геометрическая
фигура
UpDown – счетчик

CheckBox - независимый
переключатель
Bevel – фаска
HotKey – редактор комбинаций горячих клавиш

RadioButton - зависимый
переключатель
ScrollBox –область прокрутки
Animate – просмотр видеоклипов

ListBox - список
CheckListBox – список независимых переключателей
DateTimePicker – строка ввода даты или времени

ComboBox - поле со списком
Splitter – разделитель
MonthCalendar –календарь

ScrollBar - полоса прокрутки

StaticText – статический текст
TreeView – дерево объектов

GroupBox - группа
ControlBar – контейнер для панели инструментов
ListView – список

RadioGroup - группа зависимых переключателей
ApplicationEvents – события приложения
HeaderControl – разделитель


Panel - панель
ValueListEdit -редактор списка
Значений
StatusBar – строка состояния

ActionList - список действий
LabeledEdit – однострочный редактор с надписью
ToolBar – панель инструментов


ColorBox – комбинированный
Список выбора цвета
CoolBar – крутая панель инструментов


Chart – диаграмма
PageScroller – прокрутка изображений


ActionManager – менеджер
Действий
ComboBoxEx – расширенный
комбинированный список


ActionMineMenuBar – главное
меню действий



ActionToolBar – панель действий



CustomizeDlg – диалог настройки





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

Форма (класс TForm).
Форма представляет собой окно программы-приложения.
Свойства :
Caption – заголовок формы –содержит в окне компонента текст.
Name – имя формы – идентификатор, например: Form1.
Color – цвет фона формы, например: clGreen, clInfoBk (элемент перечислимого типа ) или – числовое значение, которое задается в диалоговом окне -$004525B1.
Width, Height – ширина и высота окна в пикселях, числовые значения: 503, 224.
Left, Top – координаты левого верхнего угла окна в пикселях, числовые значения: 200, 108.
Position – размещение и размеры окна в момент запуска программы, например: poScreenCenter, poDesigned.
Font – определяет шрифт текста (выбирается в специальном окне).
Cursor – вид курсора на свободном месте в окне на этапе выполнения:
crDrag -
crCross – курсор в виде перекрестья
crHelp-
crArrow -

WindowState – состояние окна в момент запуска программы:
wsNormal – обычное состояние (по умолчанию);
wsMinimized-минимальное;
wsMaximized –максимальное.
Enabled – доступный
Icon –
BorderStyle –
AutoScroll –
HorizScrollBar, VertScrollBar – аертикальная и горизонтальная прокрутка текста
ActiveControl -

2. Метка (класс TLabel).
Метка представляет собой окно с текстом и может использоваться для формирования на форме некоторых надписей или подписей.
Свойства :
Caption - заголовок - содержит выводимый в окне компонента текст.
Align - определяет способ выравнивания самого компонента:
alNone - как определено разработчиком;
alTop - занимает всю верхнюю часть окна, в котором размещается;
alBottom - занимает всю нижнюю часть окна, в котором размещается;
alLeft - занимает всю левую часть окна, в котором размещается;
alRight - занимает всю правую часть окна, в котором размещается.
Alignment - определяет способ выравнивания текста в окне компонента:
taCenter - по центру;
taLeftJustify - по левой границе;
taRightJustify - по правой границе.
Autosize - определяет, будет ли определяться размер окна компонента размером введенного текста с учетом шрифта (да, если true).
Font - определяет шрифт текста (выбирается в специальном окне).
Color - определяет цвета текста и фона в окне.
WordWrap - определяет, разбивать или нет текст на строки (да, если true).
Transparant - определяет, виден ли рисунок фона через окно (да, если true).
Строчный редактор (класс TEdit).
Компонент представляет собой окно, обычно выделенное цветом, которое может использоваться, например, для организации ввода информации.
Свойства :
Text - строка, которая содержит введенную и отображаемую в окне компонента информацию. Доступ к информации в строке осуществляется как к полю записи, например: Edit1.Text .
MaxLength - максимальная длина вводимой строки (если равна 0, то длина не ограничена).
ReadOnly - определяет возможность ввода информации в окно компонента (если true, то ввод невозможен).
PasswordChar - код символа, который заменяет вводимые символы, например, при вводе пароля (#0 - означает, что отображаются вводимые символы).
AutoSelect - определяет возможность выделения всего текста, отображенного в окне при фокусировке на данном компоненте при вызове формы (может использоваться, например, если при вводе информации автоматически предлагается какой-либо вариант).
Методы:
Clear - очистка поля Text.
GetTextLen - определить длину строки в поле Text.
GetTextBuf - поместить строку в буфер, изменив тип строки (из строки Паскаля сделать строку С).
SetTextBuf - поместить строку из буфера в Text, преобразовав строку из строки С в строку Паскаля.
Например:
procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: PChar; { тип - указатель на символ}
Size: Byte;
begin
Size := Edit1.GetTextLen; {получить длину текста}
Inc(Size); {добавить 1 для размещения 0-символа}
GetMem(Buffer, Size); {запросить память под буфер}
Edit1.GetTextBuf(Buffer,Size); {поместить текст в буфер}
Edit2.Text := StrPas(Buffer); {записать текст из буфера в Memo2}
FreeMem(Buffer, Size); {освободить память}
end;
Дополнительно используется несколько параметров и методов, позволяющих работать с выделенной в окне компонента информацией в процессе работы приложения:
Свойства :
SelText - содержит выделенный в окне компонента текст.
SelStart - содержит номер позиции первого выделенного символа.
SelLength - содержит длину выделенного фрагмента.
Методы:
SelectAll - выделить все.
ClearSelection - снять выделение.
CutToClipboard - вырезать выделенную информацию и поместить в буфер.
CopyToClipboard - копировать выделенную информацию и поместить в буфер.
PasteFromClipboard - вставить из буфера.
Текстовый редактор (класс TMemo
·).
Компонент представляет собой многострочный текстовый редактор и используется обычно для ввода или отображения текстов.
Свойства :
Text - содержит текст, как единое целое.
Lines - позволяет работать с отдельными строками текста (массив строк типа TStrings). В данном случае применимы методы, работающие со строками Add, Delete, Insert, например: Memo1.Lines.Add('Another line is added');
А также методы LoadFromFile и SaveToFile, например:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('C:\AUTOEXEC.BAT');
Writeln('The 6th line of AUTOEXEC.BAT is: ', Memo1.Lines[5]);
end;
ReadOnly - определяет возможность ввода информации в окно компонента (если true, то ввод невозможен).
MaxLength - определяет максимальную длину текста (если 0, то длина не ограничена).
ScrollBars - определяет наличие или отсутствие полос прокрутки:
ssNone - полосы прокрутки отсутствуют;
ssBoth - обе полосы (горизонтальная и вертикальная);
ssHorizontal - горизонтальная полоса;
ssVertical- вертикальная полоса.
AutoSize - определяет, зависит ли размер окна компонента от параметров текста ( да, если true).
WordWrap - определяет, выполняется ли автоматическое разбиение строк при выводе в окне компонента (да, если true).
WordTabs - определяет, будут ли учитываться символы табуляции при отображении текста (да, если true).
Этот компонент наследует все методы, а также свойства и методы, работающие с выделением, описанные для класса TEdit.
Кнопка (класс TButton).
Компонент представляет собой прямоугольник, на котором размещается название кнопки. Используется для инициирования каких-либо действий.
Свойства:
Caption - название кнопки.
Default - определяет, генерируется ли событие OnClick для данной кнопки при нажатии клавиши Enter , т.е. можно ли пользоваться для «нажатия» кнопки клавиатурой ( да, если true). Используется для указания действий, осуществляемых при нажатии клавиши Enter.
Cancel - аналогично, но для клавиши Esc.
ModalResult - в процессе выполнения в это поле можно занести код возврата, который затем можно проанализировать для определения дальнейших действий.
Кнопка выбора опции (класс TCheckBox).
Компонент представляет собой квадратик, внутри которого стоит или не стоит галочка, используется для обозначения выбора или отмены опций.
Свойства:
Caption - название кнопки (заголовок располагается правее кнопки).
Checked - определяет включенное (true) и выключенное (false) состояние кнопки.
Alignment - определяет выравнивание заголовка:
taLegtJustify - выравнивание по левой границе окна компонента;
taRightJustify - выравнивание по правой границе.
AllowGrayed - определяет количество состояний кнопки (true - 3 состояния, включая неопределенное - серая галочка, а false -2 состояния).
State - определяет состояния кнопки:
cbGrayed - неопределенное состояние;
cbChecked - включено;
cbUnchecked - выключено.
Радиокнопка (класс TRadioBotton).
Компонент представляет собой кружок, внутри которого стоит или не стоит точка. Используется также как и предыдущий для обозначения выбора или отмены опций, но принято использовать эти кнопки, для взаимоисключающих вариантов.
Все свойства аналогичны кнопке выбора опции.
Список (класс TListBox).
Компонент представляет собой окно, в котором могут отображаться некоторые элементы, которые можно выбирать. Используется для отображения вариантов.
Свойства:
Items - массив строк типа TStrings, выводимых в окно. Для работы с объектами Tstrings используются методы:
Add - добавить строку к массиву: ListBox1.Items.Add(Новая строка’);
Delete - удалить строку из массива;
Insert - вставить строку в массив;
Sorted - если указано true, то строки в окне сортируются;
ItemIndex - номер выбранной строки (строка выделяется);
MultSelect - если указано true, то можно выбирать больше, чем одну строку;
ExtendSelect - если указано true, то нужно использовать для выбора нескольких строк клавиши Shift или Ctrl;
SelCount - количество выбранных строк;
Selected - позволяет определить, выбрана ли конкретная строка:
Пример:
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
ListBox1.Items.Add('Blue');
ListBox1.Items.Add('Yellow');
ListBox1.Items.Add('Red');
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if ListBox1.Selected[0] then ListBox1.Color := clBlue;
if ListBox1.Selected[1] then ListBox1.Color := clYellow;
if ListBox1.Selected[2] then ListBox1.Color := clRed;
end;
Раскрывающийся список (класс TComboBox).
Компонент представляет собой строку, справа от которой находится кнопка со стрелкой вниз - «выпадающий» список.
Свойства:
Items, ItemIndex, Sorted - аналогичны ListBox.
Text - содержит выбранную строку и высвечивается в исходном виде.
Панель кнопок выбора (класс TGroupBox).
Компонент представляет собой панель для размещения кнопок.
Свойства:
Caption - заголовок панели.
Группа радиокнопок (класс TRadioGroup).
Компонент представляет собой группу «радиокнопок».
Свойства:
Items - названия кнопок.
ItemIndex - номер выбранной кнопки.
Columns - определяет размещение кнопок в один или два столбца.
Панель (класс TPanel).
Компонент представляет собой панель для размещения инструментов.


Обработка клавиш, виртуальные ключи

События, возникающие от клавиатуры


Событие
Описание



,


OnКeyDown
. Нажатие клавиши
.

OnКeyPress
Обработчик нажатия клавиш ASCII-символов

OnКeyUp
Отпускание клавиши



Необходимо отметить тот факт, что компонент обрабатывает события от клавиатуры только в том случае, если он активен, т.е. имеет фокус. Если активных элементов нет, то события от клавиатуры будет получать форма.
При возникновении событий от клавиатуры вызываются соответствующие процедуры их обработки. OnKeyPress - обычно используется в том случае, когда необходима реакция на нажатие одной клавиши на клавиатуре. Оно не возникает при нажатии таких клавиш, как Shift или F4. События OnКeyDown и OnKeyUp чаще всего используются для определения нажатия комбинации клавиш.
Пусть из предыдущего приложения необходимо выходить по нажатию клавиши
F10; в заголовке формы видеть, какая была нажата клавиша ASCII, а на метке –
код отпущенной клавиши. Для того, чтобы события клавиатуры получала форма,
нужно установить ее свойство KeyРreview = Тrue. А чтобы форма обрабаты-
вала события, как указано выше, требуются следующие обработчики событий.
procedure TForm1.FormКeyPress(Sender: TObject; var Кеу: Char);
begin

Form1.Caption:= Kеу + ' была нажата';

end;__

procedure TForm1. FormKeyDown (Sender: TObject; var Кеу: Word; Shift:

TShiftState);

Begin

if Kеу = VК_Fl0 then__

Form1.Close;

end;


procedure TForm1.FormKeyUp(Sender: TObject; var Кеу: Word; Shift: TShiftState);

begin

Label1. Caption: = 'код нажатой клавиши: ' + IntToStr(Кey) ;

end;







Ввод данных

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

Ввод из окна ввода

Ввод данных из окна ввода осуществляется обращением к стандартной функции InputBox. Функция InputBox объявлена в модуле Dialogs в следующем виде:

Function InputBox( const ACaption, APromt, ADefault:string):string;

Где ACaption- текст заголовка окна; APromt-текст поясняющего значения; ADefault- текст, находящийся в поле ввода в момент появления окна ввода на экране.
В общем виде ввод данных с использованием функции InputBox выглядит так:
<Переменная >:= InputBox( Заголовок, Подсказка, Значение );
Здесь Переменная - идентификатор переменной строкового типа, значение которой
должно быть получено из окна ввода.
Например, в приложении вычисления площади круга, ввод радиуса круга может выглядеть так:
StrR := InputBox(Площадь круга’,’ Введите радиус круга целым
числом ’,’ ’) ;
На экран выводится диалоговое окно ввода, в поле ввода вводится число, выполняется щелчок на кнопке ОК и переменная StrR получит значение из поля ввода строкового вида.
Так как радиус круга должен быть числом, то следует веденное строковое значение
преобразовать при помощи соответствующих функций преобразования.
Код программы в данном случае будет выглядеть так:

StrR := InputBox(Площадь круга’,’ Введите радиус круга целым
числом ’, ’ ’) ;
R:=StrToInt(StrR);

Ввод из поля редактирования.

Для ввода данных из поля редактирования следует на форму переместить экземпляр компонента Edit.Осуществляя обращение к его свойству Text,т.е.Edit.Text.Свойство
Text представляет строку. Поэтому, если программе требуется получить иные значения,
то введенная строка подлежит преобразованию с помощью соответствующих функций.
Фрагмент кода программы может быть таким:
Str:=Edit1.text; // Это строка
NInt:=StrToInt( Edit2.Text); //целое число
NFloat:=StrToFloat( Edit2.Text); // вещественное число
Вывод данных.

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

Вывод в окно сообщения.

Вывод в окно сообщений может быть выполнен вызовом процедур ShowMessage, ShowMessageFmt или обращением к функциям MessageDlg, MessageDlgPos, CreateMessageDialog и TApplication.MessageBox.


Процедура ShowMessage

Она отображает окно сообщения с кнопкой Ок и имеет вид:
Procedure ShowMessage(const Msg:string);
Параметр Msg –текст сообщения. Заголовок окна совпадает с именем выполняемого файла приложения. В общем виде вызов процедуры ShowMessage выглядет так
ShowMessage( сообщение);
Например, ShowMessage (Площадь круга=’+ Skr );

Процедура ShowMessageFmt.

Она выводит форматированное сообщение в окно сообщения с кнопкой Ок.
Процедура имеет вид:

Procedure ShowMessageFmt(const Msg:string; Params:array of const);

Параметр Msg- задает строку формата, а параметр Params- задает массив параметров, форматируемых строкой Msg
В общем виде вызов процедуры ShowMessageеFmt() выглядет так

ShowMessageFmt(форматированное сообщение ’,[список параметров]);

Например, ShowMessageFmt (Задано %d параметров из % d ’,[p1,p2]);
Процедура выдаст при р1=6, р2=8 сообщение с текстом:
< задано 6 параметров из 8 >

Функция MessageDlg
MessageDlg отображает на экране окно, в котором пользователю задается вопрос и анализируется полученный ответ.
Функция MessageDlg объявлена следующим образом:
Function MessageDlg( const Msg:string; AType: TMsgDlgType;
AButtons:TMsGDlGButtons; HelpCtx:Longint):word;
Здесь параметры определяют следующие функции:
Msg - текст сообщения;
AType – вид отображаемого окна; возможные значения параметра AType:
mtConfirmation –окно подтверждения, с зеленым вопросительным знаком в круге ;
mtInformatin – инфомационное окно, с голубым символом < I > в круге;
mtError – Окно ошибок, содержащее красный стоп – сигнал в круге ;
mtWarning – Окно замечаний с желтым восклицатФельным знаком в круге ;
Перечисленные значения параметра AType являются заголовком окна
mtCustom – Заказное окно без рисунка. Заголовок окна соответствует имени проекта;
AButtons – опре деляет вид кнопок в окне; Возможные значения кнопок:
mbYes – Кнопка с надписью « Yes »
mb No – Кнопка с надписью « No»
mbOk – Кнопка с надписью «Ok»
mbCancel – Кнопка с надписью «Help»
mbAbort – Кнопка с надписью «Abort»
mbRetry – Кнопка с надписью «Retry»
mbIgnore – Кнопка с надписью «Ignore»
mbAll - Кнопка с надписью « All»
Список необходимых кнопок заключается в квадратные скобки[ ], поскольку параметр
AButton является множественным типом.
Кроме рассмотренных значений можно использовать и костанты, соответствующие часто mbYesNoCancel – Включение в окно кнопки Yes, No и Cancel
mbOkCancel - Включение в окно кнопки OK и Cancel
mbAbortRetryIgnore - Включение в окно кнопки Abort, Retry и Ignore
Эти константы не заключаются в квадратные скобки [].
HelpCtx – определяет экран контекстной справки по нажатие пользователем клавиши F1,
Если справка не предусматривается, то параметру следует задать нулевое значение.
Функция MessageDlg возвращает значение, соответствующее выбранной пользователем
кнопке mrNone, mrAbort, mrYes,mrOk, mrRetry, mrNo,mrCancel, mrIgnore,mrAll.
В общем виде обращение к функции MessageDlg выглядет так:
< Переменная>:= MessageDlg( Сообщение, Вид _окна, Кнопка,0);
Примеры работы функции в различных ситуациях.
При завершении работы приложения
If MessageDlg(Закончить работу приложения ’ , mtConfirmation, [mbYes,mbNo],0) = mrYes then
Begin
MessageDlg(Работа приложения успешно завершена ’, mtInformation, [mbOk],0)
Close
End;

При возникновении исключения
On Exception do
Begin
MessageDlg(Произошла ошибка ’ , mtError, [mbOk],0);
MessageDlg(Думайте ’ , mtWarning, [mbOk],0)
End;

Функция MessageDlgPos
Она аналогична MessageDlg и ее отличие в том, что отображает окно в заданном месте экрана. Описание функции имеет вид:
Function MessageDlg( const Msg:string; AType: TMsgDlgType;
AButtons:TMsGDlGButtons; HelpCtx:Longint;
X,Y: Integer):word;
В функции введены параметры X,Y- координата окна
Пример
MessageDlgPos(Смотрите и думайте ’ , mtWarning, [mbOk],0,0,150,0);

Функция CreateMessageDialog
Применяется Редко.


Функция TApplication.MessageBox

Метод MessageBox переменной Application создает окно полностью русифицированное.
Метод объявлен следующим образом:

Function MessageBox(Text, Caption: Pchar; Flag: longint):integer;

Он отображает окно с заданными кнопками, сообщением, заголовком и позволяет анализировать ответ пользователя.
Параметры Text и Caption это текстовые сообщения могут превышать 255 символов.
Параметр Flag представляет собой множество флагов, определяющих вид и поведение
диалогового окна. Этот параметр может комбинироваться операцией сложения по одному
флагу из следующих групп.

Флаги кнопок, отображаемых в диалоговом окне.

ФЛАГ
Значение(в скобках даны надписи в русифицированных версиях Windows )

MB_ABORTRETRYIGNORE
Кнопки Abort (Стоп ),Retry ( Повтор), Ignore ( Пропустить)

MB_OK
Кнопки Ok. Этот флаг принят по умолчанию

MB_OKCANCEL
Кнопки Ok и Cancel ( Отмена)

MB_RETRYCANCEL
Кнопки Retry (Повтор) и Cancel (Отмена)


MB_YESNO
Кнопки Yes( Да) и No(Нет)

MB_YESNOCANSEL
Кнопки Yes( Да) и No(Нет) и Cancel (Отмена)


Флаги пиктограмм в диалоговом окне.

Флаг
Пиктограмма

MB_ICONEXCLAMATION,
MB_ICONWARNING
Восклицательный знак (замечание, предупреждение)

MB_ICONINFORMATION,
MB_ICONASTERISK
Буква в круге (подтверждение)

MB_ICONQUESTION
Знак вопроса (ожидание ответа)

MB_ICONSTOP, MB_ICONERROR
Знак креста на красном

MB_ICONHAND
Круге (запрет, ошибка)



Флаги, указывающие кнопку, по умолчанию.

Флаг
Кнопка

MB_DEFBUTTON1
Первая кнопка. Принято по умолчанию

MB_DEFBUTTON2
Вторая кнопка

MB_DEFBUTTON3
Третья кнопка

MB_DEFBUTTON4
Четвертая кнопка



Дополнительные флаги.

Флаг
Пояснение

MB_HELP
Добавляет в окно кнопку Help ( Справка), щелчок на которой или нажатие клавиши F1 генерирует событие Help.

MB_TORMOST
Помещает окно всегда сверху (в стиле WS_EXTOPMOST)


Флаги модальности.
.
Флаг
Пояснение

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

MB_SYSTEMMODAL
То же самое, что MB_APPLMODAL, но окно диалога отображается в стиле
WS_EX_TOPMOST, то есть всегда остается поверх других окон. Используется для предупреждения о серьезных ошибках, требующих немедленноговмешательства.



Возвращаемые значения функции следующие:

Значение
Числовое значение
Пояснение

IDABORT
3
Выбрана кнопка Abort(Стоп)

IDCANCEL
2
Выбрана кнопка Cancel(Отмена) или нажата клавиша Esc

IDIGNORE
5
Выбрана кнопка Ignore(Пропустить)

IDNO
7
Выбрана кнопка No(Нет)

IDOK
1
Выбрана кнопка Ok

IDRETRY
4
Выбрана кнопка Retry(Повтор)

IDYES
6
Выбрана кнопка Yes(Да)






Вывод данных в поле диалогового окна.
Для вывода данных в поле диалогового окна надо на форму(при работе программы форма является диалоговым окном) поместить любой экземпляр компонента имеющего свойство Сaption. Это свойство является переменной строкового типа. Вывод данных в экземпляр компонента производится обращением к свойству Caption , например, так label1.Caption:=’ Значение функции равно ’+ IntToStr(y);


Преобразование данных с форматированием

Для форматного преобразования вещественных чисел предназначены функции
Format, FloatTostrF и FormatFloat

Функция Format

Функция Format, объявлена следующим образом:
Function Format( const sFormat: String; const Args: array of const): String;

Она возвращает отформатированную строку, представляющую собой результат применения строки описания формата sFormat к открытому массиву аргументов
Args. Строка описания формата содержит два типа объектов: обычные символы,
которые непосредственно копируются в форматированную строку, и спецификаторы
формата, которые определяют формат записи в результирующую строку списка аргументов. В общем виде обращение к функции выглядит так:
Str := Format( Строка форматирования, [список числовых значений]);

Спецификаторы формата
имеют вид:

% [<индекс >: ] [ - ] [< ширина> ] [.<точность> ] <тип>

Спецификатор формата начинается с символа «%» за которым следует без пробелов

ряд необязательных [ ] полей:


[<ин декс >: ] – определяет индекс(номер) аргумента в заданном списке, к которому относится данный спецификатор формата
[ - ] – индикатор выравнивания влево
[< ширина> ] – устанавливает ширину поля
-[.<точность> ] – спецификатор точности.
И далее размещается обязательное поле <тип>
Имеется несколько спецификаторов типа, которые могут записываться как прописными так строчными буквами:
D – Десятичное число. Значение преобразуется в строку десятичных цифр.
E – Научный формат значения с плавающей запятой.
F – Формат с фиксированной точкой значения с плавающей запятой.
G – Обобщенный формат чисел с плавающей запятой. Значение преобразуется ф\в формат научный или с фиксированной точкой, в зависимости от того, который из них дает
более короткую запись.
N – Формат , подобный формату F, но отличающийся наличием в результирующей строке разделителей тысяч.
M – Монетарный формат чисел с плавающей запятой. Значение преобразуется в строку, представляющую собой денежную сумму.
P – Формат отображения указателей. Значение преобразуется в строку вида
«XXXX:YYYY» , где XXXX и YYYY- сегмент и смещение указателя.
S – Формат строки для аргументов вида символ, строка или строка типа PChar. Строка или символ просто вставляются в результирующую строку.
X- Шестнадцатеричный формат целых чисел. Значение аргумента преобразуется в строку шестнадцатеричных цифр.

Примеры форматирования

Формат
Результат

Format ( Задано %d и %d’, [5,2] )
Задано 5 и 2

Format ( %d = %0 :x’, [30] )
30=1E

Format( %e %0:f %0:n %0:g’, [1000,1] )
1,000000000000000E+004 10000,00
10 000,00 10000

Format ( %E %0:F %0:G’, [0.0001] )
1,00000000000000e-004 0,00 0.0001

Format ( %m’, [10000.] )
10 000р






Функция FloatToStrF

Функция Function FloatToStrF( Value: Extended; Format: TfloatFormat;
Precision, digits: integer): String;
Преобразует вещественное значение Value в строку символов с учетом формата Format параметров Precision-точность и Digit – количество цифр. Она позволяет получить изображение числа в различных форматах. В общем виде обращение к функции выглядит так : Str := FloatToStrF( Значение, Формат, Точность, Количество цифр)

Где S – строковое представления числа Значение.
Значение – число, изображение которого надо получить.
Формат – именованная константа, определяющая вид строки Str
Точность – определяет точность представления преобразуемого числа.
Количество цифр – зависит от используемого формата.
Именованные константы:
fxfGeneral – Универсальный формат, использующий наиболее удобную для чтения форму представления вещественного числа.
ffExponent – Научный формат
ffFixed – Формат с десятичной тоой.
ffNumber – Числовой формат
ffCurrency – Денежный формат.

Функция FormatFloat

Функция Function FormatFloat(Format : string; Value: extended ): String;
Преобразует вещественное значение Value в строку символов с учетом спецификатора формата Format. Параметр Format в функции FormatFloat может содержать следующие спецификации форматирования вещественных чисел, указанные в таблице
Спецификатор
Значение

0
Определяет поле для цифры.Если форматированное значение не имеет значащей цифрыб выводится0

#
То же, но если форматированное значение не имеет значащей цифры ничего не выводится

.
Поле для разделителя целой и дробной частей числа

,
Поле для разделителя тысяч

;
Разделитель спецификаторов формата для положительного,отрицательного и нулвого числа

E+,e+,E-,e-
Признак представления числа в научном формате











ОБРАБОТКА ИСКЛЮЧЕНИЙ


Конструирование проектов программ постоянно за собой влечет появление ошибок. Для обнаружения и обработки возникающих ошибок в программе Delpfi программисту возбуждает большое количество исключений. Но для предупреждения появления ошибок и лучшего понимания механизма обработки исключений программисту следует знать их конструкцию, чтобы точно выявить место и тип происшедшей ошибки.
Исключения (Exceptions) – это уведомление об ошибке времени выполнения или о других исключительных ситуациях из того места, которое ее первым обнаружило, в код, предусмотренный для обработки таких ситуаций. Исключения могут возникнуть по разным причинам: -из-за математических ошибок, переполнения стека, некорректных входных данных, неготовых устройств ввода-вывода, нехватка памяти и многих других. Обработка исключений отличается от традиционной обработки ошибок тем, что она позволяет отделить код, который обнаруживает ошибку, от кода, реагирующего на нее. Код, обнаруживший ошибку, возбуждает исключение, сигнализируя о наличии ошибки. Код, который реагирует на такой сигнал, называется обработчиком исключений. Когда исключение возбуждено, начинается поиск подходящего обработчика исключений. Когда обработчик найден, управление передается ему, никогда не возвращаясь к коду, который возбудил исключение. После выполнения кода обработчика исключений, в зависимости от его типа, либо продолжается выполнение программы с оператора следующего за обработчиком, либо продолжается поиск другого обработчика.
Object Pascal поддерживает две формы обработки исключений.
Первая конструкция: try- finally занимается защитой ресурсов:- динамической памяти, файлов, ресурсов ОС, объектов. Оператор TRY- FINALLY гарантирует, что программа выполнит операторы, освобождающие ресурсы, независимо от того, было или нет возбуждено исключение. Если выполнение передается блоку try- finally при возбуждении исключения, он не уничтожает это исключение – после того, как выполнится код части finally , исключение пойдет дальше к следующему подходящему обработчику исключений.
Синтаксис блока try- finally
// операторы захвата ресурсов
Try
// операторы, возбуждающие исключение
Finally
// операторы, освобождающие ресурсы
// В этом разделе всегда выполняются все оператора несмотря на
// то, что возникло исключение или нет
end;

Внимание!
Необходимо убедится в корректной работе исключений. Для этого следует выполнить следующее:
Вставить, приведенные ниже, примеры в свою работающую программу
Запустить программу на выполнение и убедиться, что Delphi реагирует на ошибки стандартным способом
Для включения в работу созданных исключений пользователем
следует выполнить следующее: 1-снять обработку исключений (пункт-4) и 2-выключить оптимизацию кода компилятором (пункт-5).
4.Снятие исключений. TOOLS(DEBUGGER OPTIONS и в открывшемся окне на странице LONGUAGE EXCEPTION снять флажок индикатора STOP ON DELPHI EXCEPTION.
5. Снятие оптимизации. PROJECT(OPTION в открывшемся окне
PROJECT OPTION на странице COMPILE снять флажок индикатора в открывшемся окне на странице снять флажок индикатора в открывшемся окне на странице снять флажок индикатора OPTIMIZATION.
6. Восстановить обработку исключений и работу оптимизации кода включить флажки ( пункты 4 и 5).

Рассмотрим некоторые фрагменты кода методов и процедур с использованием блока try-finally. Фрагменты можно включать в проекты для
уяснения их функционирования.
Type
Tform1 = class( TForm)
Private // только для этого класса доступны
GlobalString:string; // строка и
Procedure RunCalculation; // процедура
End;
Implementation
Procedure TForm1.Runcalculation;
Var
I, j, k: Integer;
Begin
J := 0;
Try
K := I div j; // деление на нуль управление передается в finally
Finally
GlobalString := SomeMessage’; //сюда передается управление
End;
End;{ TForm1.Runcalculation }

Другой тип примера.
Procedure TForm1.Runcalculation;
Var
I, j, k: Integer;
Begin
J := 0;
Try
K := I div j; // деление на нуль управление передается в finally
Label1.Caption := Enter’; // этот оператор пропускается
Finally
GlobalString := SomeMessage’; //сюда передается управление
MessageDlg(GlobalString,mtError, [mbOk],0); // выполняется
End;
End;{ TForm1.Runcalculation }

Примеры в действии смотри в файле P_Iskl
Вторая конструкция try- except. Код в блоке except выполняется только при возбуждения исключения, но никогда не выполняется при нормальной работе программы. В этом блоке может быть несколько обработчиков исключений, каждый из которых ориентирован на определенный тип исключений. После выполнения кода блока except исключение уничтожается – процесс поиска в стеке вызовов заканчивается и выполнение программы продолжается с оператора, следующего за оператором try- except.
Синтаксис блока try- except
// операторы программы
Try
// операторы, возбуждающие исключение
except
// операторы, очистки
// В этом разделе всегда выполняются операторы при возникновении
// исключения. Если ошибки(исключения) нет операторы
// пропускаются.
end;
Рассмотрим пример.

Procedure TForm1.Runcalculation;
Var
I, j, k : Integer;
Begin
I :=100;
J := 0;
Try
k := i div j; // деление на нуль управление передается в except
except
k := -1; // сюда передается управление k=-1
MessageDlg( k=’ +IntToStr(k), mtInformation, [mbOk],0); // сообщение
End;
End;{ TForm1.Runcalculation }

Примеры в действии смотри в файле P_Iskl

За ключевым словом except обычно следует список обработчиков исключений, состоящий из операторов on-do.
Синтаксис оператора on-do.
Try
// операторы, возбуждающие исключение
except
on класс_ исключений_1 do
begin
// Группа #1 операторов очистки
end;
on класс_ исключений_2 do
begin
// Группа #2 операторов очистки
end;
else
// Группа операторов очистки по умолчанию
// раздел else может отсутствовать
end;
Когда в try-блоке возникает исключение управление передается разделу except, в котором тип класса в каждом из операторов on-do проверяется на совместимость с типом текущего экземпляра исключения. Если в разделе except нет подходящего оператора on-do, но есть раздел else, выполняется его код.
Классы исключений

Delphi представляет класс Exception в качестве корневого для своих классов исключений. Модуль SysUtils определяет классы исключений, являющиеся наследниками Exception. Например,
EInOutError Ошибка ввода-вывода.
EDivBYZero Попытка деления на нуль(div)
EZeroDivide Попытка деления на нуль( / ) .
EInvalidCast Неправильное преобразование типа.
ERangeError Значение выражения выходит за
допустимые границы
И многочисленная коллекция других исключений.

Рассмотрим примеры.
Procedure TForm1.Runcalculation;
Var
I, j, k : Integer;
Begin
I :=100;
J := 0;
Try
k := i div j; // деление на нуль управление передается в except
except
on EDivByZero do k := -1; // сюда передается управление k=-1
end;
MessageDlg( k=’ +IntToStr(k), mtInformation, [mbOk],0); // сообщение
End;{ TForm1.Runcalculation }

Можно и так обрабатывать исключения.

Procedure TForm1.Runcalculation;
Const
CR =#13#10;
Var
I, j, k : Integer;
Begin
I :=100;
J := 0;
Try
k := i div j; // деление на нуль управление передается в except
except
on E : EDivByZero do // сюда передается управление k=-1
MessageDlg( E: Message + CR + calc’ + Address2Str(ExceptAddr),
mtError, [mbOk],0); // сообщение с указанием адреса
//исключения
// лучш так
MessageDlg( Self.ClassName + :’ + E. Message, mtError, [mbOk],0);

// E.Message- строка с ошибкой; Self.ClassName – имя бъекта,
// возбудившего исключение
End;
End;{ TForm1.Runcalculation }

Примеры смотри в файле P_Iskl

Вложенные обработчики исключений

Delphi допускает использовать вложенные обработчики try-finally и try-except. Вложенные обработчики дают возможность реализовывать замысловатые схемы обработки исключений.

Try try try
// Операторы // Операторы // Операторы
Try try try
// операторы //Операторы // Операторы
{except/ finally} finally except
// код очистки // Операторы // Операторы
End; end; end;
{except/ finally} except finally
// код очистки // Операторы // Операторы
End; end; end;

Вкладывать блоки исключений try-except и try-finally можно друг в друга в любой комбинации и на любую глубину.



Повторное возбуждение исключения

Ключевое слово Raise в Delphi дает возможность повторного (reraising) возбуждения текущего исключения. При повторном возбуждении исключения в работу вступают умалчивающие обработчики Delphi, и пользователю автоматически выдается сообщение об ошибке.
Try // Внешний блок
// Операторы
Try // Специальный внутренний блок
{действия, требующие специальной обработки исключения}
Except
On ESomeException do
begin
{Специальный внутренний обработчик исключений}
Raise; // Повторная передача исключения во внешний блок
end;
end;
except
// Внешний блок со стандартным обработчиком
On ESomeException do Something;
end;

Приведем пример.
Procedure Str2ToInt(S:string);
Var
E :integer;
Begin
Val(S, Result, E); // преобразует строку S в целое Result
If E<>0 then // пояснение, что неправильно
Raise EConvertError.Create(can’ t convert + S + into fn integer’);
End;{ Str2ToInt }


Объявление новых классов исключений

Новый класс исключений объявляется по следующему синтаксису
Type
Имя_Класса_ Исключений = class(Exception); // 1
Имя_Класса_ Исключений = class(Exception); // 2
Поля
End;
Класс может объявляться в двух формах. В первой форме объявляется просто класс, во второй класс с полями, в которых может храниться информация, описывающая состояние пользовательского класса исключений. Пример.
Type
ECalcOperator = class(Exception);
ECalcError = class(Exception);
Public
ErrCode:Integer;
ErrMsg: string;
End;

Синтаксис использования класса исключений
Try
// Операторы возбуждения исключения
Except
On Индентификатор: имя_ Класса_ Исключения do
Begin
{ Операторы, использующие Идентификатор для доступа к полям экземпляра исключения типа имя_ Класса_ Исключения }
End;
End;
Заключение

Исключения представляют собой жизненно важную часть хорошо написанных программ. Механизм исключений очень прост. Однако где и когда их использовать есть определенный элемент искусства. Выработка в себе способности к такому искусству займет время, и в большинстве случаев это будут месяцы и годы, такие затраты необходимы для приобретения высокого уровня профессионализма.










13PAGE 15


13PAGE 141615




13PAGE 15


13PAGE 142215



Редактор кода

Проводник кода

Конструктор формы

Обозреватель дерева объектов

Главное окно

Окно сообщений об ошибках

Точка останова

Окно наблюдения

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



Root Entry

Приложенные файлы

  • doc 8812858
    Размер файла: 3 MB Загрузок: 0

Добавить комментарий