Страницы: 1 2
ІІ. Основная часть
2.1. Понятие компонента
Понятие компонента является фундаментальным для Delphi. Без компонентов все преимущества визуальной разработки приложения исчезают и говорить становится не о чем. Поэтому соберите все силы и внимательно прочитайте этот раздел, пытаясь усвоить не только формальную сторону вопроса, но и саму суть понятия компонента.
Существует два взгляда на компоненты.
- Взгляд снаружи, точнее — из визуальной среды разработки. С этой точки зрения компоненты — это самодостаточные строительные блоки, которые вы берете из Палитры Компонентов и переносите на форму для создания собственно приложения. Примеры компонентов вам известны: это кнопки, метки, строки редакторов и т. д.
- Существует еще и взгляд изнутри, т. е. взгляд из программы на языке ObjectPascal. С этой точки зрения компоненты — это классы, порожденные прямо или косвенно от класса TComponent и имеющие опубликованные (published) свойства. Экземпляры компонентов — это объекты этих классов, существующие в качестве полей формы. Среди опубликованных свойств компонентов обязательно присутствует имя (Name), под которым экземпляр компонента представляется в Инспекторе Объектов.
Объединение этих двух точек зрения дает цельное представление о том, что такое компоненты. При работе с компонентами из визуальной среды вы всегда видите их лицевую сторону. Однако как только вы начинаете писать обработчики событий и управлять компонентами программно, вы соприкасаетесь с программной стороной компонентов, суть которой — объекты. Таким образом, Delphi обеспечивает симбиоз визуального и объектно-ориентированного программирования.
При анализе структуры компонента обнаруживается, что его природа троична и лучше всего описывается формулой:
Компонент =состояние (свойства)+ действия (методы)+ обратные связи (события).
- Состояние компонента описывается его свойствами. Свойства — это атрибуты компонента, которые определяют, как компонент отображается на экране и как функционирует. Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения). В зависимости от времени установки свойства подразделяются на свойства времени проектирования (designtime) и свойства времени выполнения (run-time). Первые устанавливаются для каждого компонента в Инспекторе Объектов и определяют начальное состояние компонента. Во время выполнения приложения эти свойства могут быть изменены операторами программы, соответственно изменится вид и поведение компонента. Вторая группа — это свойства, которые не отражены в окне Инспектора Объектов и управлять которыми можно только из программы. С точки зрения языка ObjectPascal суть различия между свойствами времени проектирования и свойствами времени выполнения совсем проста — первые объявлены в своем классе в секции published, а вторые — в секции public.
- Действия, выполняемые компонентом, — это его методы. Вызовы методов компонента помещаются в исходный код программы и происходят только во время выполнения приложения. Методы не имеют под собой визуальной основы.
- Обратные связикомпонента — это его события. События обеспечивают интерактивность компонентов, благодаря им приложение на Delphi строится как программный автомат. В ObjectPascal нет специальных языковых средств для представления событий, да они и не нужны, поскольку события реализуются с помощью свойств, содержащих указатели на методы
2.2. Страница Standart
Изучение Delphi естественным образом начинается со страницы палитры компонентов Standart. На этой странице расположены стандартные для Windows интерфейсные элементы, применяющиеся наиболее часто. В следующей таблице представлен список компонентов страницы Standart:
| Пиктограмма | Имя | Назначение |
| MainMenu | Главное меню программы. Компонент способен создавать и обслуживать сложные иерархические меню. | |
| PopupMenu | Всплывающее меню. Обычно это меню появляется после нажатия правой кнопкой мыши. | |
| Label | Метка. Используется для размещения не очень длинных сообщений в виде статического текста | |
| Edit | Строка ввода. Предназначена для ввода пользователем текстовой информации в виде одной строки. | |
| Memo | Многострочный текстовый редактор. Используется для ввода пользователем и отображения многострочного текста без функций форматирования. | |
| Button | Командная кнопка. Используется для реализации в программе команд с помощью обработчика события onclick этого компонента. | |
| CheckBox | Независимый переключатель. Используется его свойство Checked (отмечено), имеющее значения true или false, меняющееся при щелчке мышью. | |
| RadioButton | Зависимый переключатель. Используется для выбора только одного из нескольких вариантов. Для этого компонент объединяется как минимум с одним или несколькими такими же компонентами в группу. Щелчок по компоненту приводит к его выделению и снятию выделения ранее выбранного компонента. Также имеет свойствоChecked. | |
| ListBox | Список выбора. Содержит список предлагаемых вариантов (опций) и даёт возможность проконтролировать текущий выбор. | |
| ComboBox | «Выпадающий» список выбора. Представляет собой комбинацию компонентов Editи ListBox. | |
| ScrollBar | Полоса прокрутки. Представляет собой вертикальную или горизонтальную полосу, управляющую визуальным представлением компонентов, не помещающихся целиком в окне программы. | |
| GroupBox | Контейнер группы компонентов. Используется для группировки нескольких связанных по смыслу компонентов. | |
| RadioGroup | Группа зависимых переключателей. Содержит специальные свойства для обслуживания нескольких связанных между собой зависимых переключателей. | |
| Panel | Панель. Этот компонент, как и GroupBox, служит для объединения нескольких компонентов. Содержит внутреннюю и внешнюю кромки, что позволяет создавать эффекты «вдавленности» и «выпуклости». | |
| ActionList | Список действий. Служит для централизованной реакции программы на действия пользователя, связанные с выбором одного из группы однотипных управляющих элементов, таких как опции меню, кнопки и т.д. |
2.2. Страница Additional
На страницу Additional помещены дополнительные компоненты, без некоторых из которых сегодня трудно представить программу для Windows: кнопки с дополнительными свойствами, таблицы, компоненты для размещения изображений и многие другие, представленные в таблице:
| Пиктограмма | Имя | Назначение |
| BitBtn | Командная кнопка. Отличается от стандартной кнопки Button возможностью отображения пиктограммы. | |
| SpedButton | Пиктографическая кнопка. Обычно используется для быстрого доступа к опциям Главного Меню. | |
| StringGrid | Таблица строк. Этот компонент обладает мощными возможностями для представления текстовой информации в табличном виде. | |
| DrawGrid | Таблица изображений. Этот компонент используется для представления изображений в табличном виде. | |
| Image | Рисунок. Компонент для отображения изображений, в том числе пиктограмм и метафайлов. | |
| Shape | Фигура. С помощью этого компонента можно вставить на Форму правильную фигуру — прямоугольник, эллипс, окружность. | |
| Bevel | Кромка. Служит для выделения отдельных частей Формы трёхмерными рамками и полосами. | |
| ScrollBox | Панель с полосами прокрутки. В отличие от компонента Panel автоматически вставляет полосы прокрутки, если размещённые на нём компоненты отсекаются его границами. | |
| CheckListBox | Список множественного выбора. Отличается от
стандартного компонента ListBoxналичием рядом с каждой опцией независимого переключателя типа CheckBox, облегчающего выбор сразу нескольких опций. | |
| Splitter | Граница. Этот компонент создаёт границу между двумя видимыми компонентами и даёт возможность пользователю перемещать её. | |
| StaticText | Статический текст. Отличается от стандартного компонента Label наличием собственного Windows-окна, что позволяет обводить текст рамкой или выделять его в виде «вдавленной» части Формы. | |
| Chart | Диаграмма. Этот компонент облегчает создание специальных панелей для графического представления данных. |
2.3.Страница Win32
Эта страница содержит компоненты, представляющие собой интерфейсные элементы для 32-разрядных операционных систем Windows 95/98/NT (В версии системы Delphi 2 эта страница называлась Win95). Использующие эти компоненты программы выглядят в стилистике последних версий операционных системWindows.
| Пиктограмма | Имя | Назначение |
| TabControl | Набор закладок. Каждая закладка представляет собой поле с надписью и/или текстом. Выбор той или иной закладки распознаётся программой и используется для управления содержимым окна компонента. | |
| PageControl | Набор панелей с закладками. Каждая панель может содержать свой набор интерфейсных элементов и выбирается щелчком по связанной с ней закладке. | |
| ImageList | Набор рисунков. Представляет собой хранилище для нескольких рисунков одинакового размера, например, пиктограмм для кнопок. | |
| RichEdit | Многострочный редактор форматированного текста. В отличие от компонентаMemo может изменять такие характеристи текста как шрифт, цвет, выравнивание и т.д. (формат RTF). | |
| TrackBar | Регулятор. Используется для управления значениями некоторых величин в программах. Например, с его помощью удобно изменять громкость звучания мультимедийных устройств. | |
| ProgressBar | Индикатор процесса. С помощью этого компонента можно отображать ход исполнения достаточно длительного процесса, например, копирование данных. | |
| UpDown | Цифровой регулятор. Две кнопки этого компонента служат для увеличения (верхняя) или уменьшения (нижняя) связанной с компонентом числовой величины. Для отображения этой величины умеет ассоциироваться с компонентом Edit. | |
| HotKey | Управляющая клавиша. Компонент служит для ввода управляющих кодов, таких как F1, CTRL+Shift и т.д. | |
| Animate | Мультипликатор. Предназначен для отображения движущихся изображений (видеоклипов). Имеет ограничение — не может сопровождать видеоклип звуком. Как и компонент ProgressBar, применяется в основном для сопровождения длительных процессов. | |
| DateTimePicker | Селектор времени/даты. Этот компонент предназначен для ввода или отображения времени или даты. | |
| MonthCalendar | Календарь. Служит для отображения календаря и выбора даты или диапазона дат. | |
| TreeView | Дерево выбора. Представляет собой совокупность связанных в древовидную структуру пиктограмм. Обычно используется для просмотра структуры каталогов и других подобных элементов, связанных иерархическим образом. | |
| ListView | Панель пиктограмм. Организует просмотр нескольких пиктограмм и выбор нужной. Компонент способен располагать пиктограммы в вертикальных или горизонтальных рядах и показывать их в крупном или мелком масштабе. | |
| HeaderControl | Управляющий заголовок. Представляет собой горизонтальную или вертикальную полосу, разделённую на ряд смежных секций с надписями. Размеры секций можно менять на этапе работы программы. Обычно используется для изменения размеров столбцов или строк вразного рода таблицах.
| |
| StatusBar | Панель статуса. Предназначена для размещения разного рода служебной информации в окнах редактирования. Пример — нижняя часть рамки окна текстового редактора Word. | |
| ToolBar | Инструментальная панель. Этот компонент служит контейнером для командных кнопок BitBtn и испособен автоматически изменять свои размеры и положение при добавлении или удалении кнопок. | |
| CoolBar | Инструментальная панель. В отличие от ToolBar, используется как конейнер для размещения стандартных интерфейсных компонентов Windows, таких как Edit, ListBox, ComboBox и т.д. | |
| PageScroller | Прокручиваемая панель. Служит для размещения узких инструментальных панелей. При необходимости автоматически создаёт по краям панели стрелки прокрутки. |
2.4. Страница System
На этой странице представлены компоненты, которые имеют различное функциональное назначение (например, Timer — очень важный в любой программе компонент), в том числе компоненты, поддерживающие стандартные для Windows технологии межпрограммного обмена данными OLE и DDE.
| Пиктограмма | Имя | Назначение |
| Timer | Таймер. Этот компонент служит для отсчёта интервалов реального времени. Имеет ограничение — не может обрабатывать интервалы менее 55 миллисекунд. | |
| PaintBox | Окно для рисования. Создаёт прямоугольную область, предназначенную для прорисовки графических изображений. | |
| MediaPlayer | Мультимедийный проигрыватель. С помощью этого компонента можно управлять различными мультимедийными устройствами. | |
| OleContainer | OLE-контейнер. Служит приёмником связываемых или внедряемых объектов. | |
| DDEClientConv | DDE-связь. Совместно с DDEClientItem используется для создания клиентской программы в DDE-связи. | |
| DDEClientItem | DDE-тема. Определяет тему DDE-связи в клиентском приложении. | |
| DDEServerConv | DDE-связь. Совместно с DDEServerItem используется для создания серверной программы в DDE-связи. | |
| DDEServerItem | DDE-тема. Определяет тему DDE-связи в серверном приложении. |
ІІІ. Практическая часть
3.1 Создание программы “Простая Программа”
Для начала запустите Delphi. Первым делом поменяем размер формы, для этого кликнете в любое место формы. Потом отредактируйте свойства ClientHeight и ClientWidth, поставьте значения 150 и 180 соответственно, первое свойство изменяет высоту окна, а второе его ширину. Также можно подписать окно, для этого отредактируем свойство Caption, поставив значение «Программа».
Далее выберите на палитре Standard элемент Button. И поместите его на форме, после этого отредактируйте свойство Caption, поставив значение «ОК», это свойство определяет надпись кнопки. Пример приведен на рисунке 3. Далее выберите на палитре Standard элемент Label. И поместите его на форме, после этого отредактируйте свойство Caption, поставив значение «Здесь будет надпись», это свойство определяет надпись объекта.

После этого выделите кнопку, и перейдите на вкладку Events окна ObjectInspector, двойным щелчком левой кнопки мыши, зайдите в событие OnClick, данное событие происходит, когда кто-то нажмет кнопку. После этого произойдет автоматический переход к окну кода и сгенерируется код события приведенный ниже (// авторские комментарии не генерируемые Delphi).

3.2 Создание программы“Вежливая программа”
Постановка задачи:
Разработать приложение, которое «приветствует» пользователя и форматирует введенный текст.
Порядок выполнения:
Создать в своей папке целевую папку «Delphi работа 1»;
Загрузить Delphi, сохранить новый проект в целевую папку;
Установить на форму компоненты (вкладка Standard) и изменить им свойства в соответствии с таблицей.
| Объект | Свойство | Значение |
| Метка | Name | Label1 |
| Caption | Введите свое имя | |
| Font … | полужирный, 14 | |
| Метка | Name | Label2 |
| Caption | ||
| Font … | полужирный, 14,желтый | |
| Color | голубой | |
| AutoSize | False | |
| Тестовое окно | Name | Edit1 |
| Text | ||
| Font | полужирный, 14 | |
| Командная кнопка | Name | Button1 |
| Caption | Ok | |
| Font | полужирный, 12 | |
| Форма | Caption | Вежливая программа |
Создать процедуру обработки события OnClick для объекта Button1, для этого:
выделить объект;
на вкладке Events инспектора объектов выбрать событие OnClick, выполнить двойной щелчок в правом столбце строки;
В появившемся окне редактора кода ввести следующий код:
if trim(edit1.text)=» then label2.Caption :=’ Забыл?’
else label2.Caption :=’Привет,’+edit1.Text;
Проверить работу приложения, для этого:
загрузить приложение (F9 или в главном меню Run/Run );
в поле текстового окна ввести произвольный текст;
щелкнуть по кнопке Ok;
изменить введенный текст,Ок, просмотреть результат;
закрыть окно приложения.
Добавить на форму новые компоненты c вкладки Standard и изменить для них свойства (см. таблицу).
Для объектов CheckBox1 и CheckBox2 введите код обработки события OnClick
| Объект | Свойство | Значение |
| GroupBox | Name | GroupBox1 |
| Caption | Начертание | |
| Font … | 12 | |
| CheckBox | Name | CheckBox1 |
| Caption | Полужирный | |
| Font … | 12 | |
| CheckBox | Name | CheckBox2 |
| Caption | Курсив | |
| Font … | 12 | |
| GroupBox | Name | GroupBox2 |
| Caption | Размер шрифта | |
| Font … | 12 | |
| RadioButton | Name | RadioButton1 |
| Caption | 12 | |
| Font | 12 | |
| RadioButton | Name | RadioButton2 |
| Caption | 18 | |
| Font | 12 | |
| RadioButton | Name | RadioButton3 |
| Caption | 24 | |
| Font | 12 | |
| GroupBox | Name | GroupBox3 |
| Caption | Цвет | |
| Font … | 12 | |
| RadioButton | Name | RadioButton4 |
| Caption | Красный | |
| Font | 12 | |
| RadioButton | Name | RadioButton5 |
| Caption | Синий | |
| Font | 12 | |
| RadioButton | Name | RadioButton6 |
| Caption | Зеленый | |
| Font | 12 |
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked =true then
Edit1.Font.Style := Edit1.Font.Style +[fsBold]
Else Edit1.Font.Style := Edit1.Font.Style -[fsBold]
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if CheckBox2.Checked =true then
Edit1.Font.Style := Edit1.Font.Style +[fsItalic]
Else Edit1.Font.Style := Edit1.Font.Style -[fsItalic]
end;
Для объекта RadioButton1 введите код обработки события OnClick:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Edit1.Font.Size:=12;
end;
Для объекта RadioButton4 введите код обработки события OnClick:
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
Edit1.Font.Color :=clRed;
end;
Самостоятельно создать процедуры для остальных объектов RadioButton.
Проверить работу приложения.
Сделать всплывающую подсказку для текстового окна, для этого:
выделите объект Edit1;
для свойства Hint введите значение ПОЛЕ ВВОДА
для свойства ShowHint выберите значение True
Измените вид курсора при наведении на командную кнопку, для этого:
выделите объект Button1;
для свойства Cursor выберите из списка любое значение.
Получилось :

3.3 Создание программы “Изменение заголовка”
1. Создаем программу, выполняющую следующие действия:После запуска программы ввести текст в текстовом поле.

2. По щелчку мышью на кнопке «Сменить заголовок окна» изменяется заголовок окна.

3. Ввести новый текст в текстовом поле.
4. Изменить название заголовка окна по нажатию клавиши Enter.
5. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка
Описание плана разработки программы
- Открыть новый проект.
- Разместить на форме экземпляры компонентов: метку Label, кнопку Button, текстовое поле Edit.
- Выполнить следующие действия:
| Выделенный объект | Вкладка окна ObjectInspector | Имя свойства/ имя события | Действие |
| Forml | Properties | Caption | Установка имени формы «ПроектЗ» |
| Labell (Вкладка Standard) | Properties | Caption | Ввод текста надписи «Введите новый заголовок:» |
| Editl (Вкладка Standard) | Properties | Text | Очистить значение свойства Text |
| Buttonl (Вкладка Standard) | Properties | Caption | Установка имени кнопки «Сменить заголовок окна» |
| Default | Выбрать в раскрывающемся списке значение True | ||
| Events | OnClick | Form1.Caption:=Edit1.Text; |
3.4 Создание программы “Двигающая кнопка”
Создаем программу, выполняющую следующие действия:
1. По щелчку мышью на кнопке кнопка либо останавливается, либо двигается.
2. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
Описание плана разработки программы
- Открыть новый проект.
- Разместить на форме экземпляры компонентов: кнопку Button, таймер Timer. Кнопка включает и выключает таймер, а таймер двигает кнопку.
- 3. Выполнить следующие действия:
| Выделенный объект | Вкладка окна ObjectInspector | Имя свойства/ имя события | Действие |
| Forml | Properties | Caption | Установка имени формы «Двигающаяся кнопка» |
| Timerl | Properties | Enabled | Установить значение свойства Enabled = false Свойство Enabled определяет, включен или выключен таймер (по умолчанию, он включен).
|
| Interval | Interval = 100 Свойство Interval определяет интервал в миллисекундах между возникновением событий OnTimer (по умолчанию интервал равен 1 секунде). | ||
| Events | OnTimer | Button1.Left := Button1.Left — 5; if Button1.Left < 10 then Button1.Left := 100; | |
| Buttonl | Properties | Caption | Установка имени кнопки «Сменить заголовок окна» |
| Default | Выбрать в раскрывающемся списке значение True | ||
| Events | OnClick | Timer1.Enabled:=not Timer1.Enabled; |
- Сохраните проект, запустите и протестируйте его.
3.5 Создание программы“Часы”.
1. Запускаем Delphi.
2. На форме Form1 устанавливаем компоненты Label (Standard), Timer (System).
3. В процедуре TClock.Timer1Timerвставить код:
Label1.Caption:=TimeToStr(Time);
4. Установить компоненты GroupBoxии 3 компонента RadioButton.
5. Ввести значения как в таблице:
| GroupBox1 | Caption | Скорость |
| RadioButton1 | Caption | Медленно |
| RadioButton2 | Caption | Умеренно |
| RadioButton3 | Caption | Быстро |
6. Вставить код в процедуреTForm1.RadioButton1Click:
Timer1.Interval := 1000;
Также вставить такой же код:
TForm1.RadioButton1Click (3000) TForm1.RadioButton2Click (2000)

Заключение
В первую очередь Delphiпредназначен для профессионалов-разработчиков корпоративных информационных систем. Может быть, здесь следует пояснить, что конкретно имеется в виду. Не секрет, что некоторые удачные продукты, предназначенные для скоростной разработки приложений (RAD – rapidapplicationdevelopment) прекрасно работают при изготовлении достаточно простых приложений, однако, разработчик сталкивается с непредвиденными сложностями, когда пытается сделать что-то действительно сложное. Бывает, что в продукте вскрываются присущие ему ограничения только по прошествии некоторого времени.
Delphi такие ограничения не присущи. Хорошее доказательство тому – это тот факт, что сам Delphi разработан на Delphi. Можете делать выводы. Однако Delphiпредназначен не только для программистов-профессионалов. Я читал в электронной конференции совершенно неожиданные для меня письма, где учителя, врачи, преподаватели ВУЗов, бизнесмены, все те, кто используют компьютер с чисто прикладной целью, рассказывали о том, что приобрели DelphiforWindows для того, чтобы быстро решить какие-то свои задачи, не привлекая для этого программистов со стороны. В большинстве случаев им это удается. Поразительный факт – журнал VisualBasicMagazine присудил свою премию DelphiforWindows.
Руководители предприятий, планирующие выделение средств на приобретение программных продуктов, должны быть уверены в том, что планируемые инвестиции окупятся. Поэтому одним из оцениваемых факторов должен быть вопрос – а легко ли найти специалиста по Delphi и сколько будет стоить его обучение, сколько времени специалист затратит на овладение продуктом. Ответ здесь получить весьма просто – любой программист на паскале способен практически сразу профессионально освоить Delphi. Специалисту, ранее использовавшему другие программные продукты, придется труднее, однако самое первое работающее приложение он сможет написать в течение первого же часа работы на Delphi. И, конечно же, открытая технология Delphi является мощным гарантом того, что инвестиции, сделанные в Delphi, будут сохранены в течение многих лет.
Список литературы
- Архангельский А.Я. Программирование в Delphi. Учебник по классическим версиям Delphi. – М.: ООО «Бином-Пресс», 2006. – 1152с.: ил.
- Архангельский А.Я. Программирование в Delphi. – М.: ООО «Бином-Пресс», 2004. – 1152 с.: ил.
- Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. – СПб: БХВ-Петербург, 2003. – 288 с.: ил.
- http://www.programmers.kz
- http://www.interestprograms.ru/articles/historyprogramming/historypascal
- Сурков Д.“Программирование в среде Delphi”
- http://www.lkportal.com
- https://ru.wikipedia.org/wiki/Delphi_%28среда_разработки%29
- http://delphi-prg.ru/
- https://ru.wikipedia.org/wik/Delphi_%28язык_программирования%29
Страницы: 1 2
