|
Вопрос # 692/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
вопрос такой: Можно ли в компаненте ТstringGrid поменять цвет одной ячейки или изменить шрифт в одной ячейке?
 |
Вопрос задал: Stepani4 (статус: Посетитель)
Вопрос отправлен: 2 июля 2007, 17:39
Состояние вопроса: решён, ответов: 3.
|
Ответ #1. Отвечает эксперт: ANBsoft
Здравствуйте, Stepani4!
Если не ошибаюсь, я уже отвечал на подобные вопросы.
Для реализации необходимого нужно в обработчик OnDrawCell вставить примерно следующее:
if (ARow=TStringGrid(Sender).RowCount-1) then begin
TStringGrid(Sender).Canvas.Font.Style:=[fsBold];
TStringGrid(Sender).Canvas.TextRect(Rect,Rect.Left+1,Rect.Top+1,TStringGrid(Sender).Cells[ACol,ARow]);
Exit;
end;
Данный пример будет выводить последнюю строку жирным шрифтом, остальное, думаю, не сложно разобраться.
 |
Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 2 июля 2007, 18:36
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Градов Ю.М.
Здравствуйте, Stepani4!
Посмотрите в приложении, я почти все расписал,
также можно выделять ячейки по значению:
...
OldFontSize:=StringGrid1.Canvas.Font.Size;
if StringGrid1.Cells[ARow,ACol]>'5' then
begin
StringGrid1.Canvas.Font.Name:='Tahoma';
...
Приложение: Переключить в обычный режим- procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
- Rect: TRect; State: TGridDrawState);
- var OldFont: String;
- OldFontColor, OldBrushColor: TColor;
- OldFontSize: integer;
- begin
- OldFont:=StringGrid1.Canvas.Font.Name;
- OldFontColor:=StringGrid1.Canvas.Font.Color;
- OldBrushColor:=StringGrid1.Canvas.Brush.Color;
- OldFontSize:=StringGrid1.Canvas.Font.Size;
- if (ACol=1) and (ARow=1) then
- begin
- StringGrid1.Canvas.Font.Name:='Tahoma';
- StringGrid1.Canvas.Brush.color := clYellow;
- StringGrid1.Canvas.Font.Color:= clRed;
- StringGrid1.Canvas.Font.Size:=14;
- StringGrid1.Canvas.FillRect(Rect);
- StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
- end else
- begin
- StringGrid1.Canvas.Font.Name:=OldFont;
- StringGrid1.Canvas.Brush.color := OldBrushColor;
- StringGrid1.Canvas.Font.Color:= OldFontColor;
- StringGrid1.Canvas.Font.Size:=OldFontSize;
- StringGrid1.Canvas.FillRect(Rect);
- StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
- end;
- end;
-
 |
Ответ отправил: Градов Ю.М. (статус: 8-ой класс)
Время отправки: 2 июля 2007, 19:42
Оценка за ответ: 5
|
Ответ #3. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Stepani4!
Изменить цвет, шрифт или его начертание нельзя! Можно только изменить функцию отрисовки компонента, примеров чему полно на всех программерских сайтах.
Изучайте исходники VCL.
 |
Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 3 июля 2007, 03:25
Оценка за ответ: 3
Комментарий к оценке: было бы Время изучил...:)
|
Мини-форум вопроса
Всего сообщений: 0.
31 января 2011, 20:00: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|