Если Вы хотете избавиться от выделенных ячеек TStringGrid, которые не имеют фокуса либо используются только для отображения данных, то попробуйте воспользоваться следующей небольшой процедурой.
procedure TForm1.GridClean(Sender: TObject);
var
hGridRect: TGridRect;
begin
hGridRect.Top := -1;
hGridRect.Left := -1;
hGridRect.Right := -1;
hGridRect.Bottom := -1;
(Sender as TStringgrid).Selection := hGridRect;
end;
Следующий код можно использовать например в событии грида OnExit:
var
MyGrid: TStringGrid;
...
GridClean(MyGrid);
Перевод:
Код, который я предоставил, - это простой процесс сброса выбора в компоненте TStringGrid к пустому диапазону. Это может быть полезно, когда вы хотите очистить любые выделенные ячейки в таблице, особенно если они не имеют фокуса.
Давайте разбьем, что это код делает:
Процедура GridClean принимает одиночный параметр Sender: TObject, который является общепринятой конвенцией в событиях Delphi.
Она объявляет локальную переменную hGridRect типа TGridRect, которая представляет прямоугольную область внутри таблицы.
Процедура устанавливает свойства Top, Left, Right и Bottom для hGridRect в -1. Это эффективно устанавливает прямоугольник в пустой диапазон, как если бы он не существовал.
Затем она присваивает этот пустой hGridRect свойству Selection компонента TStringGrid, переданному в параметре (Sender as TStringgrid). Это эффективно очищает любые выделенные ячейки в таблице.
Рекомендуется вызывать эту процедуру в событии OnExit таблицы, которое запускается, когда пользователь покидает таблицу. Это обеспечивает очистку любых выделенных ячеек при выходе из таблицы.
Альтернативное решение:
Вместо использования отдельной процедуры можно использовать свойство Selection компонента TStringGrid и установить его в пустой диапазон в обработчике события OnExit:
Это достигает того же эффекта, что и оригинальная процедура, но более компактно и легко читаемо.
В статье описывается простой способ отмены выделения ячеек в StringGrid, используя процедуру GridClean, которая может быть вызвана в событии грида OnExit.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS