Class | Package: cg | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version

## row-selecting-column-mixin

A `grid-column` that is an instance of this class allows the user to select and/or move `grid-row`s by clicking the cells where they cross the `grid-column`. The selectable property of a row must also be true before the row may be interactively selected, and the movable property of a row must also be true before the row may be interactively moved. In other words, a row may be interactively selected at a particular cell if the row is a selectable one and the column at that cell is an instance of `row-selecting-column-mixin`; and (likewise) a row may be interactively moved (among the rows in its `grid-row-section`) at a particular cell if the row is a movable one and the column at that cell is an instance of `row-selecting-column-mixin`.

This feature is typically used only in a `grid-column` that serves as a set of row headers, so that the special row-selecting and/or -moving behavior does not override other cell-click behavior in the body of the `grid-widget`. Nevertheless, it may sometimes be desirable to use this class for multiple columns of a grid.

The user uses this feature by moving the mouse cursor into a cell in a selectable or movable `grid-row` where it crosses a row-selecting-column-mixin column. The user may click and drag vertically in this cell to reposition the `grid-row`, or click and release without moving the mouse more than `*start-drag-slack*` pixels to toggle the selected property of the row. When the mouse button is released after a drag, the row is positioned among the rows in its `grid-row-section` so that it is just below all of the rows whose vertical centers are above the final vertical center of the drag box (this should be intuitive). A drag may be canceled either by pressing the Escape key before releasing the mouse button or by releasing the mouse button while the drag box is positioned where the row would snap back to where it was already.

An individual selectable `grid-row` may be added to the current set of selected rows in its `grid-row-section` by holding down the control key while clicking the row; if the row is already selected, then this deselects the row instead. If the shift key is held down while clicking a selectable row, then the range of rows that just encompasses all of the rows that were already selected plus the row that was clicked are then left in a selected state (regardless of their selected state beforehand).

This class must be mixed with `grid-column` (or one of its subclasses) to make an instantiable class. It is best to specify such mixin classes ahead of the `grid-column` class in the list of superclasses for a new class, so that the small amount of special behavior from the mixin class will override the more general behavior of the `grid-column` class. For example:

    (defclass my-row-selecting-column (row-selecting-column-mixin grid-column)())

The above default mouse click behavior may be overridden by custom cell-click methods.

For an example of `row-selecting-column-mixin`, see the Navigator dialog example (on the Examples tab) entitled "Grid-Widget: a basic replicated editable-text column". See also the class `row-header-column`, which combines this class with `row-sizing-column-mixin` and `grid-column` for use as a typical column of row headers.

See also slide-subsection.

Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version