powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Раскраска DbGridEh
9 сообщений из 9, страница 1 из 1
Раскраска DbGridEh
    #39777775
Валерий666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 3 вопроса по этой компоненте:
Можно ли нарисовать и как?
1. треугольник в ячейке в правом верхнем углу, наподобие как в excel заметка или ошибка?
2. Как обрисовать(визуально выделить столбцы) границы двух ячеек, т.е. сейчас есть серая разметка всех ячеек, мне надо визуально расчертить через 2 клетки.
3. Можно ли по условию в одной ячейке, скажем в 3-ей, отрисовать 0-ую(поменять шрифт или фон, не важно)?
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39777791
AndrewP_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для изменения параметра вывода ячейки используй метод:
TDBGidEh1.GetCellParams
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39777835
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewP_,

я с DBGridEh дела имел мало :) но по аналогии с TdxDBGrid/TcxDBGrid отрисовывал бы ячейку сам в событии OnDrawDataCell (вроде)
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39777851
AndrewP_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий666 я с DBGridEh дела имел мало :) но по аналогии с TdxDBGrid/TcxDBGrid отрисовывал бы ячейку сам в событии OnDrawDataCell (вроде)

В DBGridEh для отрисовки цвета фона и шрифта лучше использовать специально для этого созданный метод TDBGidEh1.GetCellParams.
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39777853
Валерий666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewP_,

Метод не важен, важны 3 вопроса, можно ли это реализовать и как?
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39777859
Non-Grata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рисую треугольник как в Excel:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TMainForm.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
    if Column.FieldName='MYFIELD' then
    begin
      DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
      DBGridEh1.Canvas.Pen.Color:=clRed;
      DBGridEh1.Canvas.Brush.Color:=clRed;
      DBGridEh1.Canvas.Polygon([Point(Rect.Right-6,Rect.Top),Point(Rect.Right-1,Rect.Top),Point(Rect.Right-1,Rect.Top+5)]);
    end;
end;
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39778050
Валерий666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-GrataРисую треугольник как в Excel:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TMainForm.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
    if Column.FieldName='MYFIELD' then
    begin
      DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
      DBGridEh1.Canvas.Pen.Color:=clRed;
      DBGridEh1.Canvas.Brush.Color:=clRed;
      DBGridEh1.Canvas.Polygon([Point(Rect.Right-6,Rect.Top),Point(Rect.Right-1,Rect.Top),Point(Rect.Right-1,Rect.Top+5)]);
    end;
end;


Спасибо за наводку!
Не мог понять, почему у меня не работает, оказалось в конце стоит DefaultDrawColumnCell, и он все перерисовывал как хотел.
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39778123
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий666оказалось в конце стоит DefaultDrawColumnCell, и он все перерисовывал как хотел.
Дык, это давно было известно :)
...
Рейтинг: 0 / 0
Раскраска DbGridEh
    #39778138
Валерий666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокВалерий666оказалось в конце стоит DefaultDrawColumnCell, и он все перерисовывал как хотел.
Дык, это давно было известно :)

2-о1 и 3-ий вопрос, по прежнему актуальны. В статье нет ответа ни них, в поисковиках перерыл первые 4-5 страниц.
Нашел код: для раскраски ячейки в зависимости от значения в другой. но он мне не подходит, т.к. обработчик не тот что мне надо и там нету Rect-a

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure Tplangrafik.DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
 AFont: TFont; var Background: TColor; State: TGridDrawState);
begin

// ячейка 4 = 0 то ячейка 8 окрасить в зеленый цвет,
// ячейка 4 = 1 то окрасить ячейку 8 в красный цвет
if Column.Index = 8-1 then
  case DBGridEh1.DataSource.DataSet.Fields[ 4-1 ].AsInteger of
    0: Background := clGreen;
    1: Background := clRed;
  end;
end;




Условно, у меня есть 3 ячейки. 3-я скрыта, и если в ней есть содержимое, то в ячейке 2 надо нарисовать треугольник(пример вверху)...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Раскраска DbGridEh
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]