Использование графики в таблице и списке *
В таблице (StringGrid) можно отображать не только текстовую, но и графическую информацию. Для её вывода необходимо использовать событие OnDrawСell, в котором указывается условие по которому прорисовываются ячейки, например столбец, строка или другая группа ячеек. Областью прорисовки ячейки является параметр Rect (прямоугольная область). Компонент StringGrid имеет свойство Canvas, что позволяет использовать все возможности отображения графики.
Пример 17 Ячейки 2 строки красного цвета, текст находящийся в них желтого цвета, курсив
procedure TForm1.SGDrawCell(Sender:TObject; ACol, ARow:Integer; Rect:TRect; State:TGridDrawState);
begin
if ARow=1 then // условие выбора ячеек (2 строка)
begin
SG.Canvas.Brush.Color:=clRed; // Цвет ячейки красный
SG.Canvas.FillRect(Rect); // Заливка цветом
SG.Canvas.Font.Color:=clYellow; // Цвет текста в ячейке
SG.Canvas.Font.Size:=10; // Размер 10
SG.Canvas.Font.Style:=[fsItalic]; // Курсив
SG.Canvas.TextOut(Rect.Left+2,Rect.Top+2,'Пример'); // Вывод текста
end;
Для прорисовки элемента списка необходимо использовать событие OnDrawItem. Параметр Rect определяет прямоугольную область. Для прорисовки необходимо установить значение свойства Style для списка равным lbOwnerDrawFixed. Параметр Control является ссылкой на список, Index – номер элемента списка.
Пример 18 Список прорисованных цветных системных шрифтов
for i:=0 to Screen.Fonts.Count-1 do // Загрузка списка системных шрифтов ListBox1.Items.Append(Screen.Fonts.Strings[i]);
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with TListBox(Control).Canvas do
begin
Rect.Bottom:=Rect.Bottom-3; // Уменьшение высоты области прорисовки
Brush.Color:=clGray; // Цвет фона
FillRect(Rect); // Заливка фоном
Font.Color:=clYellow; // Цвет шрифтов
Font.Name:=ListBox1.Items[Index]; // Установка названия шрифтов
Font.Size:=14; // Размеры шрифтов
TextOut(Rect.Left+5,Rect.Top+1,ListBox1.Items[Index]); // Вывод названия
end;
end;