![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разукраска DBGrid а [D7]
Andrushk © (2003-01-31 10:30:00)В Grid"е включен MultiSelect, RowSelect=false, выделено несколько строк, как в обработчике перерисовки, узнать какие строки выделены? Через State можно узнать толко ту ячейку, на котой стоишь, а как сделать через TDBGrid(Sender).SelectedRows я никак не соображу.
Andrushk (2003-01-31 11:39:00) [1]а блин понял
все
СПАСИБО
Andrushk (2003-01-31 11:35:00) [2]//Андрю-ХА!
Тезка? :-)
А зачем DBGrid1KeyDown?
Но ведь у Грида есть свой механизм запоминания выделенных записей, им нельзя воспользоваться?
Андрю-ХА! (2003-01-31 11:04:00) [3]//Андрю-ХА! (31.01.03 10:50)
вдогонку: в моем примере columns"ы добавлены в design-time и добавлен column не связанный ни с каким полем. вот в него-то на OnDraw и выводится знак "+" или "-" (if Column.Field = nil then)
Андрю-ХА! (2003-01-31 10:50:00) [4]Свойство TDBGrid(Sender).SelectedRows.CurrentRowSelected: Boolean
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_INSERT then
with DBGrid1.SelectedRows do
begin
CurrentRowSelected := not CurrentRowSelected;
DataSet1.Next;
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field = nil then
if DBGrid1.SelectedRows.CurrentRowSelected then
DBGrid1.Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, "+") else
DBGrid1.Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, "-")
end;