![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Компонент 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;
|