Компоненты StringGrid и DrawGrid. Редактирование значений в DrawGrid. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Компоненты StringGrid и DrawGrid. Редактирование значений в DrawGrid.



Компонент Таблица строк (TStringGrid)

Использование многими пользователями электронных таблиц типа Excel стало

практически неотъемлемой частью применения компьютеров. В системе Delphi 7

имеются два компонента, которые позволяют до некоторой степени сымитировать

работу электронной таблицы, оставляя при этом, конечно, основную работу по

реализации конкретных функций такой таблицы программистам.

Первый компонент — это таблица строк, позволяющая работать с текстовой

информацией в двумерной таблице, имеющей столбцы и строки (их размеры

можно менять с помощью мыши). Дополнительно, к каждой ячейке таблицы можно

''привязать'' свой объект, характеристики которого программист представит в виде

строки, расположенной в этой ячейке.

Основное свойство таблицы строк — это двумерный массив Cells, позволяющий

обращаться к содержимому ячеек и изменять их содержимое. Первое измерение -

это номер строки, второеномер столбца.

ЗАМЕЧАНИЕ Нумерация элементов в таблице строк начинается с нуля.

Число столбцов задается в свойстве ColCount, число строк — в свойстве RowCount.

 

Следующий код программы изменяет размер таблицы, помещенной на форму в

режиме проектирования (по умолчанию принят размер 5x5 элементов), на размер 10x10 ячеек и заполняет ячейки строками, содержащими их координаты (рис, 4.5, стр 231)

 

procedure TForml.FormCreatefSender: TObject);

var с,r: integer;

begin

StringGridl.ColCount:= 10;

StringGridl.RowCount:= 10;

for с:= 0 to StringGridl.ColCount-1 do

for r:= 0 to StringGridl.RowCount-1 do

StringGridl.Cells[c,r]:=

'(' + IntToStr(c) + ', ' + IntToStr(r) + ')';

end;

Обратите внимание, что левый столбец и верхняя строка, хотя и содержат текстовую информацию, фактически являются заголовочными областями. Использовать их наравне с другими ячейками не совсем правильно.

ЗАМЕЧАНИЕ Число строк и столбцов, имеющих характер заголовка, задается

свойствами FixedCols и FixedRows. Если таблица не содержит заголовочной информации, эти свойство должны принимать значение 0.

 

Можно получить доступ ко всем элементам одного столбца или одной строки. Соответствующие свойства Col и Row имеют тип TStrings, позволяющий обращаться к

нужному элементу по номеру.

Чтобы привязать к ячейке объект (наследник класса TObject), надо использовать

свойство Objects, представляющее собой такой же массив, как Cells, но содержащий

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

полностью возлагается на разработчика. Свойство Objects предоставляет только

доступ к нужному объекту. Остальные свойства, предназначенные для оформле-

ния таблицы строк, приведены ниже

 

SorderStyle

Стиль отрисовки ячейки. Значение этого свойства можно комбинировать со

значением свойства Ctrl3D для получения оригинального вида ячеек

Ctrl3D

Таблица представляется в ''трехмерном'' стиле

ColWidths

Массив, хранящий ширину каждого столбца в пикселах

DefaultColWidt h

Начальная ширина столбца по умолчанию

DefaultDrawing

Если значение свойства — True, производится автоматическая отрисовка

содержимого каждой ячейки. В противном случае для таблицы необходимо

определить обработчик события OnDrawCell чтобы запрограммировать процесс

отрисовки ячейки

DefaultRowHeight

Начальная высота строки по умолчанию

FixedColor

Цвет области строк и столбцов, служащих заголовком таблицы

GridHeight

Высота всей таблицы (в пикселах)

GridLineWidth

Ширина (в пикселах) линий, разделяющих ячейки таблицы

GridWidth

Ширина всей таблицы (в пикселах}

Options

Множество значений (тип set of TGridOption }, позволяющее задавать различные

режимы работы таблицы: выделение нескольких ячеек, способ использования

линий прокрутки и прочие. В частности, чтобы разрешить изменение размеров

строк и столбцов, надо установить значение True для свойств goRowSizing и

goColSizing, вложенных в свойство Options. Чтобы разрешить редактирование

содержимого ячеек, надо записать значение True в подсвойство goEditing

RowHeights

Массив, хранящий высоту каждой строки в пикселах

ScrolLBars

Наличие полос прокрутки

VisibleColCount

Число видимых в таблице столбцов (без области заголовка)

 

Чтобы установить для просмотра нужную область таблицы, надо задать номер начальной строки в свойстве TopRow, а номер начального столбца — в свойстве LeftCol.

Область заголовков при этом не изменяется. Например, расположив на форме

кнопку и включив указанные далее операторы в обработчик щелчка, можно быстро

прокрутить таблицу к ячейке (3,5), которая будет расположена в верхнем левом

углу таблицы под заголовком (рис. 4.6, стр 233),

procedure TForml.ButtonlClick(Sender: TObject),-

Begin

StringGridl. LeftCol:= 3;

StringGridl.TopRow:= 5;

End;

Чтобы выделить прямоугольную область ячеек (или одну ячейку) другим цветом,

надо использовать свойство Selection. Оно доступно только во время работы про-

граммыи имеет тип TGridRect, напоминающий тип TRect.

Например, если требуется по щелчку на кнопке Buttonl выделить область от ячейки

(2,2) до ячейки (3,5), надо выполнить следующие операторы.

procedure TForml.ButtonlClick(Sender: TObject);

Var GRect: TGridRect;

begin

GRect.Left:= 2;

GRect.Top:= 2;

GRect.Right:= 3;

GRect.Bottom:= 5;

StringGridl.Selection:= GRect;

end;

ВНИМАНИЕ Чтобы такое выделение работало, необходимо в свойстве Options

включить подсвойство goRangeSelect (установить значение True).

 

Если запустить описанный пример, то после выделения группы ячеек окажется,

что нижняя ячейка (3,5), которая была автоматически сделана текущей, не подсве-

чена. Чтобы текущая ячейка таблицы выделялась отдельным цветом, надо подсвойству goDrawFocusSelected свойства Options задать значение True. Можно также

программно включить его в множество Options.

.StringGridl.Options: =StringGridl.Options + [goDrawFocusSelected];

Экранные координаты конкретной ячейки (в пикселах) определяются с помощью

метода (функции) CellRect, которая, получая в качестве первого параметра номер

столбца, а в качестве второго — номер строки, возвращает структуру типа TRect с

координатами прямоугольника, охватывающего заданную ячейку. Если эта ячейка

невидима, то все поля структуры будут иметь значения 0.

Обратный пересчет осуществляется вызовом процедуры MouseToCeLL

 

procedure MouseToCell

(X, Y: Integer; var ACol, ARow: Longint);

 

Здесь X и Y — экранные координаты точки, а значения, возвращаемые через параметры ACoL и ARow (передаваемые по ссылке), соответствуют номерам столбца и строки для ячейки, содержащей эту точку.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 850; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.177.223 (0.01 с.)