ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage syntax / Declaring variables
  • Declaring the combinations
  • Enabling or disabling the options of a combination
  • Reading the combination options
  • Passing a combination as a parameter to a procedure
  • Code suggestions
  • Extension of combination
  • Preset combinations
  • Mutual exclusion
  • Associated properties
  • Available WLanguage functions
  • Limitations
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
A combination is a set of options. You can assign one or more combination options to a Combination variable or parameter, or assign no values.
Example
// Declaration code
// Declare a combination
CombinationType is Combination
	CreateFile
	ReadFile
	WriteFile
	DeleteFile
END
// Declare a Combination variable
FileAction is CombinationType
// Assign the variable
FileAction = ReadFile + WriteFile
// FileAction = 0 // Disables all the options
...

// To test the value of the combination:
IF FileAction[WriteFile] THEN
	// The WriteFile option is enabled
ELSE
	// The WriteFile option is not enabled
END
Syntax

Declaring a combination Hide the details

<Combination name> is Combination
   <Combination options>
END
<Combination name>:
Name of the combination to declare
<Combination options>:
Different options available for the combination.
<END>:
End of declaration.

Declaring a Combination variable Hide the details

<Variable name> is <Combination name>
<Variable name>:
Name of the Combination variable to declare.
<Combination name>:
Name of a previously declared combination.
Remarks

Declaring the combinations

A combination must be declared in:
  • The project initialization code so that it can be used in all the processes of the project (code of the project, windows, controls, procedures, etc.).
  • The global declaration code of a window so that it can be used in all the processes of the window (code of the window, controls in the window, local procedures, etc.).
  • The opening code of a report so that it can be used in all the processes of the report (code of the report, controls in the report, local procedures, etc.).
  • The declaration code of a class in order to be used in the class.
    • To access this combination from a method of the class, use the "::<Combination name>" syntax.
    • To access this combination from outside the class, use the "<Class name>::<Combination name>" syntax.
  • The declaration code of a set of procedures so that it can be used in all the procedures of the set.
Remark: A combination is always global:
  • to a project,
  • to a window,
  • to a report,
  • to a class.

Enabling or disabling the options of a combination

Several syntaxes can be used to enable or disable the options of a combination. For example:
  • Declaration of the combination used for the examples:
    CombinationType is Combination
    	CreateFile
    	ReadFile
    	WriteFile
    	DeleteFile
    END
    
    // Declare a Combination variable
    FileAction is CombinationType
  • Disable all options:
    Syntax:
    <Combination variable> = 0

    Example:
    FileAction = 0
  • Enable one or more options:
    Syntax:
    <Combination variable> = Option 1
    <Combination variable>[Option 1] = True

    <Combination variable> = Option 1 + Option 2
    <Combination variable>[Option 1 + Option 2] = True

    Examples:
    FileAction = ReadFile  // Enables an option
    FileAction = ReadFile + WriteFile // Enables 2 options
    
    FileAction[ReadFile] = True  // Enables an option
    FileAction[ReadFile + WriteFile] = True // Enables 2 options
  • Disable one or more options:
    Syntax:
    <Combination variable>[Option 1] = False

    <Combination variable>[Option 1 + Option 2] = False

    Examples:
    FileAction[ReadFile] = False  // Disables an option
    FileAction[ReadFile + WriteFile] = False // Disables 2 options

Reading the combination options

Several syntaxes can be used read the combination options. For example:
  • Combination declaration
    CombinationType is Combination
    	CreateFile
    	ReadFile
    	WriteFile
    	DeleteFile
    END
    
    // Declare a Combination variable
    FileAction is CombinationType
  • Check whether all the options are disabled:
    Syntax:
    IF <Combination variable> = 0

    Examples:
    IF FileAction = 0 THEN...
  • Check whether an option is enabled:
    Syntax:
    IF <Combination variable> = Option 1 ...
    IF <Combination variable>[Option 1] = True...

    Examples:
    IF FileAction = ReadFile THEN ...
    IF FileAction[ReadFile] = True THEN...
  • Check whether several options are enabled:
    Syntax:
    IF <Combination variable> = Option 1 + Option 2 THEN ...
    IF <Combination variable>[Option 1 + Option 2] = True ...

    Examples:
    IF FileAction = ReadFile + WriteFile THEN ...
    IF FileAction[ReadFile + WriteFile] = True THEN...
  • Check whether at least one option is enabled:
    Syntax:
    IF <Combination variable>[Option 1] OR <Combination variable>[Option 2] THEN...

    Examples:
    IF FileAction[ReadFile] OR FileAction[WriteFile] THEN...

Passing a combination as a parameter to a procedure

A Combination variable can be passed as a parameter to a procedure. To do so, use the following syntax:
<Procedure name>(<Name of combination variable>)
For example:
// Procedure with a Combination parameter
PROCEDURE FileType(p is CombinationType)

// Calls with a Combination parameter
FileType(ReadFile + WriteFile)
FileType(FileAction)

Code suggestions

Code suggestions for a Combination parameter include the different options of the combination.

Extension of combination

You can include one or more options from other combinations and add new options.
The syntax used is as follows:
<Combination name> is Combination
   [Base combination]
   <Combination additional options>
END
where:
  • <Combination name>: Name of a previously declared combination.
  • Base combination: Name of the base combination to be used.
  • <Combination additional options>: Additional options that will be taken into account in the combination.
Example:
CombinationType is Combination
	CreateFile
	ReadFile
	WriteFile
	DeleteFile
END


AdvancedCombinationType is Combination
	[CombinationType]
	OtherAttributes
END

Preset combinations

Several options can be combined to force a preset combination. The combined options must belong to the combination (or to base combinations)
The syntax used is as follows:
<Combination name> is Combination
<Option 1 of combination>
<Option 2 of combination>
<Option 3 of combination> = <Option 1 of combination> + <Option 2 of combination>
END
Example:
CombinationType is Combination
	CreateFile
	ReadFile
	WriteFile
	DeleteFile
	Read_Write_File = ReadFile + WriteFile
END

Mutual exclusion

You can implement mutual exclusion in the combination options.
For example, a combination contains three options: Option1, Option2 and Option3. Option2 and Option3 are mutually exclusive:
  • Option1 and Option2 can be active.
  • Option1 and Option3 can be active.
  • Option2 and Option3 cannot be enabled.
  • Option1, Option2 and Option3 cannot be active.
The following syntax must be used:
<Combination name> is Combination
<Option 1 of combination>
<Option 2 of combination>
<Option 3 of combination>
// Exclusions
<Option 2 of combination> - <Option 3 of combination>
END
Remark: By combining extensions and exclusions, you can get the following for the same options:
  • a parameter of a function that imposes an exclusion,
  • a parameter of a function that does not impose any exclusion or that imposes a different exclusion.

Associated properties

The following properties are associated with Combination variables:
NameGets the name of a Combination variable.
ValueGets the value of a Combination variable.

Available WLanguage functions

A combination can be stored in an HFSQL item or in another file format. If necessary, you can store the name or the value of the combination (Name or Value property, respectively).
The following WLanguage functions allow you to get the characteristics of a stored combination:
CombinationCheckNameChecks whether a combination of one of more options known by their names is valid.
CombinationFromNameReturns a combination of one or more options known by their names.
CombinationFromValueReturns a combination of one or more options known by their associated values.

Limitations

  • Combinations are not available in dynamic compilation.
  • Combinations cannot be used outside the project.
Minimum version required
  • Version 18
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 03/27/2024

Send a report | Local help