* **************************************************
*
*  COMPONENT:  STD_FORM
*
* **************************************************
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Clientheight(464) Clientwidth(673) Height(502) Left(571) Top(143) Width(689)
Define_Com Class(#PRIM_PHBN) Name(#PHBN_1) Displayposition(1) Left(407) Parent(#COM_OWNER) Tabposition(1) Top(26)
Define_Com Class(#PRIM_LTBX) Name(#LTBX_1) Componentversion(1) Displayposition(2) Height(249) Left(94) Parent(#COM_OWNER) Showselection(True) Tabposition(2) Top(196) Width(347)
Define_Com Class(#PRIM_LBCL) Name(#LBCL_1) Displayposition(1) Parent(#LTBX_1) Source(#STD_TEXT)
Define_Com Class(#STD_NUM.Visual) Name(#STD_NUM) Caption('Number of Colors') Displayposition(3) Height(19) Labeltype(Caption) Left(96) Parent(#COM_OWNER) Tabposition(3) Top(32) Usepicklist(False) Width(262)
Define Field(#clrhex) Type(*char) Length(6)
Define Field(#clrhexs) Type(*char) Length(16) Default('123456789ABCDEF0')
Def_List Name(#colorcode) Fields(#red #green #blue #clrhex) Counter(#LISTCOUNT) Type(*Working) Entrys(*MAX)
Define_Com Class(#STD_NUM) Name(#red)
Define_Com Class(#STD_NUM) Name(#green)
Define_Com Class(#STD_NUM) Name(#blue)

Evtroutine Handling(#com_owner.Initialize)
Set Com(#com_owner) Caption(*component_desc)
Endroutine

Evtroutine Handling(#PHBN_1.Click)
#LISTCOUNT := 0
Clr_List Named(#colorcode)
Execute Subroutine(Build) With_Parms(255)
If Cond(#LISTCOUNT > #STD_NUM)
#COM_OWNER.showlist
Return
Endif
Execute Subroutine(Build) With_Parms(127)
If Cond(#LISTCOUNT > #STD_NUM)
#COM_OWNER.showlist
Return
Endif
Execute Subroutine(Build) With_Parms(63)
If Cond(#LISTCOUNT > #STD_NUM)
#COM_OWNER.showlist
Return
Endif
Execute Subroutine(Build) With_Parms(31)
If Cond(#LISTCOUNT > #STD_NUM)
#COM_OWNER.showlist
Return
Endif
Execute Subroutine(Build) With_Parms(15)
If Cond(#LISTCOUNT > #STD_NUM)
#COM_OWNER.showlist
Return
Endif
Execute Subroutine(Build) With_Parms(255)
If Cond(#LISTCOUNT > #STD_NUM)
#COM_OWNER.showlist
Return
Endif


Endroutine
Mthroutine Name(showlist)
Clr_List Named(#LTBX_1)
Selectlist Named(#colorcode)
#std_text := #red.AsString + '     ' + #green.AsString + '     ' + #blue.asstring + '    ' + #clrhex
Add_Entry To_List(#LTBX_1)
Endselect
Endroutine
Subroutine Name(Build) Parms((#clrcode *RECEIVED))
Define Field(#clrcode) Type(*dec) Length(3) Decimals(0)
Execute Subroutine(AddColor) With_Parms(#clrcode 0 0)
Execute Subroutine(AddColor) With_Parms(0 #clrcode 0)
Execute Subroutine(AddColor) With_Parms(0 0 #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode #clrcode 0)
Execute Subroutine(AddColor) With_Parms(0 #clrcode #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode 0 #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode 127 127)
Execute Subroutine(AddColor) With_Parms(127 #clrcode 127)
Execute Subroutine(AddColor) With_Parms(127 127 #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode #clrcode 127)
Execute Subroutine(AddColor) With_Parms(127 #clrcode #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode 127 #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode 63 63)
Execute Subroutine(AddColor) With_Parms(63 #clrcode 63)
Execute Subroutine(AddColor) With_Parms(63 63 #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode #clrcode 63)
Execute Subroutine(AddColor) With_Parms(63 #clrcode #clrcode)
Execute Subroutine(AddColor) With_Parms(#clrcode 63 #clrcode)
Endroutine

Subroutine Name(AddColor) Parms((#red *RECEIVED) (#green *RECEIVED) (#blue *RECEIVED))
#clrhex #STD_CODEL := #red.AsBinString.AsHexString.LeftMost( 2 ) + #green.AsBinString.AsHexString.LeftMost( 2 ) + #blue.AsBinString.AsHexString.LeftMost( 2 )
Loc_Entry In_List(#colorcode) Where(#clrhex = #STD_CODEL)
If_Status Is_Not(*OKAY)
Add_Entry To_List(#colorcode)
Endif
Endroutine
End_Com
