Рассмотрение дополнительных компонентов для ввода/вывода строк

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