Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Компонент TDrawGrid






TDrawGrid

 

Как и TStringGrid компонент TDrawGrid предназначен для отображения информации в виде таблицы и, в дополнение можно расположить в ячейках графическую информацию. Свойства компонента аналогичны TStringGrid. У данного компонента имеются следующие методы:

 

function CellRect (ACol, ARow: LongInt): TRect;

- возвращает координаты ячейки ACol, ARow;

 

procedure MouseToCell (x, y: Integer; var ACol, ARow: LongInt);

- возвращает табличные координаты ячейки ACol, ARow по экранным координатам;

 

С данным компонентом связаны события:

OnDrawCell

- возникает при необходимости перерисовать ячейку с табличными координатами ACol, ARow;

 

OnGetEditText

- возникает при редактировании текста в ячейке ACol, ARow;

 

OnSetEditText

- возникает при завершении редактирования ячейки ACol, ARow;

Пример. Рассмотрим пример, как показать текст и картинки одновременно, причем чтобы текст можно редактировать.

В секции public введем переменную ListMap типа TStringList. В этой переменной будем хранить список имен файлов с картинками. В обработчике FormCreate создадим и наполним список ListMap.

 

Procedure TForm1.FormCreat();

const

FNames: array[0..3] of String = (‘1.bmp’, ‘2.bmp’, ‘3.bmp’,

‘4.bmp’);

Var

k: Integer;

begin

//создадим список строк

ListMap: = TStringList.Create;

//вставим в список названия файлов и сами картинки

for k: =0 to 3 do

begin

ListMap.Add(FNames[k]);

ListMap.Objects[k]: = TBitmap.Create;

(ListMap.Objects[k] as TBitmap).LoadFromFile(FNames[k]);

end;

end;

 

Далее поместим на форму компонент DrawGrid1 и установим следующие его свойства:

 

ColCount = 2;

RowCount = 2;

FixedCols = 0;

FixedRows = 0;

Options.Editing = true;

 

Создадим для компонента DrawGrid обработчики:

 

Procedure TForm1.DrawGrid1GetEditText (Sender: TObject; ACol,

ARow: Integer; var Value: String);

//передает для редактирования текст из ячейки

begin

Value: = ListMap[2*ACol + ARow];

end;

 

Procedure TForm1.DrawGrid1SetEditText (Sender: TObject; ACol,

ARow: Integer; Value: String);

//процедура получает текст из редактора и сохраняет его в списке ListMap

begin

ListMap[2*ACol + ARow]: = Value;

end;

 

Procedure TForm1.DrawGrid1DrawCell(Col, Row: Integer; Rect: TRect);

//рисует картинку из списка ListMap.Objects и текст из ListMap

var

k: integer;

begin

//пересчитываем координаты ячейки Col, Row в индекс списка

k: = 2*Col + Row;

//уменьшаем размер ячейки таблицы с возможностью вывода в нее текста

Rect.Bottom: =Rect.Bottom-DrawGrid1.Canvas.TextHeight(‘1’)-1;

//рисуем картинку

DrawGrid1.Canvas.StretchDraw(Rect, ListMap.Objects[k] as

TBitmap);

//выводим текст

DrawGrid1.Canvas.TextOut(Rect.Left, Rect.Bottom - 1,

ListMap[k]);

end;

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.