Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение цвета текущей строки DBGrid'a [D7]


Страницы:   1 2

Tex ©   (2006-12-18 09:21:00) 

Здравствуйте! В гриде RawSelect = False, AlwaysShowSelecton = True. По определенным причинам, могу использовать только RawSelect = false, но необходимо какое-то выделение текущей строки. Хотелось бы перекрашивать текущую строку в какой-то определенный цвет. Подскажите пожалуйста, как это реализовать. Если можно с кодом, заранее благодарен.


ЮЮ   (2006-12-18 11:49:00) [21]

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
 Field: TField; State: TGridDrawState);
var
 cl: TColor;
begin
 if Field.DataSet.Fields[0].AsInteger = Field.DataSet.tag then begin
   if TDBGrid(Sender).SelectedField = Field then
     cl := clRed
   else
     cl := clYellow;
 end
 else
   cl := TDBGrid(Sender).Color;

 TDBGrid(Sender).Canvas.Brush.Color := cl;
 TDBGrid(Sender).Canvas.FillRect(Rect);
 TDBGrid(Sender).DefaultDrawDataCell(Rect, Field, State);

end;

procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
begin
 DataSet.Tag := DataSet.Fields[0].AsInteger;
 // запоним значение ключевого поля текущей записи
end;


Tex   (2006-12-18 11:30:00) [22]


> ЮЮ ©   (18.12.06 11:23) [14]
> dghRowHighLight OptionsEh прпробовал?


это же DBGridEh... нужно на обычном гриде...


> Плохиш ©   (18.12.06 11:14) [13]


по OnDrawDataCell в справке нет примера...


ЮЮ   (2006-12-18 11:23:00) [23]

dghRowHighLight OptionsEhпрпробовал?


Плохиш   (2006-12-18 11:14:00) [24]


> Tex   (18.12.06 11:07) [12]


OnDrawDataCell (Ereignis von TCustomDBGrid)

TCustomDBGrid Siehe auch Delphi-Beispiel C++ Beispiel


Tex   (2006-12-18 11:07:00) [25]


> Плохиш ©   (18.12.06 10:53) [10]


Не подскажете точнее? Не могу найти ((


Tex   (2006-12-18 10:57:00) [26]

EhLib - shareware компонент. Хотелось бы своими руками. Помогите плиз!


Плохиш   (2006-12-18 10:53:00) [27]


> Tex   (18.12.06 10:20) [7]

А чем пример из справки не устраивает?


ЮЮ   (2006-12-18 10:29:00) [28]

У DBGridEh есть dghRowHighLight OptionsEh для этих целей.


Tex   (2006-12-18 10:21:00) [29]

дада! для DBGrid если не затруднит )


Tex   (2006-12-18 10:20:00) [30]

Спасибо за отзыв! Только вот не нашел в DBGride моем OnDrawCell :(
Есть OnDrawDataCell и OnDrawColumnCell...

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


и

procedure TForm1.DBGridUridDrawDataCell(Sender: TObject; const Rect: TRect;
 Field: TField; State: TGridDrawState);


Может их и не надо использовать. Помогите разобраться, пожалуйста...


ЮЮ   (2006-12-18 10:10:00) [31]

Сорри, ото для SтринGrid-a


ЮЮ   (2006-12-18 10:08:00) [32]

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 cl: TColor;
begin
 if StringGrid1.Row = ARow then
   cl := clYellow
 else
   cl := StringGrid1.Color;
 StringGrid1.Canvas.Brush.Color := cl;
 StringGrid1.Canvas.FillRect(Rect);
 DrawText(
   StringGrid1.Canvas.Handle,
   PChar(StringGrid1.Cells[ACol, ARow]),
   Length(StringGrid1.Cells[ACol, ARow]),
   Rect,
   0
 );

end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
 ARow: Integer; var CanSelect: Boolean);
begin
  StringGrid1.Invalidate;
 // иначе не перекрасится покинутая и новая строка,
 // а только покинутая и новая ячейки

end;


Tex   (2006-12-18 09:51:00) [33]

Читал статью в королевстве, но не разобрался :(  Можно маленький примерчик, просто как изменить цвет какой-либо ячейки. Дальше я разберусь со строкой. Если не затруднит, конечно :)


Sergey13   (2006-12-18 09:41:00) [34]

> [0] Tex   (18.12.06 09:21)

Сходи на сайт Королевство Делфи. Там была статья "Полосатый грид".


ЮЮ   (2006-12-18 09:41:00) [35]

TStringGrid(Sender).Row конечно


ЮЮ   (2006-12-18 09:41:00) [36]

В OnDrawCell сравнивать TStringGrid(Row).Row и ARow, переданное в качестве парметра.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо