![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение цвета текущей строки DBGrid'a [D7]
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, переданное в качестве парметра.