Difference between revisions of "TsWorksheetGrid/ru"

From Free Pascal wiki
Jump to navigationJump to search
Line 204: Line 204:
 
=== Гиперссылки в ячейках ===
 
=== Гиперссылки в ячейках ===
  
Ячейки с прикрепленными гиперссылками позволяют пользователю перемещаться по другим ячейкам или другим документам [простым] нажатием на ячейку. Доступ к гиперссылкам можно получить с помощью свойства <tt>Hyperlink[ACol, ARow: Integer]: String</tt>. Строка гиперссылки содержит цель гиперссылки и необязательный текст всплывающей подсказки, который разделяется символом штриха ("|"). Внутренние цели уже обрабатываются сеткой, но для навигации гиперссылке должен быть сопоставлен обработчик событий для <tt>OnClickHyperlink</tt>. Чтобы отличить нормальные клики по ячейкам от кликов по гиперссылкам, кнопка мыши должна удерживаться доли секунды до того, как будет [выполнен переход по] гиперссылке.
+
Ячейки с прикрепленными гиперссылками позволяют пользователю перемещаться по другим ячейкам или другим документам [простым] нажатием на ячейку. Доступ к гиперссылкам можно получить с помощью свойства <tt>Hyperlink[ACol, ARow: Integer]: String</tt>. Строка гиперссылки содержит цель гиперссылки и необязательный текст всплывающей подсказки, который разделяется символом штриха ("|"). Внутренние цели уже обрабатываются сеткой, но для навигации у гиперссылки должен быть определен обработчик событий для <tt>OnClickHyperlink</tt>. Чтобы отличить нормальные клики по ячейкам от кликов по гиперссылкам, кнопка мыши должна удерживаться доли секунды до того, как будет [выполнен переход по] гиперссылке.
  
'''Example:'''
+
'''Пример:'''
 
<syntaxhighlight>
 
<syntaxhighlight>
// Example for adding an external hyperlink
+
// Пример добавления внешней гиперссылки
 
Grid.Cells[1,1] := 'Lazarus';
 
Grid.Cells[1,1] := 'Lazarus';
Grid.Hyperlink[1,1] := 'www.lazarus-ide.org|Open Lazarus web site';
+
Grid.Hyperlink[1,1] := 'www.lazarus-ide.org|Открыть веб-сайт Lazarus';
  
// Example for adding an internal hyperlink
+
// Пример добавления внутренней гиперссылки
Grid.Cells[2,2] := 'Summary';
+
Grid.Cells[2,2] := 'Итого';
Grid.Hyperlink[2,2] := '#Sheet2!B10|Go to the summary starting at cell B10 of sheet2';
+
Grid.Hyperlink[2,2] := '#Sheet2!B10|Перейдите к итогам, начиная с ячейки B10 листа 2';
  
// Example for an OnClickHyperlink event handler needed for external hyperlinks
+
// Пример для обработчика событий OnClickHyperlink, необходимого для внешних гиперссылок
 
uses
 
uses
 
   ..., uriparser;
 
   ..., uriparser;
Line 230: Line 230:
 
       OpenUrl(AHyperlink.Target);
 
       OpenUrl(AHyperlink.Target);
 
     else
 
     else
       ShowMessage('Hyperlink ' + AHyperlink.Target + ' clicked');
+
       ShowMessage('Гиперссылка ' + AHyperlink.Target + ' нажата');
 
   end;
 
   end;
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
{{Note|Follow the instructions [[#Cell_comments|above]] to show the tooltip text as a popup window. }}
+
{{Note|Follow the instructions [[#Cell_comments|above]] to show the tooltip text as a popup window. Следуйте инструкциям [[#Комментарии ячейки|выше]], чтобы отобразить текст всплывающей подсказки в виде всплывающего окна.}}
  
 
=== Merged cells ===
 
=== Merged cells ===

Revision as of 16:45, 21 September 2018

English (en) русский (ru)



ENG: AT THE MOMENT THIS PAGE IS UNDER TRANSLATION.
RUS: В НАСТОЯЩИЙ МОМЕНТ СТРАНИЦА НАХОДИТСЯ В ПРОЦЕССЕ ПЕРЕВОДА.




-- Zoltanleo 15:36, 21 September 2018 (CEST) Ввиду сложности дословного перевода текста с английского на русский слова, требующиеся по смыслу, но отсутствующие в английской версии, указаны в квадратных скобках.



Обзор

TsWorksheetGrid - это специализированный компонент сетки, который взаимодействует с TsWorksheet из библиотеки FPSpreadsheet и отображает файлы данных электронных таблиц, как обычный TStringGrid.

fpsgrid.png

Интерфейс программирования

TsWorksheetGrid наследуется от TCustomGrid и ведет себя как стандартный TStringGrid. Основное различие заключается в том, что сама сетка не хранит данные, но данные хранятся в TWorksheet из FPSpreadsheet. Доступ к рабочему листу можно получить с помощью свойства Worksheet сетки. Аналогично, Workbook позволяет получить доступ ко всей рабочей книге, к которой принадлежит рабочий лист.

Для доступа к ячейкам, их значениям и атрибутам доступно множество свойств, как и в случае StringGrid, например, запись значения ячейки с помощью Grid.Cells[ACol, ARow] := 1.234. Ячейки идентифицируются в этих свойствах с помощью индексов столбцов и строк ячейки. Обратите внимание, что индексы передаются в порядке "первый столбец/последняя строка" и включают индексы, занятые фиксированными ячейками, т.е. верхняя/левая ячейка данных имеет индексы col=1 и row=1. Это отличается от fpspreadsheat, где индексы всегда начинаются с 0 и передаются в функции в обратном порядке "первая строка/последний столбец".

Доступ к значениям ячеек

Свойство Cells[ACol, ARow] обеспечивает доступ к данным в ячейке, заданной его индексами столбцов и строк. Это похоже на TStringGrid. В отличие от TStringGrid, который работает только со строками, TsWorksheetGrid, принимает числа, даты, булевы типы и формулы. По этой причине тип данных Cells является variant.

Запись значений ячеек

Используйте этот код для записи данных в ячейку в TsWorksheetGrid с именем Grid для простоты:

  // Записываем строку
  Grid.Cells[1, 1] := 'Это - строка';  
  // Записываем строку со встроенными кодами HTML
  Grid.Cells[1, 2] := 'Химическая формула <b>воды</b>: H<sub>2</sub>O';
  // Записываем число
  Grid.Cells[1, 3] := 1.2345;
  // Записываем дату
  Grid.Cells[1, 4] := EncodeDate(2016, 1, 18);
  // Записываем формулу
  Grid.Cells[1, 5] := '=A3+2';
  // и т.д.
Light bulb  Примечание: Текст, назначенный ячейке, может содержать встроенные простые HTML-коды для изменения шрифта для определенных слов или символов.

Чтение значений ячеек

Точно так же значения ячеек можно считывать в переменные выделенных типов:

var
  str: String;
  x: Double;
begin
  str := Grid.Cells[1, 1];  // Переменная "str" будет содержать значение "Это  - строка",
  x := Grid.Cells[1, 2];    // x будет 1.2345
  str := Grid.Cells[1, 2];  // Хотя ячейка содержит число, она преобразуется в строку "1.2345"
end;

Сравнение значений ячеек

Так как свойство Cells является [типом] вариант, сравнение строки со строкой немного сложнее. Используйте функцию преобразования строк в вариант VarToStr(), предоставляемую модулем variant.

  // Это простое сравнение не удастся:
  // if Grid.Cells[1,1] = 'Это - строка' then ...

  // Используйте вместо этого:
  if VarToStr(Grid.Cells[1,1]) = 'Это - строка' then ...

Численные значения часто можно сравнивать без явного преобразования:

  if Grid.Cells[1,2] = 1.2345 then ...

Формулы в ячейках

Поскольку TsWorksheetGreed работает поверх электронной таблицы, могут быть вводиться все формулы, поддерживаемые FPSpreadsheet. См. этот документ для полного списка поддерживаемых формул.

Строка формулы должна начинаться с символа «=». Ссылки на ячейки должны следовать за символом "A1" в обозначении Excel, то есть индексом столбца должны быть символы «A» .. «Z», а индекс строки - целое число, начинающее [нумерацию] с 1. Если имеется более 26 столбцов, можно использовать два (или три) символа.

В случае диапазона ячеек координаты верхних и нижних правых углов прямоугольника ячейки должны быть разделены цветом, напр., '=SUM(A1:C10)' вычисляет сумму значений в прямоугольнике ячейки, проходящих между A1 и C10.

Формулы, относящиеся к ячейкам других листов, можно использовать, следуя синтаксису Excel: укажите имя листа, за которым следует символ "!" перед адресом ячейки, напр., '=Sheet3!A1' или '=SUM(Sheet3:Sheet4!A1:C10)'.

Обратите внимание, что формулы по умолчанию автоматически не вычисляются. Чтобы активировать автоматический расчет формул, установите для свойства сетки AutoCalc значение true или установите опцию рабочей книги boAutoCalc, используемую сеткой. "Автоматический расчет" означает, что все формулы на всем листе пересчитываются всякий раз, когда изменяется содержимое любой ячейки. Поэтому не требуется, чтобы ячейки, адрессованные

формулой, имели значения при ее вводе.
// Включаем автоматический расчет формул
Grid.AutoCalc := true;        
// or: Grid.Workbook.Options := Grid.Workbook.Options + [boAutoCalc];

// Вводим ячейки
Grid.Cells[1,1] := 1;         // это - ячейка A1
Grid.Cells[1,2] := 2;         // это - ячейка A2

// Вводим формулу
Grid.Cells[1,3] := '=A1+A2';  // Вычисляем сумму значений в A1 и A2 

// Другая формула в ячейке B3
Grid.Cells[2,3] := '=B1*B2';  // Не имеет значения, что ячейки B1 и B2 еще не существуют.

// Вводим ячейки, необходимые по формуле
Grid.Cells[2,1] := '=A3';     // Используем результат предыдущей формулы
Grid.Cells[2,2] := 10;

Форматирование ячеек

Атрибуты ячеек могут быть прикреплены к каждой ячейке аналогично значениям ячейки. Существует набор свойств сетки, представляющих каждый атрибут:

  • BackgroundColor[ACol, ARow: Integer]: TsColor - задает цвет фона ячейки. TsColor - целое число, содержащее [значение] rgb-составляющей цвета. Модуль fpsTypes предоставляет список констант для большого количества предопределенных цветов; могут использоваться цвета, определенные стандартным модулем Graphics (за исключением значений цвета системы).
  • CellBorder[ACol, ARow: Integer]: TsCellBorders - указывает, какие края ячеек будут обозначены рамкой. Используйте установленные значения [cbEast, cbWest, cbNorth, cbSouth] для правого, левого, верхнего и нижнего краев соответственно.
  • CellBorderStyle[ACol, ARow: Integer; ABorder: TsCellBorder]: TsCellBorderStyle - указывает стиль, который будет использоваться для линии границы ячейки, указанной в параметре ABorder. TsCellBorderStyle - это запись, содержащая информацию о стиле линии и цвете линии. Обратите внимание, что набор CellBorder[ACol, ARow] должен содержать элемент ABorder, чтобы активировать эту границу.
  • CellFont[ACol, ARow: Integer]: TFont - описывает шрифт, используемый при прорисовке текста ячейки. Элементы шрифта могут быть изменены отдельно этими свойствами:
    • CellFontColor[ACol, ARow: Integer]: TsColor - определяет цвет текста. См. "BackgroundColor" выше для [получения] описания типа TsColor.
    • CellFontName[ACol, ARow: Integer]: String - это имя шрифта.
    • CellFontSize[ACol, ARow: Integer]: Single - это размер точки шрифта (1 pt = 1/72 дюйма).
    • CellFontStyle[ACol, ARow: Integer]: TsFontStyles - представляет собой набор, содержащий элементы для использования жирного шрифта, курсива, подчеркнутого или зачеркнутого шрифтов.
  • HorAlignment[ACol, ARow: Integer]: TsHorAlignment - позволяет изменять горизонтальное выравнивание текста ячейки (haLeft, haCenter, или haRight).
  • NumberFormat[ACol, ARow: Integer]: String - представляет собой строку формата номера, совместимую с Excel, например. '0.000' для отображения числового значения с 3 десятичными знаками. Формат чисел важен, если цифры должны отображаться как значения даты или времени.
  • TextRotation[ACol, ARow: Integer]: TsTextRotation - должен использоваться для поворота текста внутри ячейки. Тип TsTextRotation обеспечивает [ориентацию] trHorizontal [(по горизонтали, по умолчанию)], rt90DegreeClockwiseRotation [(на 90° по часовой стрелке)], rt90DegreeCounterClockwiseRotation [(на 90° против часовой стрелки)] и rtStacked [(символов, располагающихся друг над другом, подобно японским иероглифам)].
  • VertAlignment[ACol, ARow: Integer]: TsVertAlignment - позволяет изменять горизонтальное выравнивание текста ячейки (vaTop [(по верхнему краю)], vaCenter [(по центру)] или vaBottom [(по нижнему краю)]).
  • Wordwrap[ACol, ARow: Integer]: Boolean - активирует автоперенос строки текста, длина которой больше ширины ячейки (или высота, если используется повернутый текст).

Эти свойства также могут быть доступны для диапазона ячеек, указанных индексами левого столбца, верхней строки, правого столбца и нижней строки блока ячейки. Поскольку эти свойства связаны с несколькими ячейками, они пишутся во множественном числе (с окончанием "s"):

  • BackgroundColors[ALeft, ATop, ARight, ABottom: Integer]: TsColor
  • CellBorders[ALeft, ATop, ARight, ABottom: Integer]: TsCellBorders
  • CellBorderStyles[ALeft, ATop, ARight, ABottom: Integer; ABorder: TsCellBorder]: TsCellBorderStyle
  • CellFonts[ALeft, ATop, ARight, ABottom: Integer]: TFont
  • CellFontColors[ALeft, ATop, ARight, ABottom: Integer]: TsColor
  • CellFontNames[ALeft, ATop, ARight, ABottom: Integer]: String
  • CellFontStyles[ALeft, ATop, ARight, ABottom: Integer]: TsFontStyles
  • CellFontSizes[ALeft, ATop, ARight, ABottom: Integer]: Single
  • HorAlignments[ALeft, ATop, ARight, ABottom: Integer]: TsHorAlignment
  • NumberFormats[ALeft, ATop, ARight, ABottom: Integer]: String
  • TextRotations[ALeft, ATop, ARight, ABottom: Integer]: TsTextRotation
  • VertAlignments[ALeft, ATop, ARight, ABottom: Integer]: TsVertAlignment
  • Wordwraps[ALeft, ATop, ARight, ABottom: Integer]: Boolean

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


Примеры

Этот пример добавляет формулу для сегодняшней даты в ячейку A1, форматирует ячейки для отображения числа в качестве даты и выбирает белый шрифт курсивом на светло-сером фоне. Вокруг ячейки пунктиром рисуется красная рамка.

const
  RED_DOTTED_BORDER: TsBorderStyle = (LineStyle: lsDotted; Color: scRed);

// Задаем содержимое ячейки
Grid.Cells[1,1] := '=TODAY()';

// Форматируем [содержимое] как дату
Grid.Numberformat[1,1] := 'yyyy/mm/dd';

// Выбираем цвет фона [сетки]
Grid.BackgroundColor[1,1] := scSilver;

// Выбираем [цвет и стиль] шрифта 
Grid.FontColor[1,1] := scWhite;
Grid.FontStyle[1,1] := [fssItalic];

// Прорисовываем границы ячейки 
Grid.Border[1,1] := [cbEast, cbWest, cbNorth, cbSouth];

// Определяем, как будут нарисованы границы ячеек
Grid.BorderStyle[1,1, cbEast] := RED_DOTTED_BORDER;
Grid.BorderStyle[1,1, cbWest] := RED_DOTTED_BORDER;
Grid.BorderStyle[1,1, cbNorth] := RED_DOTTED_BORDER;
Grid.BorderStyle[1,1, cbSouth] := RED_DOTTED_BORDER;

[Процесс] определения границ ячеек для более крупного блока ячеек с помощью этих свойств [вручную] будет довольно громоздким, потому что могут использоваться различные стили для внутренних, внутренних и внутренних ячеек. Чтобы решить эту задачу проще, сетка предоставляет метод ShowCellBorders, который получает координаты блока ячейки и стили левой, верхней, правой, нижней внешней и горизонтальной и вертикальной внутренних линий границы. Используйте константу NO_CELL_BORDER, при которой граница не должна быть выделена в определенном месте:

const
  THICK_CELL_BORDER: TsCellBorderStyle = (LineStyle: lsThick; Color: clBlack);
  DOTTED_CELL_BORDER: TsCellBorderStyle = (LineStyle: lsDotted; Color: clSilver);

// Нарисуем толстую рамку вокруг блока A1:C3, без внутренней границы
Grid.ShowCellBorders(1,1, 3,3,      // левая, верхняя, правая, нижняя координаты блока ячеек
  THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER,   // стили внешней границы
  NO_CELL_BORDER, NO_CELL_BORDER                                                // стили внутренней границы
);

// Нарисуйте толстую рамку вокруг блока A1: C3, серые горизонтальные внутренние линии пунктиром
Grid.SetCellBorders(1,1, 3,3, 
  THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER, THICK_CELL_BORDER, 
  DOTTED_CELL_BORDER, NO_CELL_BORDER
);

Комментарии ячейки

Комментарии могут быть добавлены в каждую ячейку с использованием свойства сетки CellComment[ACol, ARow: Integer]: String. Ячейки, содержащие комментарий, отмечены красным треугольником в верхнем правом углу ячейки. Если мышь перемещается в ячейку с комментарием, появляется всплывающее окно для отображения комментария.

Light bulb  Примечание: Чтобы всплывающее окно появилось, необходимо добавить флаг goCellHints в свойство Options сетки, а стандартное свойство сетки ShowHint должно [иметь значение] true. В противном случае всплывающие окна не будут отображаться.

Пример:

Grid.Cells[1,1] := '=pi()';
Grid.CellComment[1,1] := 'Число pi необходимо для вычисления площади и окружности круга.';

Гиперссылки в ячейках

Ячейки с прикрепленными гиперссылками позволяют пользователю перемещаться по другим ячейкам или другим документам [простым] нажатием на ячейку. Доступ к гиперссылкам можно получить с помощью свойства Hyperlink[ACol, ARow: Integer]: String. Строка гиперссылки содержит цель гиперссылки и необязательный текст всплывающей подсказки, который разделяется символом штриха ("|"). Внутренние цели уже обрабатываются сеткой, но для навигации у гиперссылки должен быть определен обработчик событий для OnClickHyperlink. Чтобы отличить нормальные клики по ячейкам от кликов по гиперссылкам, кнопка мыши должна удерживаться доли секунды до того, как будет [выполнен переход по] гиперссылке.

Пример:

// Пример добавления внешней гиперссылки
Grid.Cells[1,1] := 'Lazarus';
Grid.Hyperlink[1,1] := 'www.lazarus-ide.org|Открыть веб-сайт Lazarus';

// Пример добавления внутренней гиперссылки
Grid.Cells[2,2] := 'Итого';
Grid.Hyperlink[2,2] := '#Sheet2!B10|Перейдите к итогам, начиная с ячейки B10 листа 2';

// Пример для обработчика событий OnClickHyperlink, необходимого для внешних гиперссылок
uses
  ..., uriparser;

procedure TForm1.GridOnClickHyperlink(Sender: TObject; const AHyperlink: TsHyperlink);
begin
var
  uri: TUri;
begin
  uri := ParseURI(AHyperlink.Target);
  case Lowercase(uri.Protocol) of
    'http', 'https', 'ftp', 'mailto', 'file':
      OpenUrl(AHyperlink.Target);
    else
      ShowMessage('Гиперссылка ' + AHyperlink.Target + ' нажата');
  end;
end;
Light bulb  Примечание: Follow the instructions above to show the tooltip text as a popup window. Следуйте инструкциям выше, чтобы отобразить текст всплывающей подсказки в виде всплывающего окна.

Merged cells

A rectangular group of cells can be merged to a single block. The content of the top/left cell of this block is displayed across all the combined cells, the content of the other cells is ignored.

Use the method MergeCells to perform this operation. As parameters, it requires the left, top, right and bottom coordinates of the cell range to be merged. They also can be combined into a a TRect record. The method Unmerge splits a previously merged block again in the individual cells, here the coordinates of a single cell from the merged range is sufficient.

  // Example for merging
  Grid.MergeCells(1,1, 3,1);          // Combine the first 3 cells of the first row
  Grid.Cells[1,1] := 'Summary';       // Write the text "Summary" across the 3 cells
  Grid.HorAlignment[1,1] := haCenter; // and center it.

  // Example for unmerging
  Grid.UnmergeCells(1,1);             // Splits the merged block (1,1..3,1)

Column widths and row heights

Column 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.

  Grid.DefaultColWidth := 80;  // This is the width of all columns 
  Grid.ColWidths[10] := 10;    // except for column #10 which is only 10 pixels wide.

  Grid.DefaultRowHeight := 20; // All rows are 20 pixels high
  Grid.RowHeights[2] := 4;     // Row #2 serves as a spacer and is only 4 pixels high.

New grid properties

In addition to the properties inherited from its ancestors TCustomDrawGrid and TCustomGrid, the TsWorksheetGrid introduces the following new published properties:

  • AllowDragAndDrop (boolean): Cells can be dragged to a new location if this option is active. Move the mouse cursor to the border of the cells to be dragged until the mouse cursor becomes a four-sided arrow, and then begin dragging. If the dragged cell is referenced by a formula the formula is NOT updated - this behavior is different from Excel but agrees with Open/LibreOffice Calc.
  • AutoCalc (boolean): Formulas in the grid are automatically recalculated whenever cell content changes.
  • AutoExpand (set of aeData, aeNavigation, aeDefault):
    • If the option aeData is contained in the set AutoExpand then the grid automatically expands if cells are written outside the predefined range.
    • If AutoExpand contains the option aeNavigation then the user can navigate outside the predefined cell range; new rows and columns are automatically added to the grid (but not to the underlying worksheet). If a file is loaded into the grid then grid dimensions are automatically expanded to the range needed for the worksheet.
    • The option aeDefault comes into play if a grid is smaller than the DEFAULT_COL_COUNT and DEFAULT_ROW_COUNT default values. If this option is included the grid is automatically expanded to this default size. On the other hand, if ony a given number of rows and columns should be contained in the grid the option aeDefault must be removed before setting RowCount/ColCount.
  • EditorLineMode determines whether the grid's cell editor supports only single lines (elmSingleLine) or multiple lines (elmMultiLine). In the latter case, you can press CTRL+ENTER in order to begin a new line during editing a cell.
  • FrozenBorderPen: if the grid has frozen panes (see FrozenCols and FrozenRows) a separating line is drawn out the edge of the last frozen row and column. The property FrozenBorderPen determines how this line is drawn. Set FrozenBorderPen.Style = psClear to hide these lines.
  • FrozenCols and FrozenRows (integer): determines the number of non-scrolling columns (rows) at the left (top) of the grid. Technically these are custom-drawn fixed columns (rows) of the ancestor. Note that the user cannot navigate or edit cells within this range.
  • ReadFormulas (boolean): Reads formulas from the input files. Since fpspreadsheet does not support all formulas available in the Office spreadsheet applications there is a chance that reading of a file may crash due to formulas; in this case, reading of formulas can be disabled.
  • SelectionPen (TPen): determines how the border of the selected cell is painted. By default, the selected cell is outlined by a 3-pixel-wide black line.
  • ShowGridLines (boolean): allows to turn off the grid lines
  • ShowHeaders (boolean): can be used to turn off the column and row headers ('A', 'B', 'C', ..., '1', '2', '3'). The property DisplayFixedColRow has the same effect, but is deprecated now.
  • TextOverflow (boolean): If this property is on then long text content is allowed to extend into adjacent cells if these are empty. Note that numerical data cells are rounded such that the cell does not overflow.
  • WorkbookSource (TsWorkbookSource): links to the workbook source which provides the data. If empty, the grid uses an internal workbook source.

Events

  • OnClickHyperlink: This event fires whenever the user clicks a cell with an embedded hyperlink. Since clicking a cell normally would bring a cell into edit mode it is necessary to hold the mouse key down for about half a second to trigger the hyperlink event.

Recommended property values

In order to set up the grid to behave similar to the well-known Office applications we recommend the following grid property settings. It should be emphasized, though, that differences in usage do exist and cannot be removed without a major re-write of the inherited grid infrastructure:

  • AutoAdvance = aaDown: The ENTER key advances the selected cell to the next lower cell.
  • AutoCalc = true: Automatically calculate formulas
  • AutoEdit = true: For editing a cell, just begin typing. Alternatively you can begin edit mode by pressing F2.
  • AutoExpand = [aeData, aeNavigation, aeDefault]: Don't restrict usage of the grid to the predefined grid dimensions, for an Excel-like user-interface.
  • EditorLineMode = elmMultiLine: Activate cell editor supporting multiple lines during editing.
  • MouseWheelOption = mwGrid: The mouse wheel scrolls the grid, not the selected cell.
  • Options: add these flags to the standard options inherited from TCustomGrid:
    • goColSizing: the user can change a column width by dragging the vertical separating line between two column header cells
    • goRowSizing: the user can change a row height by dragging the horizontal separating line between two row header cells
    • goDblClickAutosize: a double-click on a separating line between two column or row header cells resizes the column width or row height to its optimum value.
    • goEditing: puts the grid into edit mode (same as AutoEdit)
    • goThumbTracking: immediate scrolling of the grid while the scrollbar is dragged with the mouse (if this option is off scrolling occurs at the moment when the mouse button is released).
  • TextOverflow = true: allow long cell text flow into empty adjacent cells

See also