Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 27 апр 2024, 14:32

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 04 май 2022, 09:24 
Не в сети

Зарегистрирован: 22 май 2017, 11:40
Сообщений: 9
Как можно реализовать подсветку выбранных и колонки и строки?
Код:
procedure TMyForm.GridColEnter(Sender: TObject);
begin
  Grid.Selection.Columns.Select(Grid.Columns[Grid.SelectedIndex], False);
end;
Даёт нужный результат, за исключением того, что строка не подсвечивается, не учитывается dgAlwaysShowSelection.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 май 2022, 03:31 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Напишите, пожалуйста подробнее.
Не очень понятно.
Как можно одновременно выделить и колонку и строку?
В гриде можно выбрать либо одну или несколько строк, либо одну или несколько колонок, либо квадратную область ячеек.

Возможно имеется в виду - подсветить колонку и строку для текущей ячейки.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 май 2022, 06:50 
Не в сети

Зарегистрирован: 22 май 2017, 11:40
Сообщений: 9
AlexCoRu писал(а):
Возможно имеется в виду - подсветить колонку и строку для текущей ячейки.
Да именно так, подсветить колонку также как строку.
Код:
procedure TMyForm.GridColEnter(Sender: TObject);
var
  Column: TColumnEh;
  AColor: TColor;
  TL: Integer;
begin
  Column := Grid.Columns[Grid.SelectedIndex];
  Grid.Style.GetRowHighlightBackgroundParams(Grid, True, AColor, TL);
  Column.Color := MixColors(clWhite, AColor, TL);
end;

procedure TMyForm.GridColExit(Sender: TObject);
var
  Column: TColumnEh;
begin
  Column := Grid.Columns[Grid.SelectedIndex];
  Column.Color := Column.DefaultColor;
end;
Пробовал и так, но не учитывается dgAlwaysShowSelection, OnColExit не вызывается при потере фокуса.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 май 2022, 17:26 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Необходимо использовать событие TColumnEh.GetCellParams

Код:
procedure TForm1.DBGridEh1Columns0GetCellParams(Sender: TObject;
  EditMode: Boolean; Params: TColCellParamsEh);
begin
  if (Params.Col = DBGridEh1.Col) then
    Params.State := Params.State + [gdSelected];
end;


Присвоить событие каждой колонке грида.
Также использовать DBGridEh.OnColEnter чтобы при смене текущей ячейки перерисовывлся весь грид а не только текущая строка.

Код:
procedure TForm1.DBGridEh1ColEnter(Sender: TObject);
begin
  DBGridEh1.Invalidate;
end;


Вложения:
sshot-245.png
sshot-245.png [ 28.85 KiB | Просмотров: 1825 ]

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 май 2022, 12:44 
Не в сети

Зарегистрирован: 22 май 2017, 11:40
Сообщений: 9
EhLibSupport писал(а):
Необходимо использовать событие TColumnEh.GetCellParams
Странно, как так у Вас получилось, но у меня Params.Col и DBGridEh1.Col в этом обработчике всегда равны 0.
Код:
procedure TPasswayForm.GridColumns0GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh);
begin
  if (TColumnEh(Sender).Index = TColumnEh(Sender).Grid.SelectedIndex) then
    Params.State := Params.State + [gdSelected]
end;
Но фон всей колонки залит цветом как у ячейки "Mexico City" на Вашем примере.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB