This step will define the component as a TreeDesign component and create an OnAdd method which is invoked when the form executes an ADD_ENTRY command on the Tree List control.
1. Switch to the Source tab. Extend the Begin_Com Role() keyword to include the highlighted code:
Begin_Com Role(*EXTENDS #PRIM_PANL *IMPLEMENTS #prim_tree.iTreedesign *LISTFIELDS #Listfields) Displayposition(1) Height(270) Left(0) Tabposition(1) Top(0) Width(500)
*implements #Prim_Tree.iTreeDesign means this component implements a User Defined Control which will be implemented as the row of a tree control.
*listfields #ListFields refers to a Group_By which defines fields to be mapped into this component when a row is added to the Tree List. i.e. when an instance of this component is created.
2. Define the ListFields Group_By:
Group_By Name(#Listfields) Fields(#xEmployeeIdentification #xEmployeeSurname #xEmployeeGivenNames #xEmployeeStreet #xEmployeeCity #xEmployeeState #xEmployeePostalCode #xEmployeeStartDate #xEmployeeTerminationDate #xDepartmentDescription #xDepartmentCode #xEmployeeImageThumbnail)
3. Define an OnAdd method to redefine the method in Prim_Tree.iTreeDesign. Add logic to perform the following:
Set the MoreLess cursor to the Windows Hand cursor Set the panel initial Height based on MoreLess Top property plus MoreLess Height property Set EmployeeName Caption to the form "GivenName, Surname (EmployeeIdentification)" Set Street Caption to xEmployeeStreet Set City Caption to xEmployeeCity Set State Caption to xEmployeeState Set PostCode Caption to xEmployeePostalCode Set Department Caption to the form "Dept Description (Dept Code)" If xEmployeeTerminationDate is not SQLNULL Set StartDate ThemeDrawStyle property POOR Set StartDate Caption to 'No longer employed - ' + xEmployeeTerminationDate Else Set StartDate ThemDrawStyle property to GOOD Set StartDate Caption to 'Employed - ' + xEmployeeStartDate End If Set EmployeeImage FileName property to xEmployeeImageThumbnail
Note: The Label component has a default property of Caption. This statement sets the label's Caption:
|
Your code should look like the following:
Mthroutine Name(OnAdd) Options(*REDEFINE) *set cursor #MoreLess.Cursor <= #SYS_APPLN.Cursors<Hand> *set initial height #COM_OWNER.Height := #MoreLess.top + #MoreLess.Height *Set up caption for all labels #EmployeeName := #xEmployeeGivenNames + ', ' + #xEmployeeSurname + '(' + #xEmployeeIdentification + ')' #Street := #xEmployeeStreet #City := #xEmployeeCity #State := #xEmployeeState #PostCode := #xEmployeePostalCode #Department := #xDepartmentDescription + '(' + #xDepartmentCode + ')' If (#xEmployeeTerminationDate.isnotsqlnull) #StartDate.ThemeDrawStyle := POOR #StartDate := 'No longer employed - ' + #xEmployeeTerminationDate.AsDisplayString( DDMMMCCYY ) Else #StartDate.ThemeDrawStyle := GOOD #StartDate := 'Employed - ' + #xEmployeeStartDate.AsDisplayString( DDMMMCCYY ) Endif #EmployeeImage.filename := #xEmployeeImageThumbnail Endroutine
| Note: The ThemeDrawStyles POOR and GOOD are define in Theme xDemoTheme which will be applied to the form. xDemoTheme is part of the shipped Demonstration Materials (see Partition Initialize). |
4. Create a Click event routine for the label MoreLess. Add logic to this routine to perform the following:
Test current panel height If Panel Height is greater than MoreLess Top + MoreLess Height Set Panel Height property to MoreLess.Top + MoreLess.Height Set MoreLess Caption to 'Show Details' Else Set Panel Height to Postcode.Top _ PostCode.Height Set MoreLess Caption to 'Hide Details' End IF
Your code should look like the following:
Evtroutine Handling(#MoreLess.Click) If (#COM_OWNER.Height > (#MoreLess.top + #MoreLess.Height)) #COM_OWNER.Height := #MoreLess.Top + #MoreLess.Height #MoreLess.caption := 'Show Details' Else #COM_OWNER.Height := #PostCode.top + #PostCode.Height #MoreLess.Caption := 'Hide Details' Endif Endroutine
5. Compile the reusable part.