oform = CREATEOBJECT("colorform") oform.show() read events DEFINE CLASS colorform AS form Top = 0 Left = 0 DoCreate = .T. Caption = "Determine Ideal ForeColor" Name = "colorform" ADD OBJECT text1 AS textbox WITH ; Height = 23, ; Left = 48, ; Top = 48, ; Width = 264, ; Name = "Text1" ADD OBJECT command1 AS commandbutton WITH ; Top = 156, ; Left = 108, ; Height = 27, ; Width = 132, ; Caption = "Set TextBox ForeColor", ; Name = "Command1" ADD OBJECT command2 AS commandbutton WITH ; Top = 120, ; Left = 108, ; Height = 27, ; Width = 132, ; Caption = "Set TextBox BackColor", ; Name = "Command2" PROCEDURE color2rgb *PROCEDURE color2rgb lparameters RGBcolor return "rgb("+; ltrim(str(bitand(RGBColor,0x000000ff)))+","+ ; ltrim(str(bitrshift(bitand(RGBColor,0x0000ff00),8)))+","+ ; ltrim(str(bitrshift(bitand(RGBColor,0x00ff0000),16)))+")" ENDPROC PROCEDURE color2rgb1 *PROCEDURE color2rgb1 LPARAMETERS RGBColor return bitand(RGBColor,0x000000ff) ENDPROC PROCEDURE color2rgb2 *PROCEDURE color2rgb2 LPARAMETERS RGBColor return bitrshift(bitand(RGBColor,0x0000ff00),8) ENDPROC PROCEDURE color2rgb3 *PROCEDURE color2rgb3 LPARAMETERS RGBColor return bitrshift(bitand(RGBColor,0x00ff0000),16) ENDPROC PROCEDURE rgb2color *function rgbToColor LPARAMETERS lcRgb LOCAL laColors DIMENSION laColors[3] IF ALINES(laColors, STRTRAN(lcRgb, ",", CHR(13)+CHR(10))) <> 3 ERROR "Invalid RGB code" ELSE ACTIVATE SCREEN ?RGB(VAL(laColors[1]), VAL(laColors[2]), VAL(laColors[3])) RETURN RGB(VAL(laColors[1]), VAL(laColors[2]), VAL(laColors[3])) ENDIF ENDPROC PROCEDURE Init DODEFAULT() thisform.text1.value = "Example Text" thisform.text1.refresh() ENDPROC PROCEDURE Destroy DODEFAULT() CLEAR EVENTS ENDPROC PROCEDURE command1.Click lncolorback = thisform.text1.backcolor nThreshold = 105 bgDelta1 = thisform.Color2rgb1(lncolorback) bgDelta2 = thisform.Color2rgb2(lncolorback) bgDelta3 = thisform.Color2rgb3(lncolorback) bgDelta1 = bgDelta1*0.299 bgDelta2 = bgDelta2*0.587 bgDelta3 = bgDelta3*0.114 bgDelta = bgDelta1+bgDelta2+bgDelta3 IF 255-bgDelta>nThreshold thisform.text1.forecolor = thisform.RGB2Color("RGB(255,255,255)") ELSE thisform.text1.forecolor = thisform.RGB2Color("RGB(0,0,0)") ENDIF THISFORM.text1.refresh() RETURN ENDPROC PROCEDURE command2.Click thisform.text1.backcolor = GETCOLOR() thisform.text1.refresh() ENDPROC ENDDEFINE