|
|
|
|
|
- When should indirection be used?
- Identifying the current object
- Indirection on a structure
- Using the indirection on the paths in an XML document
- Limitations
- Indirections in Java
Indirection operators In french: Opérateurs d'indirection
The { and } operators are used to access a control, a variable, a class member or a file item by dynamically building the name of control, variable, class member or item. The { and } operators present several benefits: - Passing in parameter the name of a control, variable, class member or item.
- Building the name of a control, variable, class member or item by programming.
// Simple indirection {"NAME"} = CustName        // Is equivalent to NAME=CustName {"NAME"} = {"CU.CUSTNAME"}     // Is equivalent to NAME=CU.CUSTNAME {"CUSTWIN.NAME"} = CustName     // Is equivalent to CUSTWIN.NAME=CustName {"CUSTWIN"+".NAME"} = CustName   // Is equivalent to CUSTWIN.NAME=CustName  // Typed indirection {"Name",indControl} = CustName  // Indirection with a file name in a variable nFileName is string = "Customer" {nFileName + ".Name"} = "Smith" HAdd({nFileName}) // Indirection in a procedure ControlName is string ControlName = "EDT_EDIT1" // EDT_EDIT1 is the name of the control // Call to a procedure used to make a control invisible Make_Invisible(ControlName)  PROCÉDURE Make_Invisible(ControlN) {ControlN}..State = Invisible // Indirection with variable AliasName is string AliasName = PreviousWin() // NAME is the name of the control // CustName is the value to assign {AliasName+".NAME"} = CustName Abbrev is string ItemName is string {Abbrev+"."+ItemName} = CustName {Abbrev+"."+ItemName} = {ControlName} // Declare a class with two members MyClass is Class Member1 is string Member2 is string // Display the value of a member GLOBAL procédure DisplayMember(Number) // Retrieve the value of the selected global member Value is string = {"::Member"+Number} Info(Value) c is cWord var is Variable Description Def is Definition  Def = GetDefinition(c) // Retrieves the 2nd variable of the class: version of Word var = Def..Variable[2]  Trace(var..Name) // Displays the variable name Trace("Version of Word: ",{c, var}) // Displays the Word version
Syntax <Expression>: Character string Expression used to identify the control, the variable or the item to use. The element is sought:- among the variables,
- according to the number of dots found in the name:
- 0 dot: search among the controls, then the HFSQL items.
- 1 dot: search among the HFSQL items, the controls, then the query parameters.
- greater than 1 dot: search among the controls.
- among the special elements kept for compatibility (_Tabx for example, ...).
A WLanguage error occurs if this expression corresponds to an empty string (""). <Expression>: Character string Expression used to identify the class member.If the member is: - global, use the following syntax: {" :: MemberName"}
- not global, use the following syntax: {" : MemberName"}
A WLanguage error occurs if this expression corresponds to an empty string (""). <Class>: Character string Class instance <Member>: Character string or Variable Description variable Corresponds to:
Indirection by specifying the element type (optimizes the execution speed) Hide the details
{ <Expression>, <Type> }
<Expression>: Character string Expression used to identify the control, the variable or the item to use. A WLanguage error occurs if this expression corresponds to an empty string (""). <Type>: Constant Constant used to specify the type of sought element: | | indControl | Element sought among the controls and the groups. | indConnection | Element sought among the connections. | indReport | Element sought among the reports. | indWindow | Element sought among the windows. | indFile | Element sought among the files. | indGPW | Element sought among the elements of user groupware (used to retrieve the initial status of controls). | indLink | Element sought among the links. | indQueryParameter | Element sought among the parameters of queries. | indItem | Element sought among the items. | indVariable | Element sought among the variables. | indPage | Element sought among the pages. |
Remarks When should indirection be used? The indirection can be used for example: - To access the value of an element (control, variable, item, ...):
{s_ControlName} = 10 ControlValue = {s_ControlName} - To use a property:
{s_ControlName}..Height = 10 - To programmatically handle a column of a Table control:
{s_ColumnName, indControl}[Row_Number] = 10 - To handle a table column:
{s_TableName + "." +s_ColumnName, indControl}[Row_Number] = 10
Related Examples:
|
Unit examples (WINDEV): The indirections
[ + ] Handling indirections via the { and } operators. The { and } operators are used to access a control or a file item by dynamically building the control name or the item name. This program, powered by WINDEV, implements the indirection mechanism on the window controls to manage the "Undo-Redo" and "Cut-Copy-Paste" features in a generic way.
|
|
Unit examples (WEBDEV): The indirections
[ + ] This example explains how to use the indirections on a variable. You will notice that the indirections are available for the controls, the items, the links, etc. The principle is identical to the one presented in this example.
|
|
Unit examples (WINDEV Mobile): The indirections
[ + ] Using the indirection { and } operators. The { and } operators are used to access a control or a file item by dynamically building the control name or the item name. This example implements the indirection mechanism on the window controls to manage the "Undo-Redo" and "Cut-Copy-Paste" features in a generic way.
|
This page is also available for…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|