Sign in Join
Wiki copytemporary

TsWorksheetGrid/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11------------------------------------------------------------------------
22
33-- Zoltanleo 15:36, 21 September 2018 (CEST) Ввиду сложности дословного перевода текста с английского на русский слова, требующиеся по смыслу, но отсутствующие в английской версии, указаны в квадратных скобках.
44
55------------------------------------------------------------------------
66
77## Обзор
88
99`TsWorksheetGrid` - это специализированный компонент сетки, который взаимодействует с `TsWorksheet` из библиотеки [[FPSpreadsheet/ru|FPSpreadsheet]] и отображает файлы данных электронных таблиц, как обычный [[Grids Reference Page/ru|TStringGrid]].\
1010
1111![](/wiki-images/b/b7/Fpsgrid.png)
1212
1313## Интерфейс программирования
1414
1515`TsWorksheetGrid` наследуется от TCustomGrid и ведет себя как стандартный [[Grids Reference Page/ru|TStringGrid]]. Основное различие заключается в том, что сама сетка не хранит данные, но данные хранятся в `TWorksheet` из [[FPSpreadsheet/ru|FPSpreadsheet]]. Доступ к рабочему листу можно получить с помощью свойства `Worksheet` сетки. Аналогично, `Workbook` позволяет получить доступ ко всей рабочей книге, к которой принадлежит рабочий лист.
1616
1717Для доступа к ячейкам, их значениям и атрибутам доступно множество свойств, как и в случае StringGrid, например, запись значения ячейки с помощью `Grid.Cells[ACol, ARow] := 1.234`. Ячейки идентифицируются в этих свойствах с помощью индексов столбцов и строк ячейки. Обратите внимание, что индексы передаются в порядке "первый столбец/последняя строка" и включают индексы, занятые фиксированными ячейками, т.е. верхняя/левая ячейка данных имеет индексы col=1 и row=1. Это отличается от fpspreadsheat, где индексы всегда начинаются с 0 и передаются в функции в обратном порядке "первая строка/последний столбец".
1818
1919### Доступ к значениям ячеек
2020
2121Свойство `Cells[ACol, ARow]` обеспечивает доступ к данным в ячейке, заданной его индексами столбцов и строк. Это похоже на `TStringGrid`. В отличие от `TStringGrid`, который работает только со строками, `TsWorksheetGrid`, принимает числа, даты, булевы типы и формулы. По этой причине тип данных `Cells` является `variant`.
2222
2323#### Запись значений ячеек
2424
2525Используйте этот код для записи данных в ячейку в `TsWorksheetGrid` с именем `Grid` для простоты:
2626
2727``` pascal
2828 // Записываем строку
2929 Grid.Cells[1, 1] := 'Это - строка';
3030 // Записываем строку со встроенными кодами HTML
3131 Grid.Cells[1, 2] := 'Химическая формула <b>воды</b>: H<sub>2</sub>O';
3232 // Записываем число
3333 Grid.Cells[1, 3] := 1.2345;
3434 // Записываем дату
3535 Grid.Cells[1, 4] := EncodeDate(2016, 1, 18);
3636 // Записываем формулу
3737 Grid.Cells[1, 5] := '=A3+2';
3838 // и т.д.
3939```
4040
4141> **Note:** Текст, назначенный ячейке, может содержать встроенные простые HTML-коды для изменения шрифта для определенных слов или символов.
4242
4343#### Чтение значений ячеек
4444
4545Точно так же значения ячеек можно считывать в переменные выделенных типов:
4646
4747``` pascal
4848var
4949 str: String;
5050 x: Double;
5151begin
5252 str := Grid.Cells[1, 1]; // Переменная "str" будет содержать значение "Это - строка",
5353 x := Grid.Cells[1, 2]; // x будет 1.2345
5454 str := Grid.Cells[1, 2]; // Хотя ячейка содержит число, она преобразуется в строку "1.2345"
5555end;
5656```
5757
5858#### Сравнение значений ячеек
5959
6060Так как свойство Cells является \[типом\] вариант, сравнение строки со строкой немного сложнее. Используйте функцию преобразования строк в вариант `VarToStr()`, предоставляемую модулем `variant`.
6161
6262``` pascal
6363 // Это простое сравнение не удастся:
6464 // if Grid.Cells[1,1] = 'Это - строка' then ...
6565
6666 // Используйте вместо этого:
6767 if VarToStr(Grid.Cells[1,1]) = 'Это - строка' then ...
6868```
6969
7070Численные значения часто можно сравнивать без явного преобразования:
7171
7272``` pascal
7373 if Grid.Cells[1,2] = 1.2345 then ...
7474```
7575
7676### Формулы в ячейках
7777
7878Поскольку `TsWorksheetGreed` работает поверх электронной таблицы, могут быть вводиться все формулы, поддерживаемые [[FPSpreadsheet/ru|FPSpreadsheet]]. См. [[FPSpreadsheet: List of formulas|этот документ]] для полного списка поддерживаемых формул.
7979
8080Строка формулы должна начинаться с символа «=». Ссылки на ячейки должны следовать за символом "A1" в обозначении Excel, то есть индексом столбца должны быть символы «A» .. «Z», а индекс строки - целое число, начинающее \[нумерацию\] с 1. Если имеется более 26 столбцов, можно использовать два (или три) символа.
8181
8282В случае диапазона ячеек координаты верхних и нижних правых углов прямоугольника ячейки должны быть разделены цветом, напр., '=SUM(A1:C10)' вычисляет сумму значений в прямоугольнике ячейки, проходящих между A1 и C10.
8383
8484Формулы, относящиеся к ячейкам других листов, можно использовать, следуя синтаксису Excel: укажите имя листа, за которым следует символ "!" перед адресом ячейки, напр., '=Sheet3!A1' или '=SUM(Sheet3:Sheet4!A1:C10)'.
8585
8686Обратите внимание, что формулы по умолчанию автоматически не вычисляются. Чтобы активировать автоматический расчет формул, установите для свойства сетки `AutoCalc` значение true или установите опцию рабочей книги `boAutoCalc`, используемую сеткой. "Автоматический расчет" означает, что все формулы на всем листе пересчитываются всякий раз, когда изменяется содержимое любой ячейки. Поэтому не требуется, чтобы ячейки, адрессованные
8787
88-`формулой, имели значения при ее вводе.`
88+```text
89+формулой, имели значения при ее вводе.
90+```
8991
9092``` pascal
9193// Включаем автоматический расчет формул
9294Grid.AutoCalc := true;
9395// or: Grid.Workbook.Options := Grid.Workbook.Options + [boAutoCalc];
9496
9597// Вводим ячейки
9698Grid.Cells[1,1] := 1; // это - ячейка A1
9799Grid.Cells[1,2] := 2; // это - ячейка A2
98100
99101// Вводим формулу
100102Grid.Cells[1,3] := '=A1+A2'; // Вычисляем сумму значений в A1 и A2
101103
102104// Другая формула в ячейке B3
103105Grid.Cells[2,3] := '=B1*B2'; // Не имеет значения, что ячейки B1 и B2 еще не существуют.
104106
105107// Вводим ячейки, необходимые по формуле
106108Grid.Cells[2,1] := '=A3'; // Используем результат предыдущей формулы
107109Grid.Cells[2,2] := 10;
108110```
109111
110112### Форматирование ячеек
111113
112114Атрибуты ячеек могут быть прикреплены к каждой ячейке аналогично значениям ячейки. Существует набор свойств сетки, представляющих каждый атрибут:
113115
114116- `BackgroundColor[ACol, ARow: Integer]: TsColor` - задает цвет фона ячейки. `TsColor` - целое число, содержащее \[значение\] rgb-составляющей цвета. Модуль `fpsTypes` предоставляет список констант для большого количества предопределенных цветов; могут использоваться цвета, определенные стандартным модулем `Graphics` (за исключением значений цвета системы).
115117- `CellBorder[ACol, ARow: Integer]: TsCellBorders` - указывает, какие края ячеек будут обозначены рамкой. Используйте установленные значения `[cbEast, cbWest, cbNorth, cbSouth]` для правого, левого, верхнего и нижнего краев соответственно.
116118- `CellBorderStyle[ACol, ARow: Integer; ABorder: TsCellBorder]: TsCellBorderStyle` - указывает стиль, который будет использоваться для линии границы ячейки, указанной в параметре `ABorder`. `TsCellBorderStyle` - это запись, содержащая информацию о стиле линии и цвете линии. Обратите внимание, что набор `CellBorder[ACol, ARow]` должен содержать элемент `ABorder`, чтобы активировать эту границу.
117119- `CellFont[ACol, ARow: Integer]: TFont` - описывает шрифт, используемый при прорисовке текста ячейки. Элементы шрифта могут быть изменены отдельно этими свойствами:
118120 - `CellFontColor[ACol, ARow: Integer]: TsColor` - определяет цвет текста. См. "BackgroundColor" выше для \[получения\] описания типа TsColor.
119121 - `CellFontName[ACol, ARow: Integer]: String` - это имя шрифта.
120122 - `CellFontSize[ACol, ARow: Integer]: Single` - это размер точки шрифта (1 pt = 1/72 дюйма).
121123 - `CellFontStyle[ACol, ARow: Integer]: TsFontStyles` - представляет собой набор, содержащий элементы для использования жирного шрифта, курсива, подчеркнутого или зачеркнутого шрифтов.
122124- `HorAlignment[ACol, ARow: Integer]: TsHorAlignment` - позволяет изменять горизонтальное выравнивание текста ячейки (`haLeft`, `haCenter`, или `haRight`).
123125- `NumberFormat[ACol, ARow: Integer]: String` - представляет собой строку формата номера, совместимую с Excel, например. `'0.000'` для отображения числового значения с 3 десятичными знаками. Формат чисел важен, если цифры должны отображаться как значения даты или времени.
124126- `TextRotation[ACol, ARow: Integer]: TsTextRotation` - должен использоваться для поворота текста внутри ячейки. Тип `TsTextRotation` обеспечивает \[ориентацию\] `trHorizontal` \[(по горизонтали, по умолчанию)\], `rt90DegreeClockwiseRotation` \[(на 90° по часовой стрелке)\], `rt90DegreeCounterClockwiseRotation` \[(на 90° против часовой стрелки)\] и `rtStacked` \[(символов, располагающихся друг над другом, подобно японским иероглифам)\].
125127- `VertAlignment[ACol, ARow: Integer]: TsVertAlignment` - позволяет изменять горизонтальное выравнивание текста ячейки (`vaTop` \[(по верхнему краю)\], `vaCenter` \[(по центру)\] или `vaBottom` \[(по нижнему краю)\]).
126128- `Wordwrap[ACol, ARow: Integer]: Boolean` - активирует автоперенос строки текста, длина которой больше ширины ячейки (или высота, если используется повернутый текст).
127129
128130Эти свойства также могут быть доступны для диапазона ячеек, указанных индексами левого столбца, верхней строки, правого столбца и нижней строки блока ячейки. Поскольку эти свойства связаны с несколькими ячейками, они пишутся во множественном числе (с окончанием "s"):
129131
130132- `BackgroundColors[ALeft, ATop, ARight, ABottom: Integer]: TsColor`
131133- `CellBorders[ALeft, ATop, ARight, ABottom: Integer]: TsCellBorders`
132134- `CellBorderStyles[ALeft, ATop, ARight, ABottom: Integer; ABorder: TsCellBorder]: TsCellBorderStyle`
133135- `CellFonts[ALeft, ATop, ARight, ABottom: Integer]: TFont`
134136- `CellFontColors[ALeft, ATop, ARight, ABottom: Integer]: TsColor`
135137- `CellFontNames[ALeft, ATop, ARight, ABottom: Integer]: String`
136138- `CellFontStyles[ALeft, ATop, ARight, ABottom: Integer]: TsFontStyles`
137139- `CellFontSizes[ALeft, ATop, ARight, ABottom: Integer]: Single`
138140- `HorAlignments[ALeft, ATop, ARight, ABottom: Integer]: TsHorAlignment`
139141- `NumberFormats[ALeft, ATop, ARight, ABottom: Integer]: String`
140142- `TextRotations[ALeft, ATop, ARight, ABottom: Integer]: TsTextRotation`
141143- `VertAlignments[ALeft, ATop, ARight, ABottom: Integer]: TsVertAlignment`
142144- `Wordwraps[ALeft, ATop, ARight, ABottom: Integer]: Boolean`
143145
144146Если свойства, подлежащие чтению, не имеют идентичных значений в блоке ячейки, возвращается нейтральное значение или значение по умолчанию.
145147
146148**Примеры**
147149
148150Этот пример добавляет формулу для сегодняшней даты в ячейку A1, форматирует ячейки для отображения числа в качестве даты и выбирает белый шрифт курсивом на светло-сером фоне. Вокруг ячейки пунктиром рисуется красная рамка.
149151
150152``` pascal
151153const
152154 RED_DOTTED_BORDER: TsBorderStyle = (LineStyle: lsDotted; Color: scRed);
153155
154156// Задаем содержимое ячейки
155157Grid.Cells[1,1] := '=TODAY()';
156158
157159// Форматируем [содержимое] как дату
158160Grid.Numberformat[1,1] := 'yyyy/mm/dd';
159161
160162// Выбираем цвет фона [сетки]
161163Grid.BackgroundColor[1,1] := scSilver;
162164
163165// Выбираем [цвет и стиль] шрифта
164166Grid.FontColor[1,1] := scWhite;
165167Grid.FontStyle[1,1] := [fssItalic];
166168
167169// Прорисовываем границы ячейки
168170Grid.Border[1,1] := [cbEast, cbWest, cbNorth, cbSouth];
169171
170172// Определяем, как будут нарисованы границы ячеек
171173Grid.BorderStyle[1,1, cbEast] := RED_DOTTED_BORDER;
172174Grid.BorderStyle[1,1, cbWest] := RED_DOTTED_BORDER;
173175Grid.BorderStyle[1,1, cbNorth] := RED_DOTTED_BORDER;
174176Grid.BorderStyle[1,1, cbSouth] := RED_DOTTED_BORDER;
175177```
176178
177179\[Процесс\] определения границ ячеек для более крупного блока ячеек с помощью этих свойств \[вручную\] будет довольно громоздким, потому что могут использоваться различные стили для внутренних, внутренних и внутренних ячеек. Чтобы решить эту задачу проще, сетка предоставляет метод `ShowCellBorders`, который получает координаты блока ячейки и стили левой, верхней, правой, нижней внешней и горизонтальной и вертикальной внутренних линий границы. Используйте константу `NO_CELL_BORDER`, при которой граница не должна быть выделена в определенном месте:
178180
179181``` pascal
180182const
181183 THICK_CELL_BORDER: TsCellBorderStyle = (LineStyle: lsThick; Color: clBlack);
182184 DOTTED_CELL_BORDER: TsCellBorderStyle = (LineStyle: lsDotted; Color: clSilver);
183185
184186// Нарисуем толстую рамку вокруг блока A1:C3, без внутренней границы
185187Grid.ShowCellBorders(1,1, 3,3, // левая, верхняя, правая, нижняя координаты блока ячеек
186188 THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER, // стили внешней границы
187189 NO_CELL_BORDER, NO_CELL_BORDER // стили внутренней границы
188190);
189191
190192// Нарисуйте толстую рамку вокруг блока A1: C3, серые горизонтальные внутренние линии пунктиром
191193Grid.SetCellBorders(1,1, 3,3,
192194 THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER,
193195 DOTTED_CELL_BORDER, NO_CELL_BORDER
194196);
195197```
196198
197199### Комментарии ячейки
198200
199201Комментарии могут быть добавлены в каждую ячейку с использованием свойства сетки `CellComment[ACol, ARow: Integer]: String`. Ячейки, содержащие комментарий, отмечены красным треугольником в верхнем правом углу ячейки. Если мышь перемещается в ячейку с комментарием, появляется всплывающее окно для отображения комментария.
200202
201203> **Note:** Чтобы всплывающее окно появилось, необходимо добавить флаг `goCellHints` в свойство `Options` сетки, а стандартное свойство сетки `ShowHint` должно \[иметь значение\] true. В противном случае всплывающие окна не будут отображаться.
202204
203205**Пример:**
204206
205207``` pascal
206208Grid.Cells[1,1] := '=pi()';
207209Grid.CellComment[1,1] := 'Число pi необходимо для вычисления площади и окружности круга.';
208210```
209211
210212### Гиперссылки в ячейках
211213
212214Ячейки с прикрепленными гиперссылками позволяют пользователю перемещаться по другим ячейкам или другим документам \[простым\] нажатием на ячейку. Доступ к гиперссылкам можно получить с помощью свойства `Hyperlink[ACol, ARow: Integer]: String`. Строка гиперссылки содержит цель гиперссылки и необязательный текст всплывающей подсказки, который разделяется символом штриха ("\|"). Внутренние цели уже обрабатываются сеткой, но для навигации у гиперссылки должен быть определен обработчик событий для `OnClickHyperlink`. Чтобы отличить нормальные клики по ячейкам от кликов по гиперссылкам, кнопка мыши должна удерживаться доли секунды до того, как будет \[выполнен переход по\] гиперссылке.
213215
214216**Пример:**
215217
216218``` pascal
217219// Пример добавления внешней гиперссылки
218220Grid.Cells[1,1] := 'Lazarus';
219221Grid.Hyperlink[1,1] := 'www.lazarus-ide.org|Открыть веб-сайт Lazarus';
220222
221223// Пример добавления внутренней гиперссылки
222224Grid.Cells[2,2] := 'Итого';
223225Grid.Hyperlink[2,2] := '#Sheet2!B10|Перейдите к итогам, начиная с ячейки B10 листа 2';
224226
225227// Пример для обработчика событий OnClickHyperlink, необходимого для внешних гиперссылок
226228uses
227229 ..., uriparser;
228230
229231procedure TForm1.GridOnClickHyperlink(Sender: TObject; const AHyperlink: TsHyperlink);
230232begin
231233var
232234 uri: TUri;
233235begin
234236 uri := ParseURI(AHyperlink.Target);
235237 case Lowercase(uri.Protocol) of
236238 'http', 'https', 'ftp', 'mailto', 'file':
237239 OpenUrl(AHyperlink.Target);
238240 else
239241 ShowMessage('Гиперссылка ' + AHyperlink.Target + ' нажата');
240242 end;
241243end;
242244```
243245
244246> **Note:** Следуйте инструкциям выше, чтобы отобразить текст всплывающей подсказки в виде всплывающего окна.
245247
246248### Объединенные ячейки
247249
248250Прямоугольная группа ячеек может быть объединена в один блок. Содержимое верхней/левой ячейки этого блока отображается во всех объединенных ячейках, содержимое других ячеек игнорируется.
249251
250252Используйте метод `MergeCells` для выполнения этой операции. В качестве параметров требуется объединить левую, верхнюю, правую и нижнюю координаты диапазона ячеек. Они также могут быть объединены в запись `TRect`. Метод `Unmerge` снова разделяет ранее объединенный блок на отдельные ячейки, здесь достаточно координат одной ячейки из объединенного диапазона.
251253
252254``` pascal
253255 // Пример слияния
254256 Grid.MergeCells(1,1, 3,1); // Объединяем первые 3 ячейки первой строки
255257 Grid.Cells[1,1] := 'Итого'; // Записываем текст "Итого" по 3 ячейкам
256258 Grid.HorAlignment[1,1] := haCenter; // и центрируем его
257259
258260 // Пример разделения
259261 Grid.UnmergeCells(1,1); // Разделяем объединенный блок (1,1..3,1)
260262```
261263
262264### Ширина столбцов и высота строк
263265
264266Column widths and row heights can be changed for all cells by setting the `DefaultColWidth` and `DefaultRowHeight`. This works also in design mode. In addition, the widths and heights of particular columns and rows can be modified by the properties `ColWidths[ACol]` and `RowHeights[ARow]`. These values must be given in pixels.
265267
266268Ширину столбцов и высоту строк можно изменить для всех ячеек, определив \[свойства\] `DefaultColWidth` и `DefaultRowHeight`. Это работает также в режиме разработки. Кроме того, ширина и высота отдельных столбцов и строк могут быть изменены свойствами `ColWidths[ACol]` и `RowHeights[ARow]`. Эти значения должны указываться в пикселях.
267269
268270``` pascal
269271 Grid.DefaultColWidth := 80; // Это ширина всех столбцов,
270272 Grid.ColWidths[10] := 10; // исключая столбец #10, ширина которого составляет всего 10 пикселей.
271273
272274 Grid.DefaultRowHeight := 20; // Все строки имеют высоту 20 пикселей,
273275 Grid.RowHeights[2] := 4; // Строка #2 служит в качестве разделителя и имеет высоту всего 4 пиксела.
274276```
275277
276278### Новые свойства сетки
277279
278280В дополнение к свойствам, унаследованным от его предков `TCustomDrawGrid` и `TCustomGrid`, `TsWorksheetGrid` вводит следующие новые **published-свойства**:
279281
280282- **AllowDragAndDrop** (boolean): если эта опция активна, ячейки можно перетащить в новое место. Переместите курсор мыши на границу ячеек, которые нужно перетащить, пока курсор мыши не станет четырехсторонней стрелкой, а затем начинайте перетаскивание. Если перетаскиваемая ячейка ссылается на формулу, формула НЕ обновляется - это поведение отличается от Excel, но согласуется с Open/LibreOffice Calc.
281283- **AutoCalc** (boolean): формулы в сетке автоматически пересчитываются при изменении содержимого ячейки.
282284- **AutoExpand** (set of `aeData, aeNavigation, aeDefault`):
283285 - Если опция `aeData` содержится в наборе `AutoExpand`, тогда сетка автоматически расширяется, если ячейки записываются за пределами предопределенного диапазона.
284286 - Если `AutoExpand` содержит параметр `aeNavigation`, тогда пользователь может *перемещаться* за пределами предопределенного диапазона ячеек; новые строки и столбцы автоматически добавляются в сетку (но не к основному листу). Если файл загружен в сетку, то размеры сетки автоматически расширяются до диапазона, необходимого для рабочего листа.
285287 - Опция `aeDefault` вступает в игру, если сетка меньше значений по умолчанию DEFAULT_COL_COUNT и DEFAULT_ROW_COUNT. Если этот параметр включен, сетка автоматически расширяется до этого размера по умолчанию \[(с добавлением "недостающих" столбцов и строк)\]. С другой стороны, если в сетке должно содержаться только определенное количество строк и столбцов, опция `aeDefault` должна быть **удалена до** установки \[свойств\] `RowCount`/`ColCount`.
286288- **EditorLineMode** определяет, поддерживает ли редактор ячейки сетки только одиночные строки (`elmSingleLine`) или несколько строк (`elmMultiLine`). В последнем случае вы можете нажать CTRL + ENTER, чтобы начать новую строку во время редактирования ячейки.
287289- **FrozenBorderPen**: если сетка имеет замороженные панели (см. `FrozenCols` и `FrozenRows`), разделительная линия вытягивает край последней замороженной строки и столбца , Свойство `FrozenBorderPen` определяет способ рисования этой строки. Установите \[значение свойства\] `FrozenBorderPen.Style = psClear`, чтобы скрыть эти линии.
288290- **FrozenCols** и **FrozenRows** (integer): определяет количество НЕ прокручиваемых столбцов(строк) слева(сверху) сетки. Технически это настраиваемые фиксированные столбцы (строки) предка. Обратите внимание, что пользователь не может перемещаться или редактировать ячейки в этом диапазоне.
289291- **ReadFormulas** (boolean): считывает формулы из входных файлов. Так как fpspreadsheet не поддерживает все формулы, доступные в приложениях электронной таблицы Office, есть вероятность, что при чтении файла может произойти сбой из-за формул; в этом случае чтение формул может быть отключено.
290292- **SelectionPen** (TPen): определяет, как окрашивается граница выбранной ячейки. По умолчанию выбранная ячейка выделена черной линией шириной 3 пикселя.
291293- **ShowGridLines** (boolean): позволяет отключить линии сетки
292294- **ShowHeaders** (boolean): может использоваться для отключения заголовков столбцов и строк ('A', 'B', 'C', ..., '1', '2', '3'). Свойство **DisplayFixedColRow** имеет тот же эффект, но теперь устарело.
293295- **TextOverflow** (boolean): если это свойство включено, то длинному текстовому контенту разрешается распространяться на соседние ячейки, если они пусты. Обратите внимание, что ячейки числовых данных округлены так, что ячейка не переполняется.
294296- **WorkbookSource** (TsWorkbookSource): ссылки на источник рабочей книги, которые предоставляют данные. Если \[ссылки\] пустые, сетка использует внутренний источник рабочей книги.
295297
296298**События**
297299
298300- **OnClickHyperlink**: это событие срабатывает всякий раз, когда пользователь нажимает на ячейку со встроенной гиперссылкой. Поскольку щелчок по ячейке обычно приведет к переключению ячейки в режим редактирования, необходимо удерживать клавишу мыши примерно на полсекунды, чтобы вызвать событие гиперссылки.
299301
300302### Рекомендуемые значения свойств
301303
302304Чтобы настроить сетку для работы аналогично хорошо известным приложениям Office, мы рекомендуем следующие настройки свойств сетки. Следует, однако, подчеркнуть, что различия в использовании существуют и не могут быть удалены без серьезной перезаписи унаследованной инфраструктуры сетки:
303305
304306- `AutoAdvance = aaDown`: клавиша ENTER переводит \[фокус\] с выбранной ячейки в следующую нижнюю ячейку
305307- `AutoCalc = true`: автоматическое вычисление формул
306308- `AutoEdit = true`: для редактирования ячейки просто начинайте печатать. Кроме того, вы можете начать редактирование, нажав F2
307309- `AutoExpand = [aeData, aeNavigation, aeDefault]`: не ограничивайте использование сетки предопределенными размерами сетки для пользовательского интерфейса, подобного Excel
308310- `EditorLineMode = elmMultiLine`: активируйте редактор ячейки, поддерживающий многострочность во время редактирования
309311- `MouseWheelOption = mwGrid`: колесико мыши прокручивает сетку, а не выбранную ячейку
310312- `Options`: добавьте эти флаги в стандартные параметры, унаследованные от TCustomGrid:
311313 - `goColSizing`: пользователь может изменить ширину столбца, перетащив вертикальную разделительную линию между двумя ячейками заголовка столбца
312314 - `goRowSizing`: пользователь может изменить высоту строки, перетащив горизонтальную разделительную линию между двумя ячейками заголовка строки
313315 - `goDblClickAutosize`: двойной щелчок на разделительной линии между двумя ячейками заголовка столбца или строки изменяет ширину столбца или высоту строки до оптимального значения
314316 - `goEditing`: помещает сетку в режим редактирования (так же, как \[и\] `AutoEdit`)
315317 - `goThumbTracking`: немедленная прокрутка сетки, когда полоса прокрутки перетаскивается мышью (если эта опция отключена, прокрутка происходит в тот момент, когда кнопка мыши отпускается)
316318- `TextOverflow = true`: разрешить длинный поток текста ячейки в пустые соседние ячейки
317319
318320## Смотри также
319321
320322- [[FPSpreadsheet tutorial: Writing a mini spreadsheet application]]
321323- [[FPSpreadsheet|API documentation of FPSpreadsheet]]
322324- [[RPN Formulas in FPSpreadsheet|RPN formulas in FPSpreadsheet]]
323325- [[FPSpreadsheet: List of formulas/ru|FPSpreadsheet: List of formulas]]
324326- [[Grids Reference Page/ru|Grids reference page]]
325327
326328---
327329*From the Free Pascal wiki, page "TsWorksheetGrid/ru", as it stood on 2020-03-02 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history