Компонент Delphi StringGrid









                                           ГЛАВНАЯ           СВОЙСТВА           СОБЫТИЯ           ПРИЁМЫ  ПРОГРАММИРОВАНИЯ



StringGrid Delphi

Как выделить несколько ячеек таблицы StringGrid




   Прежде всего нужно сказать, что выделить несколько ячеек таблицы StringGrid возможно лишь в пределах одного прямоугольного региона. Выделить несколько ячеек таблицы StringGrid в ходе работы программы можно как мышкой, так и программно.

   Для того, чтобы операция выделения нескольких ячеек стала возможной, её нужно разрешить с помощью специального свойства таблицы StringGrid - Options.

   В Инспекторе Объектов свойство Options - это раскрывающийся список, содержащий набор опций с указанием их значений - True или False.
   Программно свойство Options - это множество, содержащее те опции, значения которых равны True.
   Таким образом, свойство Options можно настраивать как в процессе проектирования таблицы StringGrid, так и программно.

   Итак, для возможности выделения нескольких ячеек мышкой опция goRangeSelect свойства Options должна быть равна True. Это можно сделать как в Инспекторе Объектов, так и программно:

with StringGrid1 do
  Options:=Options+[goRangeSelect];

   Теперь, чтобы выделить несколько ячеек таблицы StringGrid, нужно левой кнопкой мышки нажать на одну из ячеек и, удерживая кнопку мыши нажатой, обвести регион выделения. Выделенный регион поменяет цвет своих ячеек, за исключением той ячейки, которая окажется в фокусе - то есть первой нажатой.

   При этом, указанная операция выделения нескольких ячеек мышкой окажется невозможной, если опция goEditing (отвечающая за возможность ввода в ячейку с клавиатуры) будет равна True. Это значит, что для того чтобы иметь возможность и выделять несколько ячеек, и делать ввод с клавиатуры в ячейку, нужно поочерёдно, в нужные моменты подключать или удалять из множества Optons опцию goEditing.

   Теперь нужно выяснить, как можно программно выделить несколько ячеек таблицы StringGrid. Чтобы сделать выделение нескольких ячеек программно, нужно определить свойство Selection таблицы StringGrid:

type TGridRect = record
  case Integer of
     0: (Left, Top, Right, Bottom: Longint);
     1: (TopLeft, BottomRight: TGridCoord);
  end;

property Selection: TGridRect;

   Проще говоря, свойство Selection это запись, которая может быть определена как координатами границ своего региона ячеек, так и координатами их углов. Однако такая запись:

StringGrid1.Selection.Left:=1; //Левая граница
StringGrid1.Selection.Top:=1; //Верхняя граница
StringGrid1.Selection.Right:=4; //Правая граница
StringGrid1.Selection.Bottom:=3; //Нижняя граница

   или такая:

StringGrid1.Selection.LeftTop.X:=1;
StringGrid1.Selection.LeftTop.Y:=1;
StringGrid1.Selection.RightBottom.X:=4;
StringGrid1.Selection.LeftTop.Y:=3;

будет ошибочна - можете проверить. Правильно будет сначала определить переменную типа TGridRect:

SelectedRect.Left:=1;
SelectedRect.Top:=1;
SelectedRect.Right:=4;
SelectedRect.Bottom:=3;

а затем с её помощью определить наше свойство

StringGrid1.Selection:=SelectedRect;

   После выполнения этого присвоения регион поменяет цвет ячеек. В фокусе после выделения региона окажется правая нижняя ячейка.

   В таблице StringGrid возможна также и обратная операция. После выделения пользователем мышкой региона ячеек будет определён прямоугольник выделения - переменная StringGrid1.Selection типа TGridRect. Программист может считать координаты региона:

StringGrid1.Selection.Left
StringGrid1.Selection.Top
StringGrid1.Selection.Right
StringGrid1.Selection.Bottom

и далее действовать с ячейками региона и их содержимым по своему усмотрению, например, переместить, скопировать, сохранить содержимое ячеек в файл, и т.д.


Читайте также:
  • Как полностью очистить StringGrid Delphi

    Сайт из коллекции Компоненты Delphi    

    Карта сайта