SAS/AF Metaselector class
This sample is an abandoned work in progress with low to mid-grade quality code.
This single class does that same things as:
- Library Selector Control
- Member Selector Control
- Catalog Entry Selector Control
Plus it includes a mode for
- Data File Column Selector Control
To mimic the liblist(), dirlist(), catlist() and varlist() functions, a frame would have to be created that contains a metaselector class and has two buttons for OK and CANCEL.
A complete mimcry is not possible since some of the detail columns in the xxxlist() functions are not available to an AF developer. Here are the details that can not be known to AF:
- library members (e.g. catalogs, views, tables) catalog size and modification date
- catalog entries size
- icon categorizations and names as seen in SelectIcon() function.
All this 'privy' information comes to SAS/Explorer from engine internals and compiled C message libraries.
The class suffers from a few user interface oddities (as does the SAS Institute implementations.)
- Any number of selections can be made in the List View. Developer is responsible for ensuring maximumSelections is honored when using this class. (Same behavior as in xxxlist() functions)
This is due to in part, the inability of a List View Control to change it's selectionMode once it has been initialized. In general, the List View control does not honor the maximumSelections attribute while a user is clicking about (e.g. unselecting items selected earlier so that the number of selections does not exceed the maximum. List View does not maintain a 'items selected in this order' [as does the legacy list box] attribute, so a user-suitable 'unselection' algorithm is not possible.)
The important configuration attributes are set using the Properties editor:
maximumSelections selectorType - Library, Library Member, Catalog Entry or Data Set Column libraryFilter memberFilter entryFilter variableFilter
This sample is an abandoned work in progress with low to mid-grade quality code.Copyright 2000 Richard A. DeVenezia This page was last updated 19 April 2002.