Рассмотрение дополнительных компонентов для ввода/вывода строк
Для ввода и вывода информации в объектно-ориентированном программировании существует целый ряд вариантов. В библиотеке визуальных компонентов 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.Вывести массив следующего вида. Размерность произвольная.