Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать, чтоб в DBGridEh (из EhLib) [D6, Win2k]


Mishenka ©   (2006-09-14 10:24:00) 

Как в TDBGridEh (из EhLib) менять цвет строки в зависимости от её содеожимого?


Reindeer Moss Eater   (2006-09-15 17:33:00) [1]

Я не могу разобраться как из OnGetCellParams и других подобных событий получить доступ к значению других полей той же записи, чтоб проанализировать их значение...

Филд ячейки есть?
Есть.
Field.DataSet.FieldByname('Нужный_тебе_Другой_Филд')

Либо просто в лоб
ЗаранееИзвестныйДатасетНеМиллионжеИхУТебя.FieldByName('ТоСамоеПоле')


MsGuns   (2006-09-15 17:26:00) [2]

>K_Lock ©   (15.09.06 12:50) [7]

Не надо советовать ерунды.

>atruhin ©   (15.09.06 13:42) [8]
>Гораздо лучше это реализованно в VTV

А в ВДВ еще лучше. Там автоматы даже дают. И береты.


atruhin   (2006-09-15 13:42:00) [3]

> С помощью вот этих нехитрых прибамбасов можно заставить
> грид не только красить ячейки и их содержимое всеми цветами
> радуги, но даже малевать в титуле или ячейках картинки и
> анимацию.

Это то я понимаю, и для частной задачи это легко решается. Проблемма начинается когда нужно универсальное решение. Приходится руками реализовывать корректный вывод всех типов данных.
Гораздо лучше это реализованно в VTV, там при вызове DoPaintText передается настроенный TCanvas далее достаточно переопределить фонт, цвета и вызвать обработчик по умолчанию.


K_Lock   (2006-09-15 12:50:00) [4]

procedure TForm1.GridEhDrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumnEh;
 State: TGridDrawState);
begin
  with GridEh.Canvas do
   begin
     Brush.Color := clWhite;
     FillRect(Rect);
     TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
     if (gdSelected in State) then
       begin
         Brush.Color := clNavy;
         FillRect(Rect);
         Font.Color := clWhite;
         TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
       end;
     if (NOT GridEh.Focused) AND (gdSelected in State) then
       begin
         Brush.Color := DefaultColor;
         FillRect(Rect);
         Font.Color := clBlack;
         TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
       end;
  if GridEh.Field[NN].asXXXXXX = YYYYYYYY then
 begin      
   Brush.Color := clXXXXXXX;
             FillRect(Rect);
             Font.Color := clXXXXXXX;
             TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
 end;

   end;
end;


MsGuns   (2006-09-15 11:25:00) [5]

>atruhin ©   (15.09.06 05:35) [4]
>В стандартном гриде, ты можешь только полность отрисовывать данные, но нет возможности, переопределить цвет, шрифт так чтобы дальше Grid отобразил все остальное. Это я и имел ввиду.

"Стандартный" грид имеет св-во TCanvas, у которого, в свою очередь, имеется Font и Brush, а также методы TextOut, Draw... и куча других "рисовательных".
С помощью вот этих нехитрых прибамбасов можно заставить грид не только красить ячейки и их содержимое всеми цветами радуги, но даже малевать в титуле или ячейках картинки и анимацию. Можно даже "научить" грид подпрыгивать и хохотать (я не шучу - именно такой проектец я увидел как-то на олимпиаде по Делфи в Волгограде).


Mishenka   (2006-09-15 10:41:00) [6]

Мне нужно к примеру чтоб если значение одного поля в записи False, то цвет шрифта и фона один, а если True, то другой. Я не могу разобраться как из OnGetCellParams и других подобных событий получить доступ к значению других полей той же записи, чтоб проанализировать их значение...


atruhin   (2006-09-15 05:35:00) [7]

> А TDBGridEh наверняка есть куда нужных обработчиков

В нем возможно. Не разбирался. Я отвечал на фразу:
> Так же, как и в других гридах

В стандартном гриде, ты можешь только полность отрисовывать данные, но нет возможности, переопределить цвет, шрифт так чтобы дальше Grid отобразил все остальное. Это я и имел ввиду.


ЮЮ   (2006-09-15 04:18:00) [8]

DefaultDrawing в False - и все определяешь сам :)

А TDBGridEh наверняка есть куда нужных обработчиков и при DefaultDrawing, например OnGetCellParams


atruhin   (2006-09-14 13:46:00) [9]

> [1] ЮЮ ©   (14.09.06 10:32)

А сам так пробовал? Не будет работать. Так как дальше он переопределяется.


ЮЮ   (2006-09-14 10:32:00) [10]

Так же, как и в других гридах: анализируя содержимое в обработчиках OnDraw... и изменяя либо соответствующие параметры этих обработчиков, либо свойства канваса


Наверх

Титульная страница Поиск, карта сайта Написать письмо