Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 692

/ вопрос решён /

Здравствуйте, уважаемые эксперты!
вопрос такой: Можно ли в компаненте ТstringGrid поменять цвет одной ячейки или изменить шрифт в одной ячейке?

Stepani4 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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';
...

Приложение:
  1. procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  2. Rect: TRect; State: TGridDrawState);
  3. var OldFont: String;
  4. OldFontColor, OldBrushColor: TColor;
  5. OldFontSize: integer;
  6. begin
  7. OldFont:=StringGrid1.Canvas.Font.Name;
  8. OldFontColor:=StringGrid1.Canvas.Font.Color;
  9. OldBrushColor:=StringGrid1.Canvas.Brush.Color;
  10. OldFontSize:=StringGrid1.Canvas.Font.Size;
  11. if (ACol=1) and (ARow=1) then
  12. begin
  13. StringGrid1.Canvas.Font.Name:='Tahoma';
  14. StringGrid1.Canvas.Brush.color := clYellow;
  15. StringGrid1.Canvas.Font.Color:= clRed;
  16. StringGrid1.Canvas.Font.Size:=14;
  17. StringGrid1.Canvas.FillRect(Rect);
  18. StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
  19. end else
  20. begin
  21. StringGrid1.Canvas.Font.Name:=OldFont;
  22. StringGrid1.Canvas.Brush.color := OldBrushColor;
  23. StringGrid1.Canvas.Font.Color:= OldFontColor;
  24. StringGrid1.Canvas.Font.Size:=OldFontSize;
  25. StringGrid1.Canvas.FillRect(Rect);
  26. StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
  27. end;
  28. end;
  29.  


Ответ отправил: Градов Ю.М. (статус: 8-ой класс)
Время отправки: 2 июля 2007, 19:42
Оценка за ответ: 5

Ответ #3. Отвечает эксперт: Матвеев Игорь Владимирович

Здравствуйте, Stepani4!
Изменить цвет, шрифт или его начертание нельзя! Можно только изменить функцию отрисовки компонента, примеров чему полно на всех программерских сайтах.

Изучайте исходники VCL.

Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 3 июля 2007, 03:25
Оценка за ответ: 3

Комментарий к оценке: было бы Время изучил...:)

Мини-форум вопроса

Всего сообщений: 0.

31 января 2011, 20:00: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.02 сек.