home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / BGUI / AutoDoc / RexxBGUI.doc < prev    next >
Encoding:
Text File  |  2000-05-09  |  22.8 KB  |  640 lines

  1. rexxbgui.library version 4.0
  2. Date: June 24, 1999
  3. Copyright © Jilles Tjoelker 1999
  4.  
  5. New in V4.0:
  6. * Version number bumped because of new functions.
  7. * Added image buttons.
  8. * Added a simple file requester function.
  9. * Added a function to set up listview control with the arrow keys.
  10. * Bug fixed: I once disabled CYC_Active but forgot to enable it again.
  11.  
  12. New in V3.0:
  13. * Version number bumped because of new functions.
  14. * Added separators and cycle gadgets.
  15. * Added version testing functions bguirexxversion() and bguiversion().
  16.  
  17. New in V2.0:
  18. * Version number bumped because of new functions.
  19. * Added menus.
  20. * Added progress bar (suggested by Ingo Musquinier) and indicator.
  21. * Bug fixed: bguiwindow() did not get the argument count correctly. This
  22.   caused problems, because ARexx does not clear extra argument slots but
  23.   instead leaves in them what values happen to be contained in them from
  24.   previous function calls.
  25.  
  26. New in V1.1:
  27. * New functions: bguiwinbusy(), bguiwinready(), bguipages(), bguimx(),
  28.   bguiactivategadget(), bguilist(), bguiaddcondit(), bguilistvaddentry(),
  29.   bguilistvcommand(), bguilistvreplacesel()
  30. * New argument for bgui[hv]group(), equal, to force equal width or height
  31.   of the objects in the group
  32. * New argument for bguiwindow(), pos, to open the window on another position
  33.   than centred on the screen
  34. * Some nonfunctional tags removed
  35. * New tags: BT_#?, PAGE_#?, MX_#?, TAG_IGNORE
  36. * Better documentation
  37. * Bug fixed: the library could be flushed from memory when a bguiopen() was
  38.   still outstanding.
  39. * A control-C break is now accepted immediately in bguiwinwaitevent() and
  40.   bguiwait() and passed to ARexx.
  41. * Bug fixed: BGUI 41.10 took the command name, which is always equal to "", for
  42.   the prefs filename. Fixed by temporarily setting the pr_Cli pointer to zero.
  43.  
  44. Look in the example scripts for more information.
  45. General ARexx limitation: functions can only have up to 15 arguments.
  46.  
  47. ESCAPE SEQUENCES
  48. Escape sequences can be used in most texts, including labels, frame titles
  49. info object contents and listview entries. Frame titles may have shadow.
  50. Listview entries and labels within objects can be text on background or
  51. filltext on fill; when you change the colours it cannot be restored.
  52. ESC='1b'x or just use the Esc key to put it in a string constant.
  53.  
  54. ESC||ESC no operation; used to separate sequences ending in a digit
  55.          from normal digits.
  56. ESC'u'   underlined on (do not use for indicating a hotkey)
  57. ESC'b'   bold on
  58. ESC'i'   italics on
  59. ESC'z'   underscore on (can indicate the hotkey for a gadget, only visual
  60.          though, use BT_Key to make it work)
  61. ESC'n'   normal text
  62. ESC'd'n  set DrawInfo pen #n (2=text, 3=shine, 4=shadow, 5=selected gadget
  63.          fill, 6=text on fill, 7=background, 8=important text)
  64. ESC'p'n  set colour #n
  65. ESC'D'n  set DrawInfo pen #n as background
  66. ESC'P'n  set colour #n as background
  67. ESC's'   shadow on (additionally use ESC'd3')
  68. ESC'-'ch turn something off (ch=u/b/i/s/z)
  69. ESC'c'   centre this and the following lines
  70. ESC'r'   right-justify this and the following lines
  71. ESC'l'   left-justify this and the following lines
  72. '0a'x    new line. This does not work for listview entries and frame titles.
  73.  
  74. FUNCTIONS
  75.  
  76. success=bguiopen([taskname],[noerrorifopenfail])
  77. This function opens bgui.library. Version 41 is required.
  78. taskname indicates the name of the prefs file, default "ARexx".
  79. Predefined are: ID.WIN(CLOSE|NOMORE|INACTIVE|ACTIVE).
  80. If this function has not yet been called, all functions starting with
  81. 'bgui' cause "Error return from function".
  82.  
  83. x=bguiwait()
  84. Wait for most events; Control-C is passed trough to ARexx
  85. (signal on break_c).
  86.  
  87. id=bguiwinevent(winobj,[destvar])
  88. This function does not wait for events.
  89.  
  90. id=bguiwaitwinevent(winobj,[destvar])
  91. This function is much more efficient than the bguiwinevent()/bguiwait()
  92. combination.
  93.  
  94. success=bguiwinopen(winobj)
  95. This function must be used to open a window. When a window object is created,
  96. it does not open automatically, unlike some other GUI engines' behaviour.
  97. This enables you to do things like bguiwintabcycleorder() in time.
  98.  
  99. x=bguiwinclose(winobj)
  100.  
  101. success=bguiwinbusy(winobj)
  102. Use this function to set a busy pointer and zero-size requester that blocks
  103. input on a window. It nests, i.e. the window will not be unblocked until
  104. one bguiwinready() has been done for each bguiwinbusy() executed.
  105.  
  106. success=bguiwinready(winobj)
  107.  
  108. obj=bguiwindow(title,mastergroup,[scalew],[scaleh],[refwin],[scrname],[pos],[menu])
  109. scale[wh]: 0% = minimum size, 100% = full screen
  110. Precede scalew and/or scaleh with a minus sign to lock the dimension.
  111. Locking both removes the size gadget.
  112. refwin: the new window object will open on the same screen as refwin
  113. pos 'S' centre on screen
  114.     'M' centre on mouse pointer
  115.     'T' top-left of the screen
  116.     'W' centre on window
  117.     'B' l t w h position in screen (pixel) coordinates
  118.     'R' l t w h centre window on this box
  119.     '*' (anywhere) do not activate window upon opening (doesn't really
  120.         fit here but this saves arguments)
  121. menu: concatenate bguimenu() results
  122.  
  123. info=bguilayout(tag,value,[tag],[value],...)
  124. Concatenate the return value of this to an object. It does not work for
  125. VarSpace members.
  126.  
  127. info=bguivarspace(weight)
  128. A weight controlled spacing in a group; 1<weight<1023
  129. bguilayout() cannot be used on this.
  130.  
  131. obj=bgui[hv]group(objects,[spacing],[offset],[title],[equal])
  132. Double use of objects or forgotten '||' is caught -> error 12.
  133. spacing/offset -1 narrow
  134.                -2 normal (default, unlike groupclass itself)
  135.                -3 wide
  136. offset 'F' frame (required for a title)
  137. equal 'W' all objects the same width
  138.       'H' all objects the same height
  139.       'S' all objects the same width and height
  140.  
  141. obj=bguipages(name,objects)
  142. This function only creates OBJ.name, not ID.name.
  143. Do not set PAGE_Active values which are out of range!
  144. The usage of pages increases the number of objects that can be in a window
  145. and therefore object creation time. The BGUI prefs program is an example of
  146. this!
  147.  
  148. obj=bguibutton(name,label)
  149. As other "real" gadget creation functions, this one sets both ID.name
  150. (compare with bguiwinevent() or bguiwinwaitevent() result) and OBJ.name (for
  151. bguiget() and similar functions).
  152.  
  153. Prefix the keyboard shortcut with '_' in label. This also applies to other
  154. gadgets. Take care that all shortcuts are different! BGUI does not check
  155. this (MUI doesn't either). This type of bug is present in much software.
  156.  
  157. obj=bguitoggle(name,label,[state])
  158.  
  159. obj=bguicheckbox(name,[label],[state])
  160.  
  161. obj=bguiibutton(name,itype,idata,[label],[lplace])
  162. Image button.
  163.  
  164. itype 'B' BGUI built-in
  165.       'I' icon
  166.       'M' bitmap image
  167.       'V' vector (not yet implemented)
  168.       '-' (anywhere) no frame
  169.       '*' (anywhere) no spacing between frame and image
  170. idata (itype='B') number, 'F'=getfile, 'P'=popup, 'D'=getpath
  171.       (itype='I') filename without .info
  172.       (itype='M') one or two results of bguiimage() (normal & selected)
  173.       (itype='V') string
  174. lplace 'L' left (default)
  175.        'R' right
  176.        'A' above
  177.        'B' below
  178.  
  179. obj=bguiinfo(name,[label],contents)
  180. Non-clickable information object.
  181.  
  182. obj=bguistring(name,[label],[contents],maxchars)
  183.  
  184. obj=bguiinteger(name,[label],[contents],[maxchars],[min],[max])
  185. It is not guaranteed, that min<=bguiget(int,STRINGA_LongVal)<=max.
  186.  
  187. obj=bguilistview(name,[label],[stem],[type],[ncolumns])
  188. type 'R' read-only
  189.      'S' select (default)
  190.      'D' drag'n'drop
  191. In multi-column listview entries, the columns are separated by a tab
  192. character. Attributes set with escape sequences do not continue from
  193. one column to the next.
  194. Optionally, you can append column weights to ncolumns, e.g. '3 10 45 45' to
  195. create one small column and two wider ones.
  196.  
  197. obj=bguimx(name,[label],stem,[type])
  198. type 'R' radio buttons (default)
  199.      'T' tabs
  200.      'U' upside down tabs
  201. The number of entries is limited to 63 (it must fit on the screen, so it's not
  202. much of a limitation)
  203.  
  204. obj=bguicycle(name,[label],stem,[type])
  205. type 'P' force popup regardless of BGUI prefs
  206.      'N' popup if enabled in BGUI prefs (default)
  207. Pop on active setting is taken from BGUI prefs
  208. The number of entries is limited to 63 (BGUI popup cycles truncate a list that
  209. doesn't fit on the screen, so it's not much of a limitation)
  210.  
  211. obj=bguiprogress(name,[label],min,max,[format],[type])
  212. format: C-style format string for text in the gadget. Use %ld as a
  213. placeholder for the number. Other percent signs must be doubled. Other
  214. possibilities: "%03ld" forces a field size of three digits and pads on the
  215. left with zeroes. "%lD" formats the number according to the language selected
  216. and works only if locale.library is installed. "%lx" creates a hexadecimal
  217. format.
  218. BGUI 41.10 draws the text in the last colour used (if done=max then the
  219. progress bar colour else the background colour) because of a bug, therefore
  220. the format string should begin with ESC'd2'ESC||ESC (not necessarily 2).
  221. ESC'D'n is also recommended if the text should be always visible on two
  222. colour screens or screens with strange pens (e.g. non-newlook (no 3D look)).
  223. If you don't want the problems of a format string, then you can use
  224. bguiaddmap() to put the number in an indicator next to the progress bar.
  225. type 'H' horizontal
  226.      'V' vertical
  227. The amount done is set to zero or the minimum.
  228.  
  229. obj=bguiindicator(name,[label],min,max,[level],[justify],[format])
  230. Textual level indication gadget.
  231. justify 'L' left (default)
  232.         'C' centre
  233.         'R' right
  234. format: the same thing as in bguiprogress() except that setting colours is
  235. not necessary and that it has a default "%ld".
  236.  
  237. obj=bguihseparator([title])
  238. Horizontal separator line with optional title.
  239. Use in vertical groups only.
  240. This function does not take a name argument because modifying the object is not
  241. supported by RexxBGUI and not useful anyway.
  242.  
  243. obj=bguivseparator()
  244. Vertical separator line.
  245. Use in horizontal groups only.
  246. This function does not take a name argument because modifying the object is not
  247. supported by RexxBGUI and not useful anyway.
  248.  
  249. res=bguiget(obj,attr)
  250. Error descriptions here:
  251. "Invalid keyword" if you supplied an attribute that RexxBGUI does not know -
  252. see "tags" further on in this file for which attributes are available.
  253. "Error return from function" if the obj parameter was not OK or if the
  254. object did not understand the attribute, for example an attribute of another
  255. gadget class or one that is not gettable;
  256. "Wrong number of arguments" if rm->rm_Action & 0xF is not 2 or if
  257. rm_Args[1] or rm_Args[2] is equal to zero.
  258.  
  259. x=bguiset(obj,[refwin],tag,value,[tag],[value],...)
  260. refwin: window object in which the gadget is located; necessary if you want
  261. visual updating. Specifying another window causes strange results...
  262. If you need to set more than 6 tags, split it out over multiple calls and
  263. omit refwin in all possibly except the last. Put at least one attribute
  264. causing visual update in the last call, if you want any update.
  265.  
  266. gad=bguireq(text,gadgets,[title],[refwin],[scrname])
  267. RequestChoice/rtEZRequest() like requester. Use '|' to separate the gadgets.
  268. An asterisk adds return as a shortcut for the button it stands before and
  269. escape for the last one. Underscores can be used to prefix keyboard shortcuts.
  270. The window specified by refwin will automatically get a busypointer.
  271. Title defaults to refwin's title, or "BGUI Request" or its localized
  272. equivalent if wndobj is not given.
  273. Scrname does not work.
  274. gad: 1 for the first, 2 for the second, etc. and 0 for the last gadget.
  275.  
  276. success=bguiaddmap(srcobj,dstobj,sattr,dattr)
  277. This function connects two objects so srcobj will update dstobj's dattr
  278. when its sattr changes. This happens even without bguiwinevent().
  279.  
  280. Example usages:
  281. Listview with connected string gadget:
  282. call bguiaddmap(obj.listv,obj.str,LISTV_Entry,STRINGA_TextVal)
  283. Listview to select a page (#of listview entries must be #of pages!!!):
  284. call bguiaddmap(obj.listv,obj.pages,LISTV_EntryNumber,PAGE_Active)
  285.  
  286. The number of attributes that can cause notification (sattr) or be updated
  287. (dattr) is more limited than the number that can be used with bguiget() or
  288. bguiset(). If notification does not work, you'll have to fall back to the
  289. latter mechanism.
  290.  
  291. There is no "initial" notification.
  292.  
  293. Notification of LGO attributes may cause a crash. Using bguiset() is safer.
  294.  
  295. success=bguiaddcondit(srcobj,dstobj,iftag,ifval,thtag,thval,eltag,elval)
  296. This function connects two objects so srcobj will update dstobj depending
  297. on its ifattr. This is more or less equivalent to doing this when srcobj's
  298. iftag changes:
  299. IF bguiget(srcobj,iftag)=ifval THEN CALL bguiset(dstobj,thtag,thval),
  300.   ELSE CALL bguiset(dstobj,eltag,elval)
  301. This happens even without bguiwinevent(). See also bguiaddmap().
  302.  
  303. Integer tags only.
  304.  
  305. Always test boolean tags for 0 and never for 1.
  306.  
  307. Example usage:
  308. Yes/No setting that makes a choice impossible:
  309. call bguiaddcondit(obj.check,obj.mx,GA_Selected,0,MX_EnableButton,0,
  310. ,MX_DisableButton,0)
  311.  
  312. MX_DisableButton,n will never change MX_Active. You have to check separately
  313. if the selection is still possible.
  314.  
  315. If you init the checkbox to on, the first MX button will not be enabled
  316. initially. If you init the checkbox to off and set it to on after this call,
  317. it will be OK.
  318.  
  319. count=bguilistvgetentries(listvobj,stemname,[type])
  320. type 'A' all
  321.      'S' selected only
  322.  
  323. success=bguilistvaddentry(listvobj,[refwin],entry,[where],[flags])
  324. where 'H' head
  325.       'T' tail
  326.       'S' sorted
  327.       number add before entry n
  328. flags 'S' select
  329.       'M' multiselect
  330.       '+' make visible by scrolling list if necessary
  331.       '-' do not make visible
  332. 'S' or 'M' makes visible automatically unless disabled with '-'
  333.  
  334. rc=bguilistvcommand(listvobj,[refwin],command)
  335. command 'clear' delete all entries
  336.         'refresh' refresh listview and scroller
  337.         'sort'
  338.         'redraw' redraw all entries only
  339.         'remselected' also selects new entry
  340.  
  341. success=bguilistvreplacesel(listvobj,[refwin],new)
  342. Use this function to replace the first selected entry of a listview by another.
  343. If no entry is selected, a new one is added and selected.
  344.  
  345. success=bguiwintabcycleorder(winobj,objects)
  346. RexxBGUI can only check the validity of the objects array to a limited
  347. extent: if a multiple of four spaces is intermixed wrong object pointers
  348. are used and a crash can be expected if tab is pressed in the first gadget.
  349.  
  350. image=bguiimage(left,top,width,height,depth,data,planepick,planeonoff)
  351. Creates an Image structure and returns the pointer. Use this for the idata
  352. parameter of bguiibutton() if itype='M'.
  353.  
  354. Create these function calls with the MakeImage program.
  355.  
  356. nm=bguimenu(type,[label],[commkey],[flags],[mutualexclude],[id])
  357. Creates a NewMenu structure. Concatenate some of these and pass the result
  358. to bguiwindow(). If IDs (bguiwinevent()) are to be shared between gadgets
  359. and menuitems, create the gadgets first. Do not give a checkbox and a
  360. CHECKIT|TOGGLE item the same ID as it will be impossible to distinguish
  361.  
  362. type '1' menu title
  363.      '2' item
  364.      '3' subitem
  365. Omitting label gives a separator bar (automatically disabled).
  366. commkey: RAmiga-... shortcut
  367. flags 'DISABLED'
  368.       'CHECKIT' can be checked (not unchecked)
  369.       'CHECKED' has checkmark
  370.       'TOGGLE' specify CHECKIT too
  371. mutualexclude: selecting this CHECKIT item deselects these items
  372.                (bit #x means item #x)
  373. id: may be either a number or a name of a variable
  374.     number: selecting the item generates this ID
  375.     variable: generate a new ID and store it in the variable
  376.     Therefore you can write bguimenu(...,id.quit) and it will
  377.     automatically share its ID with a gadget's, if it is present.
  378.  
  379. Example:
  380. menu=bguimenu(1,'Project')||,
  381.       bguimenu(2,'About...','?',,,id.about)||,
  382.       bguimenu(2)||,
  383.       bguimenu(2,'Quit','Q',,,id.quit)||,
  384.      bguimenu(1,'Testing')||,
  385.       bguimenu(2,'Have your cake',,'CHECKIT CHECKED','10'b,id.hyc)||,
  386.       bguimenu(2,'Eat it too',,'CHECKIT','01'b,id.eit)||,
  387.       bguimenu(2,'On or off???',,'CHECKIT TOGGLE',,id.ooo)||,
  388.       bguimenu(2)||,
  389.       bguimenu(2,'Subitems')||,
  390.        bguimenu(3,'Subitem #1','1',,,id.sub1)||,
  391.        bguimenu(3,'Subitem #2','2',,,id.sub2)||,
  392.        bguimenu(3,'Subitem #3','3','DISABLED',,id.sub3)
  393.  
  394. success=bguiwindisablemenu(winobj,id,state)
  395.  
  396. success=bguiwincheckitem(winobj,id,state)
  397.  
  398. rc=bguiwinmenudisabled(winobj,id)
  399. rc 1 disabled
  400.    0 enabled
  401.    -1 unknown menu/no menus at all attached to window
  402.  
  403. rc=bguiwinitemchecked(winobj,id)
  404. rc 1 checked
  405.    0 not checked
  406.    -1 unknown menu/no menus at all attached to window
  407.  
  408. success=bguiactivategadget(gadget,refwin)
  409. This call may fail, although that's usually not a severe problem...
  410. RexxBGUI can only check the validity of the objects to a limited extent.
  411.  
  412. x=bguiclose()
  413. This MUST be called before exiting the script.
  414.  
  415. success=bguireadentries(filename,stemname)
  416. When using READLN(), EOF cannot be distinguished from an empty line.
  417. Therefore this function is present. It reads lines from a file to a stem
  418. in a format suitable for the listview gadget.
  419.  
  420. stemname=bguilist(stemname,entry0,[entry1],...)
  421. This function allows you to place small lists (<=14 entries) for listviews
  422. directly in the gadget creation function, a bit like in E [e0,e1,...].
  423. It sets stemname.COUNT and stemname.x (0<=x<stemname.COUNT)
  424.  
  425. Example:
  426. ...
  427. bguilistview('switcher',,bguilist('pnames','Single-Select','Multi-Select'))||,
  428. ...
  429. drop pnames. /* not really necessary */
  430.  
  431. x=bguilistvcontrol([listvobj],[winobj],[arrows_id],[enter_id])
  432. This function will cause the arrow keys up and down to control the the
  433. listview. They do only in the window specified. You can receive events for
  434. the arrow keys and for return and enter keys. You can specify either a number
  435. or a variable name which will receive a newly generated ID.
  436. Leaving out all arguments turns off this feature. If an argument is left out,
  437. (but there are arguments at all), that setting is not changed.
  438. Never ever set winobj if listvobj is invalid.
  439. Initially, winobj is zero and the other values are undefined.
  440.  
  441. path=bguifilereq([path],[title],[winobj],[flags],[patvar])
  442. Subsequent calls will remember the path, the pattern and the requester's
  443. position and size, but not the title, the window object pointer and the flags.
  444. winobj: window object pointer. The requester will open on the same screen and
  445. the window will be locked like bguiwinbusy().
  446. flags 'DOSAVEMODE'
  447.       'DOPATTERNS' pattern gadget; a pattern may be used without it
  448.       'DRAWERSONLY'
  449.       'FILTERDRAWERS'
  450.       'REJECTICONS'
  451. patvar: name of a variable that contains the pattern. When the requester is
  452. closed, the possibly changed pattern is stored in it. If the variable does not
  453. exist, the argument is used literally as a pattern, but the changed pattern is
  454. not stored in any variable.
  455. If the requester was cancelled, the function returns the empty string, else it
  456. returns the path (the drawer and file concatenated with a slash in between if
  457. necessary).
  458.  
  459. x=bguierror(code)
  460. This function causes an ARexx error, e.g. bguierror(12) causes "Error return
  461. from function".
  462.  
  463. result=bguirexxversion([version],[revision])
  464. Syntax #1: available=bguirexxversion(version,[revision])
  465. Syntax #2: version=bguirexxversion() /* could return '3.0' */
  466.  
  467. result=bguiversion([version],[revision])
  468. Syntax #1: available=bguiversion(version,[revision])
  469. Syntax #2: version=bguiversion() /* could return '41.8' */
  470.  
  471. TAGS: General information
  472. Types:
  473. INT=integer, may be boolean (0 means false, anything else means true)
  474. STRING=string
  475. OBJECT=4-byte pointer
  476.  
  477. Applicability: ISGNU
  478. I=Init (not applicable for RexxBGUI)
  479. S=Set (bguiset())
  480. G=Get (bguiget())
  481. N=Notify (bguiaddmap() sattr/bguiaddcondit() ifattr)
  482. U=Update (bguiaddmap() dattr/bguiaddcondit() thattr/elattr)
  483. -=not possible
  484. ?=not known to me, try it
  485.  
  486. WINDOW_#? TAGS
  487.  
  488. WINDOW_Window                 OBJECT --G--
  489.  
  490. INFO_#? TAGS
  491.  
  492. INFO_TextFormat               STRING IS--U
  493. INFO_MinLines                 INT
  494. INFO_FixTextWidth             INT
  495.  
  496. STRINGA_#? TAGS
  497.  
  498. STRINGA_TextVal               STRING ISGNU makes string gadget
  499. STRINGA_LongVal               INT    ISGNU makes integer gadget
  500. STRINGA_MaxChars              INT    I-?--
  501. STRINGA_BufferPos             INT    IS??? cursor position
  502. STRINGA_DispPos               INT    IS??? first char visible
  503.  
  504. LGO_#? TAGS
  505.  
  506. LGO_FixWidth                  INT
  507. LGO_FixHeight                 INT
  508. LGO_Weight                    INT
  509. LGO_FixMinWidth               INT
  510. LGO_FixMinHeight              INT
  511. LGO_Align                     INT
  512. LGO_NoAlign                   INT
  513. LGO_FixAspect                 INT    65536*x+y 41.8 only
  514. LGO_Visible                   INT
  515.  
  516. LISTV_#? TAGS
  517.  
  518. LISTV_Top                     INT    ISG-U
  519. LISTV_ReadOnly                INT    ISG?? S/U will not change frame
  520. LISTV_MultiSelect             INT    IS?-U
  521. LISTV_Select                  INT    -S--U
  522. LISTV_MakeVisible             INT    -S--U
  523. LISTV_Entry                   STRING ---N-
  524. LISTV_EntryNumber             INT    ---N-
  525. LISTV_LastClicked             STRING --G--
  526. LISTV_LastClickedNum          INT    --G--
  527. LISTV_NewPosition             INT    ---N-
  528. LISTV_NumEntries              INT    --G--
  529. LISTV_MinEntriesShown         INT    ISG??
  530. LISTV_SelectMulti             INT    -S--U
  531. LISTV_SelectNotVisible        INT    -S--U
  532. LISTV_SelectMultiNotVisible   INT    -S--U
  533. LISTV_MultiSelectNoShift      INT    IS--U
  534. LISTV_Deselect                INT    -S--U
  535. LISTV_DropSpot                INT    --G--
  536. LISTV_ShowDropSpot            INT    IS---
  537. LISTV_Columns                 INT    I-G--
  538. LISTV_DragColumns             INT    ISG-U
  539. LISTV_Titles                  STRING I-G-U 41.8 Enforcer hits
  540. LISTV_Titles!                 OBJECT ISG-U static string problem
  541. LISTV_PreClear                INT    ISG--
  542. LISTV_LastColumn              INT    --G--
  543.  
  544. GA_#? TAGS
  545.  
  546. GA_Disabled                   INT    IS?-U
  547. GA_Selected                   INT    ISGNU toggles/checkboxes only
  548.  
  549. BT_#? TAGS
  550.  
  551. BT_LabelClick                 INT    IS---
  552. BT_DragObject                 INT    ISG--
  553. BT_DropObject                 INT    ISG--
  554. BT_Key                        STRING ISG-- set after creating window object only
  555. BT_RawKey                     INT    ISG-- set after creating window object only
  556. BT_Qualifier                  INT    ISG-- set after creating window object only
  557.  
  558. PAGE_#? TAGS
  559.  
  560. PAGE_Active                   INT    ISG?U
  561.  
  562. MX_#? TAGS
  563.  
  564. MX_Active                     INT    ISGNU
  565. MX_DisableButton              INT    IS--U
  566. MX_EnableButton               INT    IS--U
  567.  
  568. CYC_#? TAGS
  569.  
  570. CYC_Active                    INT    ISGNU
  571.  
  572. PROGRESS_#? TAGS
  573.  
  574. PROGRESS_Min                  INT    IS---
  575. PROGRESS_Max                  INT    IS---
  576. PROGRESS_Done                 INT    ISGNU
  577.  
  578. INDIC_#? TAGS
  579.  
  580. INDIC_Level                   INT    IS--U
  581.  
  582. TAG_#? TAGS
  583.  
  584. TAG_IGNORE                    INT    IS--U does nothing!
  585.