Помимо многострочного редактора, в Delphi, на той же закладке Standard палитры компонентов, располагаются еще 2 компонента, использующих списки строк для хранения своих значений. Это ListBox и ComboBox.
Простой список, представленный компонентом ListBox, представляет собой прямоугольную область, в которой располагаются его элементы – строки. Если строк в списке больше, чем может поместиться в отведенной области, то автоматически появляется полоса прокрутки.
Класс TListBox является наследником класса TWinControl и имеет собственные свойства, представленные в таблице 12.5.
Таблица 12.5. Основные свойства ListBox
Свойство
Тип
Описание
AutoComplete
Boolean
Определяет, должен ли список реагировать на нажатие клавиш таким образом, чтобы находить и выделить совпадающий элемент
BorderStyle
TBorderStyle
Определяет, должна или нет быть рамка вокруг списка. Допустимые значения: bsNone, bsSingle
Columns
Integer
Определяет количество колонок, видимых без горизонтальной прокрутки
Count
Integer
Указывает на количество элементов списка
ItemIndex
Integer
Определяет порядковый номер выбранного элемента, начиная с 0. Если не выбрано ни одного, то устанавливается в -1
Items
TStrings
Содержит строки списка
MultiSelect
Boolean
Определяет, допустимо или нет производить множественный выбор
SelCount
Integer
Указывает на количество выбранных элементов
Selected
array of Boolean
Определяет, выбран или нет тот или иной элемент списка
Sorted
Boolean
Определяет, должен ли список быть отсортирован
TopIndex
Integer
Определяет порядковый номер элемента, который является самым верхним в видимой части списка
Отдельное пояснение следует дать для свойства Columns. Дело в том, что если оно имеет значение, отличное от принятого по умолчанию нуля, то список становится не простым вертикальным, а многоколоночным, с горизонтальной прокруткой по колонкам для случая, если все элементы не умещаются на отведенной для списка области. Поэтому, в зависимости от того, какое значение имеет параметр Columns, один и тот же список может выглядеть совершенно по-разному (рис. 12.3).
Рис. 12.3. Влияние значения свойства Columns на внешний вид списка
Двумерный Массив. Матрица Не буду путать вас сложными техническими обозначениями термина, я просто скажу простым языком.
Пример массива – это шахматная доска. Снизу у нас буквы (A-B-C…), сбоку цифры (1-2-3…), каждый квадрат на поле задается двумя координатами, к примеру: E2, E4, G5. И на выбранном квадрате может стоять фигура, конь, ферзь, ладья, а может и не стоять вовсе. В программировании двумерный массив позволяет построить подобные схемы. Давайте рассмотрим пример, построим шахматную доску размером 3 на 3 ячейки и заполним несколько ячеек фигурами: Сначала мы создадим двумерный массив Delphi mas, имеющий по три ячейки (1..3), зададим ему тип string: var mas: array[1..3,1..3] of string; Теперь нам нужно заполнить все девять ячеек, “расставить фигуры” в каждую, для этого обратимся к каждой ячейке на прямую по ее адресу, как это делается в шахматах, к примеру ячейка 1-1 или 2-3, первая цифра – номер по горизонтали, вторая – по вертикали. Сделаем это так
mas[1,1]:='Ферзь'; mas[1,2]:='Пусто'; mas[1,3]:='Ладья'; ... mas[3,3]:='Пусто'; Теперь у нас есть поле из 9 ячеек, заполненное теми фигурами, которыми вы пожелаете. Двумерные массивы Delphi применяются для многих целей, это может быть база данных, с именами людей, номерами телефонов, должностями или еще какой-либо информацией, так же массивы чисел можно применять в играх для сохранения в памяти программы информацию об игроках, уровнях их здоровья, очках. Любой программист сам выбирает для каких целей он будет использовать массив, потому что он является одной из самых важных конструкций в программировании. Если кому будет интересно, то существует также двумерный динамический массив – его отличие заключается лишь в том, что значение его ячеек и, самое главное, количество этих самых ячеек изменяется по ходу выполнения программы.