>Close Databases All >Create Table tpolicy (po_number c(25), po_name c(20), po_status c(3)) >Insert Into tpolicy Values ("John T. Smith","123456","CXP") >Insert Into tpolicy Values ("Sally A. Taylor","789012","NB") >Insert Into tpolicy Values ("Craig Abernathy","AAB123","REN") >Insert Into tpolicy Values ("Chris Johnson","890123","AP") > >Create Table vstatus (st_status c(3), st_attrib i) >Insert Into vstatus Values ("CXP",Rgb(255,128,192)) >Insert Into vstatus Values ("NB",Rgb(255,255,0)) >Insert Into vstatus Values ("AP",Rgb(128,255,255)) >Close Databases All > >Public oForm >oForm = Createobj('testform') >oForm.Show() > >Define Class testform As Form > DataSession = 2 > Height = 227 > Width = 461 > DoCreate = .T. > Caption = "Test Highlight Change " > gridbackcolor = Rgb(0,128,192) > gridforecolor = Rgb(0,0,0) > > Add Object grid1 As Grid With ; > ColumnCount = 3, Height = 200, Left = 24, ; > RecordSource = "tpolicy", Top = 12, Width = 410 > > Procedure Load > Use tpolicy In 0 > Endproc > > Procedure Init > DoDefault() > This.AddProperty('_vStatus[1]') > This.AddProperty('_vType[1]','') > Select st_status, st_attrib ; > FROM vstatus ; > WHERE !(st_status == '') ; > into Array This._vstatus > Use In 'vstatus' > With This.grid1 > .SetAll('SelectedBackColor', This.gridbackcolor) > .SetAll('SelectedForeColor', This.gridforecolor) > .Column1.ControlSource = "tpolicy.po_number" > .Column2.ControlSource = "tpolicy.po_status" > .Column3.ControlSource = "tpolicy.po_name" > .Column1.Header1.Caption = "po_number" > .Column2.Header1.Caption = "po_status" > .Column3.Header1.Caption = "po_name" > Endwith > This.SetPolicyGridColor() > Endproc > > Procedure SetPolicyGridColor > Local nColumnID > With This.grid1 > For nColumnID = 1 To .ColumnCount > With .Columns(nColumnID) > .DynamicBackColor = "(thisform.GetPolicyGridColor('"+.ControlSource+"'))" > Endwith > Endfor > Endwith > Endproc > > Procedure getpolicygridcolor > Lparameters tcControlSource > Local defaultcolorvalue,lcColorField, luValue, lnColorRow > With Thisform.grid1 > defaultcolorvalue = Iif(Recno(.RecordSource) = .nCurrec,This.gridbackcolor,0xFFFFFF) > Endwith > tcolorfield = Upper(Justext(m.tcControlSource)) > > If Type(m.tcControlSource) = 'G' > Return m.defaultcolorvalue > Endif > luValue = Evaluate(m.tcControlSource) > > Do Case > Case tcolorfield == "PO_SUSP" Or tcolorfield == "PO_STATUS" > lnColorRow = Ascan(This._vstatus, m.luValue, 1,-1,1,2+4+8) > Return Iif(m.lnColorRow > 0, This._vstatus[m.lnColorRow,2], m.defaultcolorvalue ) > Case tcolorfield = "PO_TYPE" > lnColorRow = Ascan(This._vtype, m.luValue, 1,-1,1,2+4+8) > Return Iif(m.lnColorRow > 0, This._vtype[m.lnColorRow,2], m.defaultcolorvalue ) > Endcase > Return m.defaultcolorvalue > Endproc > > Procedure grid1.Init > This.AddProperty('nCurrec',0) > Endproc > > Procedure grid1.BeforeRowColChange > Lparameters nColIndex > Thisform.LockScreen = .T. > Endproc > > Procedure grid1.AfterRowColChange > Lparameters nColIndex > This.nCurrec = Recno() > Thisform.LockScreen = .F. > Endproc >Enddefine >Cetin