Расширенные возможности по оформлению сетки

 

Ключевым событием сетки изображений считается событие, возникающее в момент перерисовки ячейки сетки:

propertyOnDrawCell: TDrawCellEvent;

TDrawCellEvent = procedure(Sender: TObject; ACol, ARow: Longint;

Rect: TRect; State: TGridDrawState) of object;

 

Обработчик этого события будет вызываться только в случае, если отключена (установлена в false) прорисовка по умолчанию:

propertyDefaultDrawing: Boolean;

 

Рисование осуществляется на холсте сетки изображений. Свойство Canvas

унаследовано от класса TCustomControl.

propertyCanvas: TCanvas;

 

Параметры события OnDrawCell() описаны в табл. 8.7.

Таблица 8.7. Параметры метода OnDrowCell()

 

Параметр Назначение параметра
Sender Элемент управления.
ACol, ARow Координаты ячейки.
Rect Прямоугольная область соответствующей ячейки.
State gdSelected-ячейка выбрана gdFocused-ячейки в фокусе gdFixed- ячейка в фиксированной области

 

 

Воплотим приобретенные знания в исходный код. Разместим на форме компонент TDrawGrid, зададим размерность сетки: 1000 колонок на 1000 строк. Размер ячеек (DefaultColWidth и DefaultRowHeight): 5×5 пикселов. Переведем свойство DefaultDrawing в false и опишем обработчик события OnDrawCell() так, как предложено в следующем примере:

procedureTForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

varCellColor : TColor;

Begin

WithDrawGrid1.canvas do

Begin

CellColor:=COLOR_ENDCOLORS + 1 +(ACol*DrawGrid1.RowCount)+(ARow);

Brush.color:=CellColor;

FillRect(Rect);

end;

end;

 

В результате ячейки сетки заливаются цветами из переменной CellColor.

Сетка строк – компонент TStringGrid

 

Как уже упоминалось, основное отличие сетки строк от сетки изображений

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

propertyCells[ACol, ARow: Integer]: string;

 

Это не что иное, как инкапсулированный в сетку набор TStrings, представленный в виде двумерного массива строк размерностью, определенной количеством столбцов и строк [0..ColCount-1, 0..RowCount-1].

StringGrid1.Cells[5,5]:=’Привет’; Еще один способ доступа к столбцу/строке реализован через свойства:

propertyCols[Index: Integer]: TStrings; //элементы колонки Index

propertyRows[Index: Integer]: TStrings; //элементы ряда Index

 

Например, таким образом можно заполнить шапку таблицы.

procedureTForm1.FormCreate(Sender: TObject);

varSL:TStringList;

Begin

SL:=TStringList.Create;

SL.Add(''); SL.Add('Кол. 1'); SL.Add('Кол. 2'); SL.Add('Кол. 3');

StringGrid1.Rows[0]:=SL;

SL.Clear;

SL.Add(''); SL.Add('Ряд 1'); SL.Add('Ряд 2'); SL.Add('Ряд 3');

StringGrid1.Cols[0]:=SL;

SL.free;

end;

 

Помимо строк сетка TStringGrid согласна хранить ссылки на объекты. Ссылки также размещаются в массиве и доступны через свойство:

propertyObjects [ACol, ARow: Integer]: TObject;

 

Пожалуй, наступило время серьезного эксперимента. Попробуем собрать

в сетку картинки из набора Delphi (по умолчанию они расположены в каталоге C:\Program Files\Common Files\Borland Shared\Images\Buttons). Для

этого откройте новый проект и разместите в нем сетку строк TStringGrid.

Проведите с ее свойствами следующие манипуляции:

ColCount:=10; RowCount:=20; Align:=alClient. Теперь вернитесь к форме, найдите в Инспекторе объектов событие OnCreate() и опишите его, как предложено в листинге:

procedureTForm1.FormCreate(Sender: TObject);

varBmpPath: string;

SR: TSearchRec;

I,aCol,aRow: integer;

BMP: TBitmap;

Begin

BmpPath:='С:\Program Files\Common Files\Borland Shared\Images\Buttons\';

aCol:=0; aRow:=0;

I:=FindFirst(BmpPath+'*.bmp',faAnyFile,SR);

whileI=0 do

Begin

StringGrid1.Cells[aCol,aRow]:=SR.Name;

BMP:= TBitmap.Create; //создаем объект

StringGrid1.Objects[aCol,aRow]:=BMP; //связываем объект с ячейкой








Дата добавления: 2016-03-15; просмотров: 586;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.