Сидят два пьяных интернетчика вечером на скамейке, после посещения интернет-кафе. Первый второму:
- Привет, как дела двоеточие, две закрывающих скобки.
Второй долго ищет перед собой клаву, потом, подумав говорит:
- Нормально, а у тя?
Смотрит, а первый уже лежит в дауне под скамейкой.. :( Второй, еще подумав, добавляет:
- Сенд тсру сервер!
Например, так:
DefaultDrawing := False;
...
procedure TfrmCard.GridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
varindex: Integer;
Marked, Selected: Boolean;
begin
Marked := False;
if (dgMultiSelect in Grid.Options) and (THackDBGrid(Grid).Datalink.Active) then
Marked := Grid.SelectedRows.Find(THackDBGrid(Grid).Datalink.Datasource.Dataset.Bookmark, index);
Selected := (THackDBGrid(Grid).Datalink.Active) and (Grid.Row-1 = THackDBGrid(Grid).Datalink.ActiveRecord);
if Marked thenbegin
Grid.Canvas.Brush.Color:=$DFEFDF;;
Grid.Canvas.Font.Color :=clBlack;
end;
if Selected thenbegin
Grid.Canvas.Brush.Color:=$FFFBF0;
Grid.Canvas.Font.Color :=clBlack;
if Marked then
Grid.Canvas.Brush.Color:=$EFE3DF; { $8F8A30 }end;
Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Для изменения цвета отмеченных записей в DBGrid можно использовать событие GridDrawColumnCell. Это событие вызывается для каждого ячейки, которая должна быть нарисована. Вы можете проверить, является ли запись отмеченной или выбранной, и установить цвет кисти соответственно.
Вот обновленная версия вашего кода:
procedureTfrmCard.GridDrawColumnCell(Sender:TObject;constRect:TRect;DataCol:Integer;Column:TColumn;State:TGridDrawState);varindex:Integer;Marked,Selected:Boolean;beginMarked:=False;if(dgMultiSelectinGrid.Options)and(THackDBGrid(Grid).DataLink.Active)thenMarked:=Grid.SelectedRows.Find(THackDBGrid(Grid).DataLink.Datasource.Dataset.Bookmark,index);Selected:=(THackDBGrid(Grid).DataLink.Active)and(Grid.Row-1=THackDBGrid(Grid).DataLink.ActiveRecord);ifMarkedthenbeginGrid.Canvas.Brush.Color:=$DFEFDF;// цвет отмеченной записиGrid.Canvas.Font.Color:=clBlack;endelseifSelectedthenbeginGrid.Canvas.Brush.Color:=$FFFBF0;// цвет выбранной записиGrid.Canvas.Font.Color:=clBlack;end;Grid.DefaultDrawColumnCell(Rect,DataCol,Column,State);end;
В этом коде мы проверяем, является ли запись отмеченной или выбранной, и устанавливаем цвет кисти соответственно. Мы используем метод Grid.SelectedRows.Find для поиска маркера текущей выбранной строки.
Вы можете изменить цвета, присваивая новые значения переменной Grid.Canvas.Brush.Color.
Обратите внимание, что вам нужно создать экземпляр класса THackDBGrid и присвоить его вашему компоненту DBGrid для того, чтобы этот код работал.
Изменение цвета отмеченных записей в DBGrid может быть достигнуто с помощью процедуры GridDrawColumnCell, которая изменяет цвет текста и фона ячейки в зависимости от ее статуса (отмеченной или выбранной).
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.