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

Вниз

Выделение строк в DBGrid   Найти похожие ветки 

 
Белочка   (2008-06-10 07:26) [0]

Доброе утро.

Не нашла информации по этой теме, поэтому хотелось бы спросить реально ли это сделать и если да, то как

У меня база на SQL Server 2000. Я связываю его с дельфи через ADO и вывожу информацию в DBGrid. Можно ли раскрасить строки таблицы по какому-нибудь признаку.

Например я вывожу в DBGrid поля id, name, count(distinct item), причем у последнего столбца свойство visible = false. Нужно всем строкам, у которых count(distinct item) > 10 сделать одного цвета (заливка/шрифт или еще как-нибудь - не важно), а оставшиеся можно оставить такими, какие они есть. Можно так сделать?


 
Sergey13 ©   (2008-06-10 08:34) [1]

> [0] Белочка   (10.06.08 07:26)
> Не нашла информации по этой теме

Поищи на королевстве Делфи статью "Полосатый грид".


 
stas ©   (2008-06-10 08:50) [2]

событие в гриде onDrawColumnCell
procedure TfmSpSost.DBGridEh1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumnEh;
 State: TGridDrawState);
Var Clb,Clf:TColor;
  begin
CLb:=tbSpsost.FieldByName("CVET").AsInteger;
clf:=clWhite-clb;
TDBGrideh(Sender).Canvas.Brush.Color:=clb;
TDBGrideh(Sender).Canvas.Font.Color:=clf;

// выделение
IF  gdSelected IN State
Then Begin
TDBGrideh(Sender).Canvas.Brush.Color:= clHighLight;
TDBGrideh(Sender).Canvas.Font.Color := clHighLightText;
End;
// отрисовка
TDBGrideh(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;


 
MsGuns ©   (2008-06-10 09:04) [3]

>stas ©   (10.06.08 08:50) [2]
>CLb:=tbSpsost.FieldByName("CVET").AsInteger;

И реально "полосатый" ?


 
Плохиш ©   (2008-06-10 10:32) [4]


> Белочка   (10.06.08 07:26)  
> Не нашла информации по этой теме

Так и говори, что и не искала.
Твой вопрос в яхуу и первая же ссылка.


 
stas ©   (2008-06-10 12:10) [5]

MsGuns ©   (10.06.08 09:04) [3]
А в чем вопрос?


 
MsGuns ©   (2008-06-10 12:27) [6]

>А в чем вопрос?

Вопрос задан. Поясню. Отмечаются все строки, записи в которых удовлетворяют условию выделения или только текущая ?
Ответа нет.


 
stas ©   (2008-06-10 12:32) [7]

В приведенном мной примере красятся все строки, в цвет, код котого записан в tbSpsost.FieldByName("CVET").AsIntegerТекущая красится в clHighLight.
Непонимаю что смущает?


 
MsGuns ©   (2008-06-10 12:48) [8]

Смущает выделенное в [3]
Я полагал, что обращение к датасету таким образом всегда будет адресоваться к ТЕКУЩЕЙ записи датасета, а не ко всем отображаемым в сетке.
Я делал так:

CLb:=TDBGrid(Sender).DataSource.DataSet.FieldByName("CVET").AsInteger;

Кстати в вішеупомянутой статье используется именно "мой" способ ;)


 
ЮЮ ©   (2008-06-10 12:52) [9]

> Я полагал, что обращение к датасету таким образом всегда
> будет адресоваться к ТЕКУЩЕЙ записи датасета, а не ко всем
> отображаемым в сетке.


TDBGrid(Sender).DataSource.DataSet и tbSpsost это один и тот жн датасет. (при соответсветствующих настройках, естественно).
А текущая запись датасета (в обработчике рисования) соответствует именно рисуемой записи.


 
MsGuns ©   (2008-06-10 13:05) [10]

>ЮЮ ©   (10.06.08 12:52) [9]

Спасибо за пояснение. ;))


 
stas ©   (2008-06-10 13:24) [11]

MsGuns ©   (10.06.08 13:05) [10]

при отрисовке грида датасет прокручивается.
TDBGrid(Sender).DataSource.DataSet -
это более универсально не спорю, у меня такой надобности не возникало.



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
1-1200230813
Fixi4eeG
2008-01-13 16:26
2009.01.18
Всплывающее окошко/подсказка из трея


15-1227012127
NoDt
2008-11-18 15:42
2009.01.18
Вывод пути через матрицу последовательности узлов Алгоритм Флойда


2-1228229287
Marixa
2008-12-02 17:48
2009.01.18
Календарь нв Delphi


4-1204522266
uroksan
2008-03-03 08:31
2009.01.18
считывание данных через Usb


2-1228144157
Mozgan
2008-12-01 18:09
2009.01.18
Как расчитать процент?