| Directives |
|
| Formats | 1.Define VBX, Logical ID: CUSTOM_VBX id,@(col,ln,wth,ht),name$,control$[,fileopt] | |||||||||||
| 2.Define Event-CTL: CUSTOM_VBX DEFCTL id,ctl_val,event$[,ERR=stmtref] | ||||||||||||
| 3.List Event Names: CUSTOM_VBX DEFCTL id,*,list$[,ERR=stmtref] | ||||||||||||
| 4.Add Item to List: CUSTOM_VBX LOAD id,index,val$[,ERR=stmtref] | ||||||||||||
| 5.Remove List Item: CUSTOM_VBX LOAD id,index,*[,ERR=stmtref] | ||||||||||||
| 6.Read Property: CUSTOM_VBX READ id,property$,var$[,array_element][,ERR=stmtref] | ||||||||||||
| 7.List Properties: CUSTOM_VBX READ id,*,list$[,ERR=stmtref] | ||||||||||||
| 8.Write Property: CUSTOM_VBX WRITE id,property$,val$[,array_element][,ERR=stmtref] | ||||||||||||
| 9.Disable/Enable: CUSTOM_VBX {DISABLE | ENABLE} id[,ERR=stmtref] | ||||||||||||
| 10.Set Focus: CUSTOM_VBX GOTO id[,ERR=stmtref] 11.Remove VBX: CUSTOM_VBX REMOVE id[,ERR=stmtref] 12.Hide/Show VBX: CUSTOM_VBX {HIDE | SHOW} id[,ERR=stmtref] Where: |
||||||||||||
| @(col,ln, | Position and size of the CUSTOM_VBX region. Numeric expressions. | |||||||||||
| wth,ht) | Column and line coordinates for top left corner, width in number of columns and height in number of lines. | |||||||||||
| control$ | Name of the control to use in the file (usually only one per VBX file). String expression. | |||||||||||
| ctl_val | CTL to be generated when an event occurs. | |||||||||||
| event$ | Name / number of the VBX event. | |||||||||||
| *Note* | This directive will convert numerics/strings as required. This means that you can read or write a numeric property into a string variable. ProvideX will automatically convert the value using current PRECISION. | |||||||||||
| fileopt | Supported file options (see also, File Options): | |||||||||||
| ERR=stmtref Error transfer KEY=char$ Hot key MSG=text$ Message line | ||||||||||||
| OPT=char$
Single character parameter/option. See list below. TBL=char$ Single character translation |
||||||||||||
| The single-character parameters for OPT= are: | ||||||||||||
| "s" - Scroll. Allow scroll within resizable/scrollable dialogue box. | ||||||||||||
| "D"
- Disabled. User can't access the VBX "H" - Hide. Do not display the VBX |
||||||||||||
| id | Unique logical identifier for the CUSTOM_VBX control object. Numeric expression: integer. | |||||||||||
| index | Array index. Numeric expression, integer. | |||||||||||
| list$ | ||||||||||||
| String
variable for receiving list of event / property names. name$ Name / number of the VBX property. |
||||||||||||
| val$ | Value of an item / property. | |||||||||||
| var$ | Variable to receive current value of the property. | |||||||||||
| *Deprecated* | Deprecated. VBX support is discontinued as of ProvideX Version 7. Execution of this directive will result in an Error #99 Feature not supported. Refer to the Version 6 Language Reference for complete documentation. | |||||||||||
| Description | Use the CUSTOM_VBX directive to load and define a given VBX custom control object. You must use the same logical ID number (assigned in Format 1) for all subsequent references to your custom VBX. | |||||||||||
| *Note* | You can use VBX's in both Windows and UNIX systems when running in graphics mode of ProvideX. There is no text mode support since VBX's are Windows programs that require a graphical Windows device. | |||||||||||
| TCB(80) Status Codes Whenever an error is detected in the VBX interface logic, ProvideX returns the VBX status or error code in TCB(80). The chart below lists the status codes. |
||||||||||||
| TCB(80) | TCB(80) | |||||||||||
| Returns | Where VBX Status / Error = | Returns | Where VBX Status / Error = | |||||||||
| 03 | RETURN without GOSUB | 05 | Illegal function call | |||||||||
| 06 | Overflow | 07 | Out of memory | |||||||||
| 09 | Subscript out of range | 10 | Duplicate definition | |||||||||
| 11 | Division by zero | 13 | Type mismatch | |||||||||
| 14 | Out of string space | 16 | String formula too complex | |||||||||
| 17 | Can't continue | 19 | No Resume | |||||||||
| 20 | Resume without error | 28 | Out of stack space | |||||||||
| 35 | Sub or Function not defined | 48 | Error in loading DLL | |||||||||
| 49 | Bad DLL calling convention | 51 | Internal error | |||||||||
| 52 | Bad filename or number | 53 | File not found | |||||||||
| 54 | Bad file mode | 55 | File already open | |||||||||
| 57 | Device I/O error | 58 | File already exists | |||||||||
| 59 | Bad record length | 61 | Disk full | |||||||||
| 62 | Input past End-Of-File | 63 | Bad record number | |||||||||
| 64 | Bad filename | 67 | Too many files | |||||||||
| 68 | Device unavailable | 70 | Permission denied | |||||||||
| 71 | Disk not ready | 74 | Can't rename with different drive | |||||||||
| TCB(80) | TCB(80) | |||||||||||
| Returns | Where VBX Status / Error = | Returns | Where VBX Status / Error = | |||||||||
| 75 | Path/File access error | 76 | Path not found | |||||||||
| 91 | Object variable not set | 92 | FOR loop not initialized | |||||||||
| 93 | Invalid pattern string | 94 | Invalid use of Null | |||||||||
| 95 | Cannot destroy active form instance | 281 | No More DDE channels | |||||||||
| 282 | No foreign application responded to a | Multiple applications responded to a | ||||||||||
| DDE initiate | 283 | DDE initiate | ||||||||||
| 284 | DDE channel locked | 285 | Foreign application won't perform | |||||||||
| DDE method or operation | ||||||||||||
| 286 | Time-out occurred while waiting for | User pressed ESC key during DDE | ||||||||||
| DDE response | 287 | operation | ||||||||||
| 288 | Destination is busy | 289 | Data not provided in DDE operation | |||||||||
| 290 | Data in wrong format | 291 | Foreign application quit | |||||||||
| 292 | DDE method invoked with no channel open | |||||||||||
| 294 | Message queue filled; DDE message lost | |||||||||||
| 298 | Can't use character device names in filenames: 'item' | |||||||||||
| 321 | Invalid file format | 341 | Invalid object array index | |||||||||
| 342 | Not enough room to allocate control | |||||||||||
| array 'item' | 343 | Object not an array | ||||||||||
| 344 | Must specify index for object array | 360 | Object already loaded | |||||||||
| 361 | Can't unload controls created at design time | |||||||||||
| 363 | Custom control 'item' not found | 364 | Object was unloaded | |||||||||
| 365 | Unable to unload within this context | 380 | Invalid property value | |||||||||
| 382 | 'item' property cannot be set at run | |||||||||||
| time | 383 | 'item' property is read-only | ||||||||||
| 'item' property can't be modified | ||||||||||||
| 384 | when form is minimized or | 385 | Must specify index when using | |||||||||
| maximized | property array | |||||||||||
| 386 | 'item' property not available at run | 'item' property can't be set on this | ||||||||||
| time | 387 | control | ||||||||||
| 388 | Can't set Visible property from a | |||||||||||
| parent menu | 391 | Name not available. | ||||||||||
| 392 | 'item' property cannot be read at runtime | |||||||||||
| 394 | Form already displayed; can't show modally | |||||||||||
| 401 | Can't show non-modal form when a | Must close or hide topmost modal | ||||||||||
| modal form is displayed | 402 | form first | ||||||||||
| 403 | MDI child forms cannot be shown modally | |||||||||||
| 420 | Invalid object reference | 421 | Method not applicable for this object | |||||||||
| 422 | Property 'item' not found | 424 | Object required | |||||||||
| 425 | Invalid object use | 426 | Only one MDI form allowed | |||||||||
| TCB(80) | TCB(80) | |||||||||||
| Returns | Where VBX Status / Error = | Returns | Where VBX Status / Error = | |||||||||
| 75 | Path/File access error | 76 | Path not found | |||||||||
| 91 | Object variable not set | 92 | FOR loop not initialized | |||||||||
| 93 | Invalid pattern string | 94 | Invalid use of Null | |||||||||
| 95 | Cannot destroy active form instance | 281 | No More DDE channels | |||||||||
| 282 | No foreign application responded to a | Multiple applications responded to a | ||||||||||
| DDE initiate | 283 | DDE initiate | ||||||||||
| 284 | DDE channel locked | 285 | Foreign application won't perform | |||||||||
| DDE method or operation | ||||||||||||
| 286 | Time-out occurred while waiting for | User pressed ESC key during DDE | ||||||||||
| DDE response | 287 | operation | ||||||||||
| 288 | Destination is busy | 289 | Data not provided in DDE operation | |||||||||
| 290 | Data in wrong format | 291 | Foreign application quit | |||||||||
| 292 | DDE method invoked with no channel open | |||||||||||
| 294 | Message queue filled; DDE message lost | |||||||||||
| 298 | Can't use character device names in filenames: 'item' | |||||||||||
| 321 | Invalid file format | 341 | Invalid object array index | |||||||||
| 342 | Not enough room to allocate control | |||||||||||
| array 'item' | 343 | Object not an array | ||||||||||
| 344 | Must specify index for object array | 360 | Object already loaded | |||||||||
| 361 | Can't unload controls created at design time | |||||||||||
| 363 | Custom control 'item' not found | 364 | Object was unloaded | |||||||||
| 365 | Unable to unload within this context | 380 | Invalid property value | |||||||||
| 382 | 'item' property cannot be set at run | |||||||||||
| time | 383 | 'item' property is read-only | ||||||||||
| 'item' property can't be modified | ||||||||||||
| 384 | when form is minimized or | 385 | Must specify index when using | |||||||||
| maximized | property array | |||||||||||
| 386 | 'item' property not available at run | 'item' property can't be set on this | ||||||||||
| time | 387 | control | ||||||||||
| 388 | Can't set Visible property from a | |||||||||||
| parent menu | 391 | Name not available. | ||||||||||
| 392 | 'item' property cannot be read at runtime | |||||||||||
| 394 | Form already displayed; can't show modally | |||||||||||
| 401 | Can't show non-modal form when a | Must close or hide topmost modal | ||||||||||
| modal form is displayed | 402 | form first | ||||||||||
| 403 | MDI child forms cannot be shown modally | |||||||||||
| 420 | Invalid object reference | 421 | Method not applicable for this object | |||||||||
| 422 | Property 'item' not found | 424 | Object required | |||||||||
| 425 | Invalid object use | 426 | Only one MDI form allowed | |||||||||
| TCB(80) | TCB(80) | |||||||||||
| Returns | Where VBX Status / Error = | Returns | Where VBX Status / Error = | |||||||||
| 460 | Specified format does not match format of data | |||||||||||
| 480 | Can't create AutoRedraw image | 481 | Invalid picture | |||||||||
| 482 | Printer error | 708 | File not found: | |||||||||
| 710 | File already open: | 712 | Device I/O error: | |||||||||
| 713 | File already exists: | 716 | Disk full: | |||||||||
| 719 | Bad filename: | 722 | Too many files: | |||||||||
| 725 | Permission denied: | 730 | Path access error: | |||||||||
| 731 | Path not found: | 732 | Must have startup form or Sub Main( ) | |||||||||
| Format 1 | Define VBX, Logical ID CUSTOM_VBX id,@(col,ln,wth,ht),name$,control$[,fileopt] Use this format to define or create a VBX custom control object and assign it a unique logical ID; e.g., 0020 CUSTOM_VBX 100, @(10,10,10,10),"MHCD200.VBX","MhCardDeck" When you create the VBX custom control object, you can set default properties. Use the TBL="property=value" option. The last character in the list sets the delimiter for the rest. |
|||||||||||
| Format 2 | Define Event CUSTOM_VBX DEFCTL id,ctl_val,event$[,ERR=stmtref] Use the CUSTOM_VBX DEFCTL format to define the CTL values for events; e.g., 0030 CUSTOM_VBX DEFCTL 100,101,"Click" |
|||||||||||
| Format 3 | List Event Names CUSTOM_VBX DEFCTL id,*,list$[,ERR=stmtref] We recommend that you refer to your proprietary VBX documentation for information on VBX events and properties. However, you can also obtain a list of VBX events by using ProvideX to create a custom VBX on the screen and then using the CUSTOM_VBX DEFCTL format; e.g., 0030 CUSTOM_VBX DEFCTL 100,*,A$ The string variable receives a list of events (comma-separated and in numeric order). |
|||||||||||
| Format 4 | Add Item to List CUSTOM_VBX LOAD id,index,val$[,ERR=stmtref] Use the CUSTOM_VBX LOAD format to add an item to a custom VBX list; e.g., 0130 CUSTOM_VBX LOAD 150,6,"abc" |
|||||||||||
| Format 5 | Remove Item from List CUSTOM_VBX LOAD id,index,*[,ERR=stmtref] Use this CUSTOM_VBX LOAD format to remove an item from a custom VBX list. Note the asterisk in place of a value to indicate that you want an item removed. For example, to remove item 86 from the custom VBX whose id is 15000, 0190 CUSTOM_VBX LOAD 15000,86,* |
|||||||||||
| Format 6 | Read Property CUSTOM_VBX READ id,property$,var$[,array_element][,ERR=stmtref] Use the CUSTOM_VBX READ format to read the current value of a property; e.g., CUSTOM_VBX READ 100,"Suit",RND(4) |
|||||||||||
| Format 7 | List Properties CUSTOM_VBX READ id,*,list$[,ERR=stmtref] We recommend that you refer to the proprietary VBX documentation for each product for information on VBX events and properties. However, you can also obtain a list of event Properties by using ProvideX to create a custom VBX on the screen and then using the CUSTOM_VBX READ format. The string variable receives the list (comma-separated and in numeric order). If you then issue a CUSTOM_VBX READ id,"",X$ (with a null value in place of the asterisk), you will receive a string of characters indicating property types. Lower case values indicate arrays. The property types are listed as follows: |
|||||||||||
| "B" | 8-bit byte ENUM value (numeric) | |||||||||||
| "C" | Color reference (string) | |||||||||||
| "F" | Single bit Boolean value/flag (numeric) | |||||||||||
| "I" | 16-bit integer (numeric) | |||||||||||
| "L" | 32-bit integer (numeric) | |||||||||||
| "P" | Picture / bitmap (string, output only) | |||||||||||
| "R" | Real floating point value (numeric) | |||||||||||
| "S" | String/String in VBasic format | |||||||||||
| "X" | 32-bit X position in twips (numeric) | |||||||||||
| "Y" | 32-bit Y position in twips (numeric) | |||||||||||
| Format 8 | Write Property CUSTOM_VBX WRITE id,property$,val$[,array_element][,ERR=stmtref] Use the CUSTOM_VBX WRITE format to update or write a property; e.g., 0080 CUSTOM_VBX WRITE 100,"Value",RND(13)+1 0090 CUSTOM_VBX WRITE 100,"Suit",RND(4) |
|||||||||||
| Format 9 | Disable/Enable CUSTOM_VBX {DISABLE | ENABLE} id[,ERR=stmtref] Use the CUSTOM_VBX DISABLE format to gray out a custom VBX so that it will be visible but inaccessible, to users. To reactivate it, use CUSTOM_VBX ENABLE. 0150 CUSTOM_VBX DISABLE 100 |
|||||||||||
| Format 10 | Set Focus CUSTOM_VBX GOTO id[,ERR=stmtref] Use the CUSTOM_VBX GOTO format to set the focus on a custom VBX; e.g., 0130 CUSTOM_VBX GOTO 100 |
|||||||||||
| Format 11 | Remove VBX CUSTOM_VBX REMOVE id[,ERR=stmtref] Use the CUSTOM_VBX REMOVE format to remove or delete a custom VBX; e.g., 0150 CUSTOM_VBX REMOVE 100 |
|||||||||||
| Format 12 | Hide/Show VBX CUSTOM_VBX {HIDE | SHOW} id[,ERR=stmtref] Use the CUSTOM_VBX HIDE format to prevent the display of a custom VBX; e.g., 0150 CUSTOM_VBX HIDE 100 Use the CUSTOM_VBX SHOW format to restore the display. |
|||||||||||
| Examples | This
simple "Shuffle the Deck" program uses the
Microhelp Card Deck VBX. It will shuffle the deck
whenever the mouse is clicked on the card displayed on
the screen. 0010 PRINT 'CS' 0020 CUSTOM_VBX 100,@(10,10,10,10),"MHCD200.VBX","MhCardDeck" 0030 CUSTOM_VBX DEFCTL 100,101,"Click" 0040 OBTAIN (0,SIZ=1)'ME',A$,'MN', 0050 IF CTL=4 THEN END 0060 IF CTL<>101 THEN GOTO 0040 0070 FOR I=1 TO 10 0080 CUSTOM_VBX WRITE 100,"Value",RND(13)+1 0090 CUSTOM_VBX WRITE 100,"Suit",RND(4) 0100 WAIT .05 0110 NEXT 0120 GOTO 0040 This program randomly updates the two properties "Value" (card 1-13) and "Suit"(0-3) with a short delay between updates. Note that the event is defined as CTL 101 whenever the mouse is clicked on the card. |
|||||||||||