ClassPackage: cgToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 10.1
Unrevised from 10.0 to 10.1.
10.0 version


A non-instantiable class that can be mixed with the grid-column class to create grid columns whose cells draw lamp widgets. Each cell in the column will display a lamp if the row of that cell is an instance of a grid-row subclass that mixes in the widget-row-mixin class.

To ensure that this mixin class' methods take precedence over other methods that specialize on grid-column, this mixin class generally should appear first in a defclass expression's list of superclasses, as in:

(defclass my-lamp-column
  (lamp-column-mixin my-subclass-of-grid-column) ...)

The draw-cell method provided by this mixin will draw (in each cell) the single lamp widget that is the value of the lamp-widget property of the grid column. It will call read-cell-value to determine the state of the lamp (off, on, or blinking) in each cell. The grid column may be given a data-read-converter function to convert arbitrary application values into corresponding lamp state values (nil, t, and :blinking).

The grid column may be given a title-reader property to determine the string to display in each lamp cell. If there is no title-reader function or it returns nil, then no label will be displayed beside the lamp image (and the lamp image will be centered within the grid cell).

Here is a typical expression for creating a lamp grid column. It assumes that the data-object of each grid-row has a slot called danger-level containing one of the values :low, :moderate, or :high.

(make-instance 'my-lamp-column
  :name :danger-level
  :proportional nil
  :section-size 24
  :data-reader 'danger-level
  :data-read-converter (lambda (user-value)
                         (case user-value
                           (:low nil)
                           (:moderate t)
                           (:high :blinking)))
  :lamp-widget (make-instance 'lamp
                 :on-color red
                 :lamp-shape :triangle
                 :lamp-width 16
                 :lamp-height 12))

The Employee grid example in the Navigator Dialog includes a lamp column.

See the section Built-In Grid Cell Widgets on the page for the grid-widget class for an overview of the grid column mixins.

A quicker but less object-oriented alternative to using the widget-column-mixin classes is to write cell-widget methods.

See the lamp widget.

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.

Allegro CL version 10.1
Unrevised from 10.0 to 10.1.
10.0 version