![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите пожалуйста как можно сделать жирным текст только в первом столбце Stringgrida?? пробовал так:
Код:
procedure TMainForm.SGDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol=0) then SG.Font.Style:=[fsBold]else SG.Font.Style:=[]; end; |
|
#2
|
||||
|
||||
|
Вот это работает хорошо (свойство DefaultDrawing установлено в false), естественно нужно еще обрабатывать прорисовку фиксированных столбцов/колонок.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
//Выделим ячейку (3,3) цветом, а остальные зеленые
if (ACol=3) and (ARow)=3 then
(Sender as TStringGrid).Canvas.Brush.Color:=clRed
else
(Sender as TStringGrid).Canvas.Brush.Color:=clGreen;
(Sender as TStringGrid).Canvas.FillRect(Rect);
//Текст третьего столбца - жирным
if ACol=1 then
(Sender as TStringGrid).Canvas.Font.Style:=[fsBold]
else
(Sender as TStringGrid).Canvas.Font.Style:=[];
(Sender as TStringGrid).Canvas.TextOut(Rect.Left,Rect.Top,(Sender as TStringGrid).Cells[ACol,ARow]);
end;Последний раз редактировалось Aristarh Dark, 14.12.2006 в 06:35. |
|
#3
|
||||
|
||||
|
Изменить цвет ячейки, цвет текста, стиль, шрифт и т.д, добавить значок в ячейку Можно сделать в обработчике TStringGrid(TDrawGrid).onDrawCell:
Примерно так: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin With TStringGrid(Sender),TStringGrid(Sender).Canvas Do Begin // Очистим клиентскую область ячейки FillRect(Rect); // Аттрибуты Brush.Color:=ClYellow; // цвет ячейки Font.Color:=ClBlue; // цвет шрифта Font.Style:=[fsBold]; // стиль шрифта Font.Size:=14; // размер шрифта // Добавить картинку можно нарисовав её через метод TCanvas.Draw: // Draw(Rect.Left + 2, Rect.Top + 2, значок); // А теперь выведем текст TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol,ARow]); End; end; |