![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выделение целой строки StringGrid [D6, XP]
maxXP © (2006-11-15 17:53:00)Подскажите как можно реализовать выделение целой строки StringGrid в обработчике StringGrid1DrawCell.
Т.е Фокус нажали на ячейку и вся строка поменяла цвет.
Спс
ЮЮ (2006-11-16 03:51:00) [1]
> что нет у него DefaultDrawCell
там кода-то - кот наплакал. почему бы не перенести его в DrawCell ?
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ARow = TStringGrid(Sender).Row then begin
TStringGrid(Sender).Canvas.Brush.Color := clRed;
TStringGrid(Sender).Canvas.Font.Color := clWhite;
end
else begin
// стандартные цвета
if gdFixed in State then
TStringGrid(Sender).Canvas.Brush.Color := TStringGrid(Sender).FixedColor
else
TStringGrid(Sender).Canvas.Brush.Color := TStringGrid(Sender).Color;
TStringGrid(Sender).Canvas.Font.Color := TStringGrid(Sender).Font.Color;
end;
TStringGrid(Sender).Canvas.FillRect(Rect);
TStringGrid(Sender).Canvas.TextRect(
Rect, Rect.Left + 2, Rect.Top + 2, TStringGrid(Sender).Cells[ACol, ARow]
);
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
// чтобы перерисовалась "покинутая" строка, ибо сам стринггрид
// перерисовывает только "покинутую" ячейку
TStringGrid(Sender).Invalidate;
end;
Работает и с в включенным по умолчанию DefaultDrawing. При отключенном теряеется 3D-шность фиксированных ячеек, ибо это делается в TCustomGrid.Paint именно если DefaultDrawing = true
MsGuns (2006-11-15 22:02:00) [2]>Jeer © (15.11.06 18:05) [1]
>OnDrawColumnCell
>поищи по ключевому слову "разноцветный Grid"
Серега, немного не в тему. И дело не в том, что StringGrid отличается от DBGrid, а в том, что нет у него DefaultDrawCell
Jeer (2006-11-15 18:05:00) [3]OnDrawColumnCell
поищи по ключевому слову "разноцветный Grid"