ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

  • Declaring the combinations
  • Enabling or disabling the options of a combination
  • Reading the combination options
  • Passing a combination as a parameter to a procedure
  • Assisted input
  • Extension of combination
  • Preset combinations
  • Mutual exclusions
  • Associated properties
  • Available WLanguage functions
  • Limits
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. A combination variable or a combination parameter can be assigned with none, one or more combination options.
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 combination to declare
<Combination options>:
Different options that can be taken by the combination.
<END>:
End of declaration.

Declaring a Combination variable Hide the details

<Variable name> is <Combination name>
<Variable name>:
Name of Combination variable to declare.
<Combination name>:
Name of combination that was declared beforehand.
Remarks

Declaring the combinations

A combination must be declared in:
  • The project initialization code in order to be used in all the processes of the project (code of project, code of windows, code of controls, procedures, etc.).
  • The declaration code of global variables of a window in order to be used in all the processes of the window (code of window, code of controls found in the window, local procedures, etc.).
  • The opening code of a report in order to be used in all the processes of the report (code of the report, code of controls found 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 syntax "::<Combination name>".
    • To access this combination from a code external to the class, use the syntax "<Class name>::<Combination name>".
  • The declaration code of sets of procedures in order to 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:
  • Declaring the combination used for the examples:
    CombinationType is Combination
    CreateFile
    ReadFile
    WriteFile
    DeleteFile
    END
     
    // Declare a Combination variable
    FileAction is CombinationType
  • Disabling all the options:
    Syntax:
    <Combination variable> = 0

    Example:
    FileAction = 0
  • Enabling 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
  • Disabling 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 to find out the combination options. For example:
  • Declaring the combination
    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
PROCÉDURE FileType(p is CombinationType)
 
// Calls with a Combination parameter
FileType(ReadFile + WriteFile)
FileType(FileAction)

Assisted input

The assisted input for a Combination parameter proposes the different combination options.

Extension of combination

A combination can extend the values of one or more other combinations by taking the options of this ones and by adding new options.
The following syntax is used:
<Combination name> is Combination
   [Base Combination]
   <Combination additional options>
END
where:
  • <Combination name>: Name of combination that was declared beforehand.
  • Base Combination: Name of base combination to use.
  • <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 following syntax is used:
<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 exclusions

You have the ability to describe mutual exclusions between the combination options.
For example, a combination contains three options: Option1, Option2 and Option3. Option2 and Option3 are 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 the extensions and the exclusions, you have the ability to get for the same options:
  • a parameter of a function that imposes an exclusion,
  • a parameter of a function that imposes no exclusion or that imposes a different exclusion.

Associated properties

The following properties are associated with the Combination variables:
NameUsed to find out the name of a Combination variable.
ValueUsed to find out the associated value of a Combination variable.

Available WLanguage functions

A combination can be stored in an HFSQL item or in another file format. Depending on your requirements, you can store the combination name (Name) or value (Value).
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.

Limits

  • 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