Як виділити кілька елементів таблиці stringgrid
Як виділити кілька елементів таблиці 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;
а потім з її допомогою визначити наше властивість
Після виконання цього присвоєння регіон поміняє колір осередків. У фокусі після виділення регіону виявиться права нижня комірка.
У таблиці StringGrid можлива також і зворотна операція. Після виділення користувачем мишкою регіону осередків буде визначений прямокутник виділення - змінна StringGrid1.Selection типу TGridRect. Програміст може вважати координати регіону:
StringGrid1.Selection.Left
StringGrid1.Selection.Top
StringGrid1.Selection.Right
StringGrid1.Selection.Bottom
і далі діяти з осередками регіону і їх вмістом на свій розсуд, наприклад, перемістити, скопіювати, зберегти вміст комірок в файл, і т.д.