| Вот небольшая программа, которая поможет вам начать сортировку сетки строк ( TStringGrid ) по данным в выбранном столбце. Я хотел сделать верхнюю строку сетки фиксированной строкой и сохранить ее во время сортировки (т.е. оставить его в верхней строке, независимо от его значений). оказывается что ни Выходы события OnClick или OnCellSelect инициируются щелкает ячейку в фиксированной строке или столбце. Поэтому я использовал OnMouseUp . exit, чтобы инициировать вызов процедуры SortGrid . Струнная сетка имя и столбец для сортировки передаются как параметры. Сама сортировка почти тривиальна. Для каждой прокручиваемой строки i , проверить выбранные значения столбца на наличие всех более высоких номеров строк. Если найдено меньшее значение, поменяйте его местами со строкой Сортировку можно сделать более гибкой, передав SortGrid a «Column поле type» для идентификации строки, целого числа, значения с плавающей запятой или даты типы. SortGrid затем преобразует и сравнивает строку сетки значения в зависимости от типа столбца. Пока я просто форматирую числовое столбцы с начальными пробелами для сохранения алфавитного порядка сортировки и обработки все как струны.Приложение от 8 августа 2006 г.: Сегодня небольшое изменение в Подпрограмма OnMouseUp позволяет правильно распознавать столбцы переменной ширины. Я также должен упомянуть, что теперь Демонстрационная программа GridQuickSort, которая позволяет тип данных, как предложено выше, и использует алгоритм быстрой сортировки для многих более быстрая сортировка больших сеток. Щелкните здесь, чтобы загрузить пример программы GridSort.
|
тип TStringGrid | ||
защищенный | ||
классовая процедура WSRegisterClass; переопределить; |
| Регистрирует этот класс компонентов в текущем WidgetSet. |
общественный | ||
свойство Изменено: логическое значение; |
| Независимо от того, была ли текущая ячейка изменена |
свойство InplaceEditor: TWinControl; | ||
опубликовано | ||
свойство Align: TAlign; |
| Задает размещение элемента управления внутри его родительского элемента. |
свойство AlternateColor: TColor; |
| Цвет, который будет использоваться для фона в чередующихся рядах сетки. Наличие чередующихся строк разного цвета может облегчить чтение сетки. |
свойство Anchors: TAnchors; |
| Набор определений привязки для этого элемента управления. |
свойство AutoAdvance: TAutoAdvance; |
| Автоматически перемещаться вниз по сетке при последовательных щелчках мыши или нажатии клавиши ENTER или TAB |
свойство AutoEdit: Boolean; |
| Автоматический вход в режим редактирования при выборе ячейки |
свойство AutoFillColumns: Boolean; |
| Автоматически изменять размер столбцов, чтобы они заполняли всю видимую область сетки |
свойство BiDiMode: TBiDiMode; | ||
свойство BorderSpacing: TControlBorderSpacing; |
| Определяет расстояние между внутренней и внешней границей для этого элемента управления. |
свойство BorderStyle: TBorderStyle; |
| Позволяет отображать границу (линию) вокруг элемента управления, |
свойство CellHintPriority: TCellHintPriority; | ||
свойство Color: TColor; |
| Цвет фона элемента управления. |
свойство ColCount: Integer; |
| Количество столбцов сетки. |
свойство ColumnClickSorts: Boolean; | ||
Свойство Столбцы: TGridColumns; |
| Свойства столбцов в этой сетке |
свойство Ограничения: TSizeConstraints; | ||
свойство DefaultColWidth: Integer; |
| Значение по умолчанию для ширины вновь создаваемых столбцов сетки. |
свойство DefaultDrawing: Boolean; |
| Будет ли использоваться метод рисования по умолчанию для этой сетки? По умолчанию ИСТИНА |
свойство DefaultRowHeight: Integer; |
| Значение по умолчанию для высоты вновь создаваемых строк сетки. |
свойство DoubleBuffered: логическое значение; | ||
свойство DragCursor: TCursor; |
| Форма курсора, отображаемая при перетаскивании элемента управления. |
свойство DragKind: TDragKind; |
| Операция при перетаскивании элемента управления — Drag or Dock. |
свойство DragMode: TDragMode; |
| Позволяет пользователю перетаскивать элемент управления. |
свойство Включено: логическое значение; |
| Определяет, реагирует ли элемент управления на ввод с помощью мыши или клавиатуры. |
свойство ExtendedSelect: Boolean; |
| ExtendedSelect — возможность выделения ячеек за границу видимой части сетки |
свойство FixedColor: TColor; |
| Цвет фиксированных ячеек сетки. |
свойство FixedCols: Integer; |
| Количество фиксированных столбцов сетки (т. е. столбцов, содержащих материал заголовка или идентификатора, которые не прокручиваются при перемещении остальной части сетки). |
свойство FixedRows: Integer; |
| Количество фиксированных строк сетки (т. |
свойство Flat: Boolean; |
| Отображаемая ячейка Плоская , т.е. без текстурирования или эффекта приподнятости/опускания |
свойство Font: TFont; |
| |
свойство GridLineWidth: Integer; |
| Ширина (толщина) линий сетки |
свойство HeaderHotZones: TGridZoneSet; |
| HeaderHotZones — зоны заголовков, соответствующие положению курсора мыши |
свойство HeaderPushZones: TGridZoneSet; |
| HeaderPushZones — зоны заголовка, которые были сдвинуты вниз (выбраны) |
свойство ImageIndexSortAsc: TImageIndex; | ||
свойство ImageIndexSortDesc: TImageIndex; | ||
свойство MouseWheelOption: TMouseWheelOption; | ||
Параметры свойства: TGridOptions; |
| Варианты, доступные для использования в этой сетке |
свойство Options2: TGridOptions2; | ||
свойство ParentBiDiMode: Boolean; | ||
свойство ParentColor: Boolean; |
| Если true, цвет элемента управления будет таким же, как цвет родительского элемента. Значение по умолчанию верно. |
свойство ParentDoubleBuffered: Boolean; | ||
свойство ParentFont: Boolean; | ||
свойство ParentShowHint: логическое значение; |
| Если true, значение ShowHint для элемента управления будет таким же, как и для родительского элемента. Значение по умолчанию верно. |
свойство PopupMenu: TPopupMenu; |
| Контекстное меню, которое появляется при щелчке правой кнопкой мыши по этому элементу управления |
свойство RangeSelectMode: TRangeSelectMode; | ||
свойство RowCount: Integer; |
| Количество строк в сетке |
свойство ScrollBars: TScrollStyle; |
| Полосы прокрутки для использования с этой сеткой |
свойство ShowHint: логическое значение; |
| Включает отображение подсказок. |
свойство TabAdvance: TAutoAdvance; | ||
свойство TabOrder: TTabOrder; |
| Определяет последовательность элементов управления, доступных, когда пользователь нажимает клавишу Tab. |
свойство TabStop: Boolean; |
| Позволяет пользователю перейти к этому элементу управления, нажав клавишу Tab. |
свойство TitleFont: TFont; |
| Шрифт для заголовка сетки |
свойство TitleImageList: TImageList; |
| TitleImageList — список изображений, которые будут использоваться с заголовками |
свойство TitleStyle: TTitleStyle; |
| Стиль заголовка сетки |
свойство UseXORFeatures: Boolean; |
| UseXORFeatures : если установлено значение True, точечный прямоугольник фокуса рисуется с использованием растровой операции XOR |
свойство Видимое: логическое значение; |
| Позволяет показать или скрыть элемент управления и все его дочерние элементы. |
свойство VisibleColCount: Integer; |
| Количество видимых столбцов |
свойство VisibleRowCount: Integer; |
| Количество видимых строк |
свойство OnAfterSelection: TOnSelectEvent; | ||
свойство OnBeforeSelection: TOnSelectEvent; |
| OnBeforeSelection — обработчик событий для использования перед выбором |
свойство OnCellProcess: TCellProcessEvent; | ||
свойство OnChangeBounds: TNotifyEvent; |
| Обработчик события изменения границ элемента управления. |
свойство OnCheckboxToggled: TToggledCheckboxEvent; | ||
свойство OnClick: TNotifyEvent; |
| Обработчик уведомлений о щелчках мыши. |
свойство OnColRowDeleted: TGridOperationEvent; |
| Обработчик событий при удалении столбца или строки сетки |
свойство OnColRowExchanged: TGridOperationEvent; |
| Обработчик событий, когда положение столбца или строки сетки заменяется другим |
свойство OnColRowInserted: TGridOperationEvent; |
| Обработчик событий при вставке столбца или строки в сетку |
свойство OnColRowMoved: TGridOperationEvent; |
| Обработчик событий при перемещении столбца или строки сетки |
свойство OnCompareCells: TOnCompareCells; |
| Обработчик событий для сравнения содержимого ячеек |
свойство OnContextPopup: TContextPopupEvent; |
| Вызывается при запросе контекстно-зависимого всплывающего меню. |
свойство OnDragDrop: TDragDropEvent; |
| Этот обработчик определяет действие при перетаскивании на этот элемент управления в операции перетаскивания. |
свойство OnDragOver: TDragOverEvent; |
| Обработчик событий для элемента управления, перетаскиваемого на этот элемент управления. |
свойство OnDblClick: TNotifyEvent; |
| Обработчик событий для двойных щелчков мыши. |
свойство OnDrawCell: TOnDrawCell; |
| Обработчик событий для рисования ячейки |
свойство OnEditButtonClick: TNotifyEvent; устарело; |
| Обработчик событий при нажатии кнопки «Изменить» |
свойство OnButtonClick: TOnSelectEvent; | ||
свойство OnEditingDone: TNotifyEvent; |
| Обработчик событий при завершении редактирования. |
свойство OnEndDock: TEndDragEvent; |
| Обработчик уведомлений об окончании операции стыковки. |
свойство OnEndDrag: TEndDragEvent; |
| Обработчик уведомлений об окончании операции перетаскивания. |
свойство OnEnter: TNotifyEvent; |
| Обработчик для управления получением фокуса. |
свойство OnExit: TNotifyEvent; |
| Обработчик контроля потери фокуса. Это хорошее место для проверки окончательного пользовательского ввода. |
свойство OnGetCellHint: TGetCellHintEvent; |
| Получить индивидуальную подсказку для каждой ячейки |
свойство OnGetCheckboxState: TGetCheckboxStateEvent; | ||
свойство OnGetEditMask: TGetEditEvent; |
| Обработчик событий для поиска маски редактирования при редактировании ячейки сетки |
свойство OnGetEditText: TGetEditEvent; |
| Обработчик событий для поиска редактируемого текста в ячейке сетки |
свойство OnHeaderClick: THdrEvent; |
| Обработчик событий при щелчке заголовка столбца или строки |
свойство OnHeaderSized: THdrEvent; |
| Обработчик событий при изменении размера заголовка столбца или строки |
свойство OnHeaderSizing: THeaderSizingEvent; | ||
свойство OnKeyDown: TKeyEvent; |
| Обработчик нажатой клавиши клавиатуры. |
свойство OnKeyPress: TKeyPressEvent; |
| Обработчик символа, введенного пользователем. |
свойство OnKeyUp: TKeyEvent; |
| Обработчик клавиш клавиатуры освобожден. |
свойство OnMouseDown: TMouseEvent; |
| Обработчик события нажатия кнопки мыши. |
свойство OnMouseEnter: TNotifyEvent; | ||
свойство OnMouseLeave: TNotifyEvent; | ||
свойство OnMouseMove: TMouseMoveEvent; |
| Обработчик событий движения мыши внутри элемента управления. |
свойство OnMouseUp: TMouseEvent; |
| Обработчик события нажатия кнопки мыши. |
свойство OnMouseWheel: TMouseWheelEvent; | ||
свойство OnMouseWheelDown: TMouseWheelUpDownEvent; |
| Обработчик уведомлений о движении колесика мыши вниз. |
свойство OnMouseWheelUp: TMouseWheelUpDownEvent; |
| Обработчик уведомлений о движении колесика мыши вверх. |
свойство OnMouseWheelHorz: TMouseWheelEvent; | ||
свойство OnMouseWheelLeft: TMouseWheelUpDownEvent; | ||
свойство OnMouseWheelRight: TMouseWheelUpDownEvent; | ||
свойство OnPickListSelect: TNotifyEvent; |
| Обработчик событий для выбора элемента из раскрывающегося списка (например, раскрывающийся список в TComboBox ) |
свойство OnPrepareCanvas: TOnPrepareCanvasEvent; |
| Обработчик событий для подготовки Canvas для чертежа |
свойство OnResize: TNotifyEvent; |
| Обработчик уведомлений об изменении размера элемента управления. |
свойство OnSelectEditor: TSelectEditorEvent; |
| Обработчик событий для выбора редактора |
свойство OnSelection: TOnSelectEvent; |
| Обработчик событий при выборе области сетки (одной или группы ячеек) |
свойство OnSelectCell: TOnSelectCellEvent; |
| Обработчик событий при выборе ячейки сетки |
свойство OnSetCheckboxState: TSetCheckboxStateEvent; | ||
свойство OnSetEditText: TSetEditEvent; |
| Обработчик событий для сохранения отредактированного текста в ячейке |
свойство OnShowHint: TControlShowHintEvent; |
| Обработчик событий, когда должна быть показана подсказка. |