Для ввода и вывода информации в объектно-ориентированном программировании существует целый ряд вариантов. В библиотеке визуальных компонентов Delphi существует множество компонентов, позволяющих отображать, вводить и редактировать текстовую информацию. Нами уже были рассмотрены Label (метка), Edit (однострочное поле) и Memo (многострочное поле). В таблице приведен перечень оставшихся компонентов с краткими характеристиками и указанием основных параметров, содержащих отображаемый или вводимый текст.
Пиктограмма | Компонент | Вкладка | Описание |
StaticText (метка с бордюром) | Additional | Подобен компоненту Label, но обеспечивает возможность задания стиля бордюра. Основное свойство — Caption. | |
Panel (панель) | Standard | Компонент является контейнером для группирования органов управления, но может использоваться и для отображения текста с возможностями объемного оформления. Основное свойство — Caption. | |
MaskEdit (окно маскированного редактирования) | Additional | Используется для форматирования данных или для ввода символов в соответствии с шаблоном. Основные свойства — Text и EditText. | |
RichEdit (многострочное окно редактирования в формате RTF) | Win32 | Компонент представляет собой окно редактирования позволяющее производить выбор атрибутов шрифта, поиск текста и многое другое. Основное свойство — Lines. | |
ListBox (окно списка) | Standard | Отображение стандартного окна списка Windows, позволяющего пользователю выбирать из него пункты. Основное свойство — Items. | |
CheckListBox (список с индикаторами) | Additional | Компонент является комбинацией свойств списка ListBox и индикаторов CheckBox в одном компоненте. | |
ComboBox (редактируемый список) | Standard | Объединяет функции ListBox и Edit. Пользователь может либо ввести текст, либо выбрать его из списка. Основное свойство — Items. |
Оператор присоединения (With)
Оператор используется для сокращения записи кода программы при обращениях к свойствам объекта. Он позволяет избегать повторных ссылок на объект в последующих операторах.
Структура:
With <объект> Do <оператор>;
Например, группу операторов
Form1.label1.left:= form1.label1.left + 10;
Form1.label1.caption:=label2.caption;
Form1.label1.font.color:= clred;
С помощью with можно записать короче:
With form1.label1 do
Begin
left:= left + 10;
caption:=label2.caption;
font.color:= clred;
end;
Графические компоненты
TImage – изображение
Данный компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растрового рисунка (*.bmp), значка (*.ico) или метафайла (*.wmf, *.emf). С помощью свойства Canvas программа может отредактировать растровое изображение (но не метафайл или значок!)
Свойства компонента:
Свойство | Описание |
AutoSize | Разрешает/запрещает изменять размеры компонента так, чтобы в них полностью загрузилось изображение |
Canvas | Для прорисовки изображения |
Center | Указывает, надо ли центрировать изображение в границах компонента |
Picture | Контейнер изображения |
Stretch | Разрешает/запрещает изменять размеры изображения так, чтобы оно целиком заполнило клиентскую область компонента |
Transparent | Разрешает/запрещает накладывать собственный фон изображения на фон компонента |
TShape – стандартная фигура
Компонент рисует одну из простейших геометрических фигур:
stCircle – окружность
stRounrSaustre – квадрат с закругленными сторонами
stSquare – квадрат
stEllipse – эллипс
stRectangle – прямоугольник
stRoundRect – прямоугольник с закругленными сторонами
Фигура полностью занимает все пространство компонента. Помимо стандартных графических инструментов Brush и Pen, в компоненте определено свойство Shape, задающий вид фигуры. Изменение этого свойства приводит к немедленной перерисовке изображения
TPaintBox – окно для рисования
Для создания изображения в компоненте класса TPaintBox используется свойство канва (Canvas), графические инструменты – в свойствах Font, Pen, Brush. Рисование осуществляется в обработчике события OnPaint.
Лабораторная работа №11
Создадим несложную программу просмотра изображений:
1. Поместите на форму панель TPanel, очистите ее свойство Caption.
2. Разместите на панели кнопку TButton с надписью Загрузить.
3. На любое свободное место формы (над панелью) поместите компонент TImage и установите в его свойство Align значение alClient.
4. На любое место поместите компонент TOpenPictureDialog (вкладка Dialogs) – с его помощью пользователь программы может разыскать нужный файл с изображением.
5. Для кнопки напишите обработчик события OnClick:
Begin
If OpenPictureDialog1.Execute then
Begin
Image1.Picture.LoadFormFile(OpenPictureDialog1.FileName);
Image1.Stretch:= True { масштабирует изображение, чтобы оно занимало всю рабочую область }
End;
End;
Для того чтобы нарисовать нижеследующий рисунок в окне PaintBox необходимо растянуть данный компонент по форме, форму развернуть на весь экран и написать представленный код.
procedure TForm1.PaintBox1Paint (Sender: TObject);
var x, y: integer;
begin
with paintbox1.Canvas do
begin
brush.Color:=clred; ellipse(0,0,620,420); font.Name:='arial';
font.Size:=height div 5; font.Style:=[fsbold,fsitalic];
font.Color:=clwhite;
x:=(620 - textwidth('Delphi')) div 2; y:=(420 - textheight('D')) div 2;
textOut(x,y,'Delphi')
end; end;
Задания для самостоятельной работы:
1. По введенным координатам точки А(a1,a2) вывести координатную четверть с ПДСК.
2. Нарисовать домики пейзаж около него.
3. По введенному числу лепестков вывести значение гадания по ромашке «любит» или «не любит».
Работа с таблицами
TStringGrid – текстовая таблица
Компонент TScrollBar предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Таблица делится на две части – фиксированную и рабочую. Фиксированная часть служит для показа заголовков колонок и рядов, а так же для ручного управления их размерами. Обычно фиксированная часть занимает левую колонку и верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных колонок и рядов.
Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество колонок и рядов, более того, эти величины могут изменяться программно. Если рабочая часть таблицы не помещается целиком на экране, то автоматически появляется полоса прокрутки.
Свойства компонента:
Свойство | Описание |
BorderStyle | Определяет рамку компонента: bsNone – нет рамки, bsSingle – рамка толщиной 1 пиксел |
Cells [ col, row ] | Определяет содержимое ячейки с табличными координатами (col,row) |
Col | Содержит номер колонки с ячейкой, имеющей фокус ввода |
ColCount | Содержит количество колонок таблицы |
ColWidths | Содержит ширину колонки с индексом Index |
EditorMode | Разрешает/запрещает редактирование ячеек. Игнорируется, если свойство Options включает значение goAlwayseShowEditor или не включает значение goEditing |
FixedColor | Определяет цвет фиксированной зоны |
FixedCols | Определяет количество колонок фиксированной зоны |
FixedRows | Определяет количество рядов фиксированной зоны |
GridHeight | Содержит значение высоты таблицы |
GridLineWidth | Определяет ширину линий, расчерчивающих таблицу |
GridWidth | Содержит значение ширины таблицы |
Row | Содержит номер ряда ячейки, имеющий фокус ввода |
RowCount | Содержит количество рядов таблицы |
RowHeights | Содержит значение высоты ряда с индексом Index |
Rows | Содержит все текстовые строки ряда с индексом Index |
ScrollBars | Определяет полосы прокрутки: ssNone – нет полос; ssHorizontal – в таблицу вставляется горизонтальная полоса; ssVertical – вставляется вертикальная полоса; ssBoth – вставляются обе полосы. |
Лабораторная работа №12
Для обращения к ячейке [0,0] нужно использовать свойство Cells:
StringGrid1.Cells[0,0]:=IntToStr(5)
1. Проиллюстрируйте возможности рассмотренного компонента, составив таблицу следующего вида:
Дисциплина | ФИО педагога | |
1. | Математика | Иванов И.И. |
2. | Русский язык | Петров П.П. |
3. | … | … |
2. Составить таблицу 4х4, состоящую из целых чисел. Программа должна выводить число, лежащее в ячейке с введенным с клавиатуры номером столбца и строки.
3. Составить таблицу, выводящую расписание занятий в школе.
Массивы
Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива.
В Delphi массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент.
Описание массивов
VAR <имя переменной>: ARRAY [<type1, type2,…>] OF <type>;
[<type1, type2,…>] – типы индексов
< type > - базовый тип
Количество типов индексов определяет размерность массива. Тип индексов может быть любым, кроме Real. Базовым типом может быть любой тип данных.
Примеры описания массивов
Var a: array[1..10] of integer; - последовательность целых чисел
Var t: array[1..2,1..2] of real; - таблица 2х2.
Var a1: array [‘A’..’Z’] of word;
Обращение к элементам массива
a[1] – первый элемент из массива a.
t[1,2] – элемент из первой строки второго столбца.
Индексы можно задавать либо конкретными значениями, либо выражениями.
i:=1; a[i] - первый элемент из массива a; a[i+1] – второй элемент массива а.
В динамических массивах не указывается размерность в описании:
Например, var a: array of integer;
Размерность устанавливается в теле программы: SetLength(a, 10); - длинна массива а – 10 элементов.
По массиву проход осуществляется от первого до последнего элемента:
for i:= Low(a) to High(a) do где i: integer;
Лабораторная работа №13
Задания для самостоятельной работы:
1. Заполнить линейный массив произвольными числами и вывести его на экран.
2. Заполнить линейный массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы на 5 и снова вывести получившийся массив на экран.
3. В линейном массиве найти элементы массива равные 10 и вывести их индексы.
4. В линейном массиве вывести элементы с четными индексами.
5. В двумерном массиве найти количество четных элементов.
6. В двумерном массиве найти сумму элементов главной диагонали.
7. В двумерном массиве подсчитать произведение наибольших элементов каждой строки.
8. В динамическом массиве вывести на экран элементы равные своему индексу.
9. В динамическом массиве найти элементы, удовлетворяющие условию сумма индексов меньше значения элемента.
10. Вывести массив следующего вида. Размерность произвольная.
… | |||
11. Вывести массив следующего вида. Размерность произвольная.
… | |||
N |
12. Вывести массив следующего вида. Размерность произвольная.
… | |||