Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Вниз

Как выделить текущую строку в DBGrid?   Найти похожие ветки 

 
ksa   (2003-04-11 13:40) [0]

Имеется DbGrig, хочется выделить текущую строку цветом, если установить свойство dgRowSelect, то если прокрутить сетку вправо и щелкнуть на ячейке, сетка автоматом прокручивается к первому столбцу.


 
Abrams   (2003-04-11 13:45) [1]

Обрабатываешь событие DBGridDrawColumnCell
и пишешь там что-нить в этом роде:

if gdSelected in state then
with DBGrid.Canvas do
begin
Font.Color := clYellow;
Brush.Color := clBlack;
end;
DBGrid.DefaultDrawDataCell(Rect, Column.Field, State);


 
ksa   (2003-04-12 08:45) [2]

Проблема как раз в том, что условие (gdSelected in state) выполняется только на текщей ячейке, а мне нужно выделить всю строку...


 
ЮЮ   (2003-04-12 09:34) [3]

Вариант1. В АfterScroll-e DataSet-а запоминать значение ключевого поля, а в DrawDataCell-e DBGrid-a сраниваем это значение со значением ключевого поля отрисовываемой записи


 
Шаман   (2003-04-12 10:42) [4]

А еще проще поставить InfoPower 3000, благо кряков под него тьма, и глазу приятно и по пустякам напрягатся нестоит.


 
Цук   (2003-04-12 10:44) [5]

Вариант ЮЮ не самый лучший т.к. прои нажатии Page Down или Page Up или при прокрутке колесиком мышки курсор переходит а полоса остается.


 
Alexandr   (2003-04-12 11:13) [6]

пользуйся на здоровье

type
THackDBGrid = class(TDBGridEh)
property DataLink;
property UpdateLock;
end;



procedure TForm1.MyGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
var
Selected: Boolean;
begin
if INI1.currentLine then
begin
Selected := THackDBGrid(Sender).Datalink.Active and (THackDBGrid(sender).Row
- 1 = THackDBGrid(sender).Datalink.ActiveRecord);
if Selected then
begin
BackGround := INI1.FonCurrentLine;
end;
end;
end;



 
grusty   (2003-04-13 13:29) [7]

Abrams абсолютно прав. Единственное что - необходимо у DBGrid свойство Options/dgRowSelect установить в True. Тогда будет выделяться вся строка.
Другой вариант - это скачать библиотеку EhLib, где присутствует отличный компонент DBGridEh и у него обработать событие OnDrowColumnCell следующим образом:

if Rect.Top=DBGridEh2.CellRect(DBGridEh2.Col,DBGridEh2.Row).Top then DBGridEh2.Canvas.Brush.Color:=clAqua;
DBGridEh2.DefaultDrawColumnCell(Rect,DataCol,Column,State);



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

Форум: "Базы";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
3-480
Dick
2003-04-14 16:30
2003.05.01
Access и blobs


3-411
Солер
2003-04-10 16:05
2003.05.01
ADO замучил - ночи не сплю


3-395
Wedos
2003-04-11 12:31
2003.05.01
Сортировка строк в гриде


14-791
pasha_golub
2003-04-15 17:31
2003.05.01
Лень


14-673
sid
2003-04-12 00:58
2003.05.01
DBChart Парни помогите. Как открыть(показать) 2-ой график





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский