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