Dynamic Properties |
|
Graphical user interface control objects have a variety of design attributes associated with them. The Apostrophe Operator (tick) allows dynamic access to the property names used to define these attributes for a given graphical user interface control. Any numeric variable containing the CTL number associated with a control can be used with the apostrophe operator. REFRESH_FLG, which forces the update of the panel controls, does not have to be set. This feature allows you to redesign a control object dynamically in your application by assigning or resetting its properties/attributes.
A button's location, size, text and colour would be represented by properties named Col, Line, Text$, TextColour$, etc.
Example:
You could change the text of a button control (called MyButton) as follows:
MyButton.ctl'Text $ = "Hit me now"
Other common property names include:
|
Starting column | |
|
Starting line | |
|
Width of control | |
|
Height of control | |
|
Tip message | |
|
Message line | |
|
Format mask | |
|
Background color | |
|
Enabled state | |
|
Locked state | |
|
Current value/state of control |
To obtain a complete list of properties for a given control, read the logical attribute *:
PRINT BUTTON_1.CTL'*
This would result in a list of the attributes for the control BUTTON_1.
There is virtually no end to what can be changed on the fly within your controls. Most control commands can be changed by accessing attributes.
The examples below illustrate some of the uses of dynamic properties.
NOMADS object CUST_NAME is defined as a multi-line 30 wide x 1 high:
->PRINT CUST_NAME.CTL'*
Auto,BackColour,Col,Cols,CtlName,Enabled,Eom,Fmt,Focus,Font,Height,hWnd,
Key,Left,Len,Line,Lines,Lock,Msg,Nul,OnFocusCtl,Parent,Sep,TextColour,Tip,Top,Value,Visible,Width,
->LET CUST_NAME.CTL'Tip$="This is a NEW Customer Name Tip"
The following shows how you can dynamically change properties of an object:
IF COUNTRY$="CDN" THEN ZIP.CTL'Fmt$="A0A 0A0" ELSE ZIP.CTL'Fmt$="00000"