Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Надо! Выделить! цветом! запись! в DBGrid!


Автор: Oleg 23.3.2003, 00:28
Нечего не понимаю, вот смотрите:
...
procedure TfmMain.dbgInstViewDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (dm.Inst['ICstatus'] = 'Успешно') -- поле
and not (gdSelected in State)
then with dbgInstView.Canvas do begin -- канва DBGrid
Brush.Color:= clGray;
FillRect(Rect);
Font.Color:= clWhite;
TextOut(Rect.Left+2, Rect.Top+2, Column.Field.Text);
end else
dbgInstView.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
...
почему выделяются не одна запись, а еще и соседние, 1 сверху и 1 снизу,
то есть обрабатывается не один TRect, а три!??
везде где dm.Inst['ICstatus'] = 'Успешно'


Автор: man2002ua 25.3.2003, 19:21
попробуй убрать проверку "Успешно". Я без нее скопировал - все впорядке. Может у тебя это поле как то неправильно отображается?

Автор: Step 25.3.2003, 19:25
видать ты не правильно канвас получаеш, раз он лишнии ячейки загребает

Автор: Cashey 26.3.2003, 07:50
На какой Дельфе делаешь? Я на 7-ой попробовал все тип-топ.
Вот смотри твой код:
Код

type
procedure DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);

begin
if (Form1.Table1['name'] = '1') { поле }
and not (gdSelected in State)
then with Form1.DBGrid1.Canvas do begin { канва DBGrid}
Brush.Color:= clGray;
FillRect(Rect);
Font.Color:= clWhite;
TextOut(Rect.Left+2, Rect.Top+2, Column.Field.Text);
end else
Form1.DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)