FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Color palette
Posts: 115
Joined: Wed Oct 26, 2005 02:38 PM
Color palette
Posted: Sun Jan 24, 2021 10:17 PM
Hello guys...

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



Thanks
Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
Posts: 4043
Joined: Wed Dec 19, 2007 06:40 PM
Re: Color palette
Posted: Mon Jan 25, 2021 12:44 PM
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.


Code (fw): Select all Collapse
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 :-)
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.
Posts: 115
Joined: Wed Oct 26, 2005 02:38 PM
Re: Color palette
Posted: Mon Jan 25, 2021 09:30 PM

Thank you, perfect!

Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
Posts: 115
Joined: Wed Oct 26, 2005 02:38 PM
Re: Color palette (solved)
Posted: Sat Feb 06, 2021 07:30 PM
Hello guys.

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

Christiano Augusto Silveira
christiano.silveira@gmail.com

MaxxTech Soluções em TI
http://www.maxxtech.com.br
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Color palette
Posted: Sun Feb 07, 2021 03:26 AM

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
Posts: 115
Joined: Wed Oct 26, 2005 02:38 PM
Re: Color palette
Posted: Sun Feb 07, 2021 04:21 PM

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
Posts: 4043
Joined: Wed Dec 19, 2007 06:40 PM
Re: Color palette
Posted: Sun Feb 07, 2021 06:49 PM
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.




a defined column-array looks like

Code (fw): Select all Collapse
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 :-)



regards
Uwe :-)
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.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Color palette
Posted: Sun Feb 07, 2021 07:24 PM

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

Continue the discussion