Source Code for Collection Example 1

Visual LANSA

Source Code for Collection Example 1

To see how a collection is created, copy and paste this code to a form and then compile and execute the form.

Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Clientheight(88) Clientwidth(363) Height(115) Left(269) Top(185) Visualstyle(#VS_NORM) Width(371)
 
* Using a Keyed Collection (PRIM_KCOL) as a simple array.
 
* Define the keyed collection to be used to store employee names.
* The collection is named #Employee and it collects #FullNames.
* It is indexed (or more correctly, keyed by) #Std_Num ie: a packed (7,0) number.
 
Define_Com Class(#Prim_kCol<#FullName #Std_Num>) Name(#Employee)
 
* Define the form.
* #FULLNAME allows employee names to be input.
* Button #PHBN_SAVE saves employee names into the collection.
* Button #PHBN_SHOW shows the details of all the employees in the collection.
 
Define_Com Class(#FULLNAME.Visual) Name(#FULLNAME) Displayposition(1) Height(19) Left(16) Parent(#COM_OWNER) Tabposition(1) Top(16) Width(329)
Define_Com Class(#PRIM_PHBN) Name(#PHBN_SAVE) Buttondefault(True) Caption('Save ') Displayposition(2) Left(152) Parent(#COM_OWNER) Tabposition(2) Top(51) Width(97)
Define_Com Class(#PRIM_PHBN) Name(#PHBN_SHOW) Caption('Show ') Displayposition(3) Left(264) Parent(#COM_OWNER) Tabposition(3) Top(51)
 
* -------------------------------------------------------------------------
* #PHBN_SAVE.Click : Save the detail on an employee in the keyed collection
* -------------------------------------------------------------------------
 
Evtroutine Handling(#PHBN_SAVE.Click)
 
* Save the employee's full name into the keyed collection in the next slot.
* Use the keyed collection property ItemCount to compute the next slot
 
Change Field(#LISTCOUNT) To('#Employee.ItemCount + 1')
Set Com(#Employee<#ListCount>) Value(#FullName.Value)
 
* Clear the full name field ready for input of the next name
 
Change Field(#FULLNAME) To(*NULL)
 
Endroutine
 
* -------------------------------------------------------------
* #PHBN_SHOW.Click : Build a message of all the employees saved
* -------------------------------------------------------------
 
Evtroutine Handling(#PHBN_SHOW.Click)
Define Field(#LOOPINDEX) Reffld(#STD_NUM)
 
* Iterate through the collection referencing each entry in the
* collection as an object by using a for / end for loop.
 
For Each(#EmployeeFullName) In(#Employee)
Use Builtin(MESSAGE_BOX_ADD) With_Args('Employee' #EMPLOYEEFULLNAME.VALUE 'was found in the collection.')
Endfor
 
* Show the employee count and final results
 
Use Builtin(MESSAGE_BOX_ADD) With_Args('There are' #EMPLOYEE.ITEMCOUNT 'employees currently in the collection.')
Use Builtin(MESSAGE_BOX_SHOW) With_Args(OK OK INFO *COMPONENT)
 
Endroutine
 
End_Com

 

Ý Example 1: Create a Keyed Collection