Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа2.doc
Скачиваний:
6
Добавлен:
06.11.2018
Размер:
196.1 Кб
Скачать
    1. Окно для вывода текста Memo

Класс TStrings предназначен для хранения набора строк. Этот Класс является непосредственным потомком класса TPersistent, что означает в частности, что у него уже есть способность по сохранению и чтению своих данных.

Класс TStrings не используется в программах непосредственно (т. е. не надо пытаться создать переменную такого типа). Чаще всего он используется или как свойство некоторого компонента (например, у компонента Memo есть свойство Lines типа TStrings). Если же нам в программе нужен просто набор строк, то следует использовать экземпляр класса TStringList, который является потомком класса TStrings.

Рассмотрим основные свойства и методы класса TString. В наших примерах мы для конкретности будем иметь дело со свойством Lines экземпляра класса TMemo (компонент Memo расположен на вкладке Standard Палитры компонентов). Его свойство Lines как раз и имеет тип TStrings.

Основное свойство для класса TStrings - это Strings, в которое можно записывать отдельные строки через индекс:

Memo1.Lines.Strings[0]:='London';

Memo1.Lines.Strings[0]:='Paris';

Свойство Count возвращает число элементов в списке:

ShowMessage(IntToStr(Memo1.Lines.Count));

А вот так можно пройтись по всем строкам, входящим в TStrings:

var

i: Integer;

begin

for i := 0 to Memo1.Lines.Count - 1 do

ShowMessage(Memo1.Lines[i]);

...

Свойство IndexOf позволяет выяснить, на каком месте в списке находится некоторая строка (и есть ли она вообще). Вот пример его использования:

var

k: Integer;

begin

//Получаем номер строки "Igor".

k:=Memo1.Lines.IndexOf('Igor');

ShowMessage(IntToStr(k));

end;

Свойство IndexOf равно номеру места, на котором находится нужная строка (нумерация идет с нуля). Если такой строки вообще нет, то свойство IndexOf будет равно -1.

Методы Add и Insert служат для добавления строк в конец и на определенное место соответственно. Вот пример их применения:

//Добавление в конец списка.

Memo1.Lines.Add('Roma');

//Добавление на второе место.

Memo1.Lines.Insert(2, 'Berlin');

Удаление элемента с определенного места делаем методом Delete. Вот пример его использования:

var

i:Integer;

...

//Получаем номер элемента Roma.

i:= Memo1.Lines.IndexOf('Roma');

//Если элемент существует.

if i> -1 then

Memo1.Lines.Delete(i);

В этом примере мы сначала выясняем, на каком месте находится строка ‘Roma’, и затем удаляем ее (конечно, если она есть).

    1. Компонент StringGrid

Компонент StringGrid предназначен для отображения и хранения текстовой информации в виде таблицы. Расположен он на вкладке Additional Палитры компонентов:

Размер таблицы определяется свойствами ColCount и RowCount. Они задают количество столбцов и строк соответственно. При необходимости эти свойства можно менять и программно. Размеры же ячеек в пикселах задают свойства DefaultColWidth и DefaultRowHeight. Если же надо задать размер некоторого столбца или некоторой строки отдельно, то надо воспользоваться свойствами ColWidths или RowHeights соответственно. Вот пример, в котором мы задаем для первого столбца ширину в 40 пикселов:

StringGrid1.ColWidths[0]:=40;

Как видно, нумерация идет с нуля.

Свойства FixedCols и FixedRows определяют, сколько столбцов и строк будут использоваться для названий столбцов и строк. По умолчанию эти два свойства равны единице. Такие столбцы и строки выделяются серым цветом (это определяет свойство FixedColor) и при прокрутке нашей таблицы остаются зафиксированными. В принципе их можно использовать как угодно, но чаше всего в них помещают названия столбцов и строк.

Для того чтобы получить доступ к некоторой ячейке, надо использовать свойство Cells. Вот пример, в котором мы записываем во вторую строчку второго столбца значение ‘abcd’:

StringGrid1.Cells[1,1]:='abcd';

При необходимости можно работать и со строками или столбцами целиком. Для работы со строками надо использовать свойство Rows, а со столбцами - Cols. Скажем, вот так можно целиком скопировать вторую строки в третью (помните, что нумерация идет с нуля):

StringGrid1.Rows[2]:=StringGrid1.Rows[1];

Например, это может понадобиться при удалении некоторой строки из таблицы - в этом случае следующие за ней строки должны "подняться" наверх на один ряд каждая.

Множество важных параметров компонента StringGrid являются подсвойствами свойства Options:

Вот некоторые из них. Подсвойство goEditing отвечает за возможность редактирования ячеек таблицы. Если это свойство установить в true, то редактирование возможно (путем двойного щелчка на нужной ячейке). Подсвойство goRowSelect, если оно установлено в true, то при щелчке на ячейке выделяется весь ряд. Установленное в true подсвойство goTabs позволяет перемещаться между ячейками посредством клавиши TAB. Если вы хотите позволить пользователю изменять размеры столбцов путем перетаскивания границ у заголовков, то установите значение подсвойства goColSizing в true.

Одна из частых задач - это получение информации, в какую из ячеек пользователь внес изменения. Для определения этого надо воспользоваться обработчиком события OnSetEditText для StringGrid:

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,

ARow: Integer; const Value: String);

begin

Form1.Caption:=IntToStr(ACol) + ' ' + IntToStr(ARow);

end;

Как видно, номера строки и столбца измененной ячейки передаются в параметры ACol и ARow.