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

Вниз

DBGrid и выделять строчку   Найти похожие ветки 

 
DimonNew   (2004-12-29 15:07) [0]

Привет, подскажите пож-та. В DBGrid можно ставить опцию OnRowSelet, но при этом нельзя редактировать ячейки. Как можно обойти эту ситуацию? В одной статье видел как выделять ячейку самому в DrawColumnCell:
if  gdSelected in State then
begin
TDBGrid(Sender).Canvas.Brush.Color:=clGreen;
TDBGrid(Sender).Canvas.Font.Color:=clWhite;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);

Но здесь только текущая ячейка, а как всю строчку выделить?


 
msguns ©   (2004-12-29 15:09) [1]

Убери if и будет тебе краситься вся строка


 
DimonNew   (2004-12-29 15:16) [2]

Краситься вся таблица.


 
msguns ©   (2004-12-29 15:21) [3]

Проверяй номер строки через TDBGrid.DataSource.DataSet.RecNo=DataSet.RecNo


 
midavik ©   (2004-12-29 15:30) [4]


type THackDBGrid = class(TDBGrid);
type TForm1 = class(TForm)
...........
...........

procedure TForm1.DBGrid1DrawColumnCell
  (Sender: TObject; const Rect: TRect; DataCol: Integer;
   Column: TColumn; State: TGridDrawState);
begin
 if (THackDBGrid(DBGrid1).DataLink.ActiveRecord + 1 =
     THackDBGrid(DBGrid1).Row)
 or (gdFocused in State) or (gdSelected in State) then
 begin
   DBGrid1.Canvas.Brush.Color := clSkyBlue;
   DBGrid1.Canvas.Font.Style := DBGrid1.Canvas.Font.Style + [fsBold];
   DBGrid1.Canvas.Font.Color := clRed;
 end;
end;


 
DimonNew   (2004-12-29 16:19) [5]

msguns ©
Хорошщая идея, только одно и то же с двух сторон, поэтому вся таблица краситься снова. Вот если бы определить номер строки у выделенной ячейки, только не могу найти, тогда бы сработало:
TDBGrid.DataSource.DataSet.RecNo="номер строки выделенной ячейки"


 
DimonNew   (2004-12-29 17:54) [6]

Спасибо всем, особенно midavik ©, на его основе вот , что заработало:
TDBCracker = class(TCustomDBGrid);
with TDBCracker(Sender) do
   if DataLink.ActiveRecord = Row - 1 then
     begin
       Canvas.Brush.Color:=clGreen;
       Canvas.Font.Color:=clWhite;
     end;
   TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
3-1102667724
galexis
2004-12-10 11:35
2005.01.16
Вопрос от недопонимания транзакций.


1-1104246369
markers
2004-12-28 18:06
2005.01.16
QReport


1-1104023591
Narik
2004-12-26 04:13
2005.01.16
Inifiles


14-1104152882
Layner
2004-12-27 16:08
2005.01.16
Приветствую всех! Нужен совет! Есть файл видео в 2 гига.


3-1103040271
Iova
2004-12-14 19:04
2005.01.16
Ошибка обращения к Запросу