Hello guys...
I am looking for a solution to create a color palette for the user to select. Has anyone done?
Thanks
FUNCTION RGB_BASIC( oDlgMain )
LOCAL oBrw2, n
// array of cellcolors for colorselection
LOCAL aDat1 := { { nRGB( 255, 128, 128 ), nRGB( 255, 255, 128 ), nRGB( 128, 255, 128 ), nRGB( 0, 255, 128 ), ;
nRGB( 128, 255, 255 ), nRGB( 0, 128, 255 ), nRGB( 255, 128, 192 ), nRGB( 255, 128, 255 ) },;
{ nRGB( 255, 0, 0 ), nRGB( 255, 255, 0 ), nRGB( 128, 255, 0 ), nRGB( 0, 255, 64 ), ;
nRGB( 0, 255, 255 ), nRGB( 0, 128, 192 ), nRGB( 128, 128, 192 ), nRGB( 255, 0, 255 ) },;
{ nRGB( 64, 0, 0 ), nRGB( 255, 128, 64 ), nRGB( 0, 255, 0 ), nRGB( 0, 128, 128 ), ;
nRGB( 0, 64, 128 ), nRGB( 128, 128, 255 ), nRGB( 128, 0, 64 ), nRGB( 255, 0, 128 ) },;
{ nRGB( 128, 0, 0 ), nRGB( 255, 128, 0 ), nRGB( 0, 128, 0 ), nRGB( 0, 128, 64 ), ;
nRGB( 0, 0, 255 ), nRGB( 0, 0, 160 ), nRGB( 128, 0, 128 ), nRGB( 128, 0, 255 ) },;
{ nRGB( 64, 0, 0 ), nRGB( 128, 64, 0 ), nRGB( 0, 64, 0 ), nRGB( 0, 64, 64 ), ;
nRGB( 0, 0, 128 ), nRGB( 0, 0, 64 ), nRGB( 64, 0, 64 ), nRGB( 64, 0, 128 ) },;
{ nRGB( 0, 0, 0 ), nRGB( 128, 128, 0 ), nRGB( 128, 128, 64 ), nRGB( 128, 128, 128 ), ;
nRGB( 64, 128, 128 ), nRGB( 192, 192, 192 ), nRGB( 64, 0, 64 ), nRGB( 255, 255, 255 ) } }
REDEFINE XBROWSE oBrw2 ID 120 OF oDlgMain ARRAY aDat1 ;
FIELDS aDat1[ oBrw2:nArrayAt ][ 1 ], aDat1[ oBrw2:nArrayAt ][ 2 ], aDat1[ oBrw2:nArrayAt ][ 3 ], ;
aDat1[ oBrw2:nArrayAt ][ 4 ], aDat1[ oBrw2:nArrayAt ][ 5 ], aDat1[ oBrw2:nArrayAt ][ 6 ], ;
aDat1[ oBrw2:nArrayAt ][ 7 ], aDat1[ oBrw2:nArrayAt ][ 8 ] ;
LINES COLSIZES 30, 30, 30, 30, 30, 30, 30, 30 PIXEL
WITH OBJECT oBrw2
:lRecordSelector := .F. // .t.
:lColDividerComplete := .T. // .f.
:lAllowColSwapping := .F.
:lAllowColHiding := .F.
:lFastEdit := .F.
:lHeader := .F.
:nStretchCol := -1
:lRecordSelector := .F.
:lAllowRowSizing := .F.
:lHScroll := .F.
:lVScroll := .F.
:lDrawBorder := .T.
:nMarqueeStyle := 1
:nRowHeight := 30
:aCols[1]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][1] } }
:aCols[2]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][2] } }
:aCols[3]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][3] } }
:aCols[4]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][4] } }
:aCols[5]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][5] } }
:aCols[6]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][6] } }
:aCols[7]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][7] } }
:aCols[8]:bClrstd := {|| { , aDat1[ oBrw2:KeyNo() ][8] } }
END
FOR n := 1 to LEN( oBrw2:aCols )
oBrw2:aCols[ n ]:bPaintText = { | oCol, hDC, cText | "" }
oBrw2:aCols[ n ]:lAllowSizing := .F.
NEXT
oBrw2:bLClicked := { | nRow, nCol | ( nRPos := oBrw2:KeyNo(), ;
nCPos := oBrw2:SelectedCol():nCreationOrder, ;
COLORVALUE( aDat1[nRPos][nCPos]) ) }
oBrw2:bChange := { | nRow, nCol | ( nRPos := oBrw2:KeyNo(), ;
nCPos := oBrw2:SelectedCol():nCreationOrder, ;
COLORVALUE( aDat1[nRPos][nCPos]) ) }
RETURN NIL
// -------------
FUNCTION COLORVALUE( nColor )
LOCAL nRed := nRGBRed( nColor )
LOCAL nGreen := nRGBGreen( nColor )
LOCAL nBlue := nRGBBlue( nColor )
LOCal cWordRGB := "nRGB( " + ALLTRIM(STR(nRed)) + ", " + ;
ALLTRIM(STR(nGreen)) + ", " + ;
ALLTRIM(STR(nBlue)) + " )"
// save result to ???
MsgAlert( nColor, "Color NUMERIC")
MsgAlert( cWordRGB, "Color RGB")
RETURN NIL
I didn't know this function, but
I would only use it if there was no option since it is out of the standard of my screens.
Row Column 1 ( red )
1 nRGB( 51, 0, 0 )
2 nRGB( 102, 0, 0 )
3 nRGB( 153, 0, 0 )
4 nRGB( 204, 0, 0 )
5 nRGB( 255, 0, 0 )
6 nRGB( 255, 51, 51 )
7 nRGB( 255, 102, 102 )
8 nRGB( 255, 153, 153 )
9 nRGB( 255, 204, 204 )
Row Column 2 ( brown )
1 nRGB( 51, 25, 0 )
2 nRGB( 102, 51, 0 )
3 nRGB( 153, 76, 0 )
4 nRGB( 204, 102, 0 )
5 nRGB( 255, 128, 0 )
6 nRGB( 255, 153, 51 )
7 nRGB( 255, 178, 102 )
8 nRGB( 255, 204, 153 )
9 nRGB( 255, 229, 204 )
Row Column 3 ( yellow )
1 nRGB( 51, 51, 0 )
2 nRGB( 102, 102, 0 )
3 nRGB( 153, 153, 0 )
4 nRGB( 204, 204, 0 )
5 nRGB( 255, 255, 0 )
6 nRGB( 255, 255, 51 )
7 nRGB( 255, 255, 102 )
8 nRGB( 255, 255, 153 )
9 nRGB( 255, 255, 204 )
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: No registered users and 19 guests