Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

Как сделать, чтоб в DBGridEh (из EhLib)   Найти похожие ветки 

 
Mishenka   (2006-09-14 10:24) [0]

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


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

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


 
atruhin ©   (2006-09-14 13:46) [2]

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

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


 
ЮЮ ©   (2006-09-15 04:18) [3]

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

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


 
atruhin ©   (2006-09-15 05:35) [4]

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

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

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


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

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


 
MsGuns ©   (2006-09-15 11:25) [6]

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

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


 
K_Lock ©   (2006-09-15 12:50) [7]

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;


 
atruhin ©   (2006-09-15 13:42) [8]

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

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


 
MsGuns ©   (2006-09-15 17:26) [9]

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

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

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

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


 
Reindeer Moss Eater ©   (2006-09-15 17:33) [10]

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
15-1159833326
GameDev
2006-10-03 03:55
2006.10.29
Использование пиратских Windows 9x больше не является преступлени


1-1158758605
DVM
2006-09-20 17:23
2006.10.29
Убрать символ & при считывании Caption MenuItema?


2-1160833820
sss1
2006-10-14 17:50
2006.10.29
запуск программы 1 раз


4-1150363747
jiny
2006-06-15 13:29
2006.10.29
Как запустить EXE находящийся в виде потока TMemorySTream


15-1160483134
SergP.
2006-10-10 16:25
2006.10.29
В чем могут быть проблемы если Oracle 9i не ставится?