Color palette

Post Reply
User avatar
ctoas
Posts: 103
Joined: Wed Oct 26, 2005 2:38 pm
Location: São Paulo - Brasil
Contact:

Color palette

Post by ctoas »

Hello guys...

I am looking for a solution to create a color palette for the user to select. Has anyone done?

Image

Thanks
Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
User avatar
ukoenig
Posts: 3981
Joined: Wed Dec 19, 2007 6:40 pm
Location: Germany
Contact:

Re: Color palette

Post by ukoenig »

Christiano,

I think You want to select a color from a defined colorselection :?:
Just define a array with the colorvalues.
You can create Your own color palette (colorpicker) with xBrowse like :

This sample shows a array with the basiccolors.
Image

Code: Select all

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

 
best regards
Uwe :D
Last edited by ukoenig on Thu Feb 11, 2021 9:19 am, edited 3 times in total.
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
User avatar
ctoas
Posts: 103
Joined: Wed Oct 26, 2005 2:38 pm
Location: São Paulo - Brasil
Contact:

Re: Color palette

Post by ctoas »

Thank you, perfect!
Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
User avatar
ctoas
Posts: 103
Joined: Wed Oct 26, 2005 2:38 pm
Location: São Paulo - Brasil
Contact:

Re: Color palette (solved)

Post by ctoas »

Hello guys.

Some adjustments are still missing, but it's perfect!

Image
Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Color palette

Post by nageswaragunupudi »

May I know why can't we use Microsoft Windows color picker? This is a standard Windows interface and all Windows users are familiar with its use and functionality.
This is available in fwh function ChooseColor( nClr ) ---> nClr
Regards

G. N. Rao.
Hyderabad, India
User avatar
ctoas
Posts: 103
Joined: Wed Oct 26, 2005 2:38 pm
Location: São Paulo - Brasil
Contact:

Re: Color palette

Post by ctoas »

Hello Nages.

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.

Hugs
Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
User avatar
ukoenig
Posts: 3981
Joined: Wed Dec 19, 2007 6:40 pm
Location: Germany
Contact:

Re: Color palette

Post by ukoenig »

I*m building the needed array for this selection :!:
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.
Image

a defined column-array looks like

Code: Select all

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 )

 
like You can see with this function ChooseColor( nClr ) the colors are not splitted to the same brightness-level
I think that is the solution You are looking for :?:

Image

regards
Uwe :D
Last edited by ukoenig on Sun Feb 07, 2021 7:40 pm, edited 1 time in total.
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Color palette

Post by nageswaragunupudi »

This is Windows API ChooseColor() made available by FWH through its function ChooseColor().
One can make his own function, but can not easily match its functionality.
Regards

G. N. Rao.
Hyderabad, India
Post Reply