Форум: "Основная";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизКак сделать, чтоб в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.081 c