Clipper On Line • Ver Tópico - Cor da DIALOG
Página 1 de 2

Cor da DIALOG

MensagemEnviado: 21 Jan 2021 16:30
por Itamar M. Lins Jr.
Olá!
Pessoal como eu descubro a cor da DIALOG.
Por exemplo DIALOG ... COLOR 11111111, é CMY, RBG, DECIMAL ?
Eu escolho a cor, mas não acho o número correto.

Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 21 Jan 2021 16:34
por JoséQuintas
Se for pelo diálogo do windows, ele mostra.

Tem o colorcop e o jcpicker.

Você aponta o mouse para o lugar, e ele mostra a cor e os números.

O colorcop é gigante.... 96kb e mais 26kb com help kkkkk
O hcpiker é maior... 3MB.

Tá mais rápido anexar o colorcop.

ColorCop.zip
(56.02 KiB) Baixado 42 vezes

Cor da DIALOG

MensagemEnviado: 21 Jan 2021 16:46
por Itamar M. Lins Jr.
Olá!
Ok, ainda bem que esse colorcop tem nas configurações, botão direito->mode->powerbuider ai sim o número da cor bate com o da HWGUI.

Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 21:07
por asimoes
Eu tentaria:

hwg_msginfo( valtoprg( hwg_getsyscolor()) )

ACTIVATE DIALOG oDlg ON ACTIVATE {|| hwg_msginfo( valtoprg( hwg_getsyscolor()) ) }

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 21:46
por asimoes
Construí essa função usando HWG_GETBKCOLOR

ACTIVATE DIALOG oMainWindow SHOW SW_SHOWMAXIMIZED ON ACTIVATE {|| ColorBack( oMainWindow ) }

FUNCTION ColorBack( oDlg )

   pps := hwg_DefinePaintStru()
     
   hDC := hwg_BeginPaint( oDlg:handle, pps )
     
   iColor := HWG_GETBKCOLOR( hDC )
   
   hwg_EndPaint( oDlg:handle, pps )
   
   hwg_msginfo( valtoprg(iColor) ) //mostra a cor usada em back

RETURN Nil

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 22:08
por Itamar M. Lins Jr.
Olá!
Eu queria saber qual é a forma que a Hwgui aceita a cor. Tem RGB,CMY,CMYK, etc são vários tipos, tem #09434(html)...
Eu escolho a cor mas não sabia o número que colocar no parâmetro COLOR ou COLORBACK. Qual é numero da cor AZUL ANIL por exemplo na Hwgui ?
Com esse programa ai que o José Quintas indicou, tem as opções e a opção da linguagem powerbuider(ide ?) não sei, é a mesma da Hwgui.

Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 22:12
por asimoes
A documentação da função GetSysColor na hwgui hwg_GetSysColor para atribuir uma cor.

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsyscolor

Na INIT DIALOG

COLOR hwg_GetSysColor( COLOR_3DDKSHADOW ) ;

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 22:19
por Itamar M. Lins Jr.
Olá!
COLOR_3DDKSHADOW

Que cor é essa ?

Infelizmente, o PowerBuilder não trabalha com RGB, mas utiliza um código próprio, que é calculado a partir do valor RGB. A formula é a seguinte: (65536*Blue) + (256*Green) + (Red). Esta fórmula vai gerar um valor long correspondente a cor desejada.

Deve ser a mesma coisa(calculo) na Hwgui, pq usei e ficou igual.

Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 22:23
por asimoes
Itamar,

Eu uso ColorPic

2 coelhos uma pancada só:

A cor COLOR_3DDKSHADOW, no link da MS o cinza da tela

2021-01-22 22_23_47-Greenshot.png

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 22:31
por asimoes
Para baixar o ColorPic, é free

https://colorpic.softonic.com.br/

Cor da DIALOG

MensagemEnviado: 22 Jan 2021 22:36
por Itamar M. Lins Jr.
Olá!

COLOR_3DDKSHADOW
21   Dark shadow for three-dimensional display elements.

Isso não é a cor.
Não estou entendendo. Pois eu coloco um numero da COR da JANELA (DIALOG) e a COR de FUNDO, BACKCOLOR (também não entendi direito) pq se já tem a cor da DIALOG, não sei o efeito ou diferença de COLOR e BACKCOLOR, preciso aprender isso. BACKCOLOR é a sombra ? Efeito 3D ?

Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 04:30
por marcosgambeta
Olá Itamar,

A HWGUI usa RGB. CMY e CMYK são voltados para impressão, enquanto RGB é usado em monitores, por exemplo.

Há ferramentas online para escolher cores:

https://www.w3schools.com/colors/colors_picker.asp

https://www.rapidtables.com/web/color/RGB_Color.html

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 04:51
por marcosgambeta
No caso de COLOR e BACKCOLOR nos comandos de criação de janelas, são a mesma coisa na HWGUI corrente:

[ <bclr: BACKCOLOR, COLOR> <bColor> ] ;


Neste caso, COLOR/BACKCOLOR vai definir a cor de fundo da janela.

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 07:21
por marcosgambeta
Mais um detalhe: a cor é um número inteiro, mas tem funções para fazer a conversão. São elas: hwg_ColorRGB2N e hwg_ColorC2N.

As funções hwg_Rgb e hwg_VColor são obsoletas na HWGUI corrente, mas ainda são reconhecidas no arquivo guilib.ch.

#xtranslate hwg_Rgb([<n,...>])                    => hwg_ColorRGB2N(<n>)
#xtranslate hwg_VColor([<n,...>])                 => hwg_ColorC2N(<n>)


Exemplos:

// cor vermelha
COLOR hwg_ColorRGB2N( 255, 0, 0 )
COLOR hwg_ColorC2N( "FF0000" )

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 08:34
por Itamar M. Lins Jr.
Olá!
Mais um detalhe: a cor é um número inteiro, mas tem funções para fazer a conversão. São elas: hwg_ColorRGB2N e hwg_ColorC2N.

Blz! Grato por mais essas explicações.

Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 13:43
por asimoes
BACKCOLOR não foi implementado ou feito uso a versão atual da hwgui, o parâmetro na guilib.ch está lá , MAS NÃO É PASSADO para HDialog():New()

Somente COLOR é usado, como bColor

[ <bclr: BACKCOLOR, COLOR> <bColor> ] ;

BACKCOLOR não tem uso

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 14:09
por marcosgambeta
asimoes escreveu:BACKCOLOR não foi implementado ou feito uso a versão atual da hwgui, o parâmetro na guilib.ch está lá , MAS NÃO É PASSADO para HDialog():New()

Somente COLOR é usado, como bColor

[ <bclr: BACKCOLOR, COLOR> <bColor> ] ;

BACKCOLOR não tem uso


Nos meus testes aqui, ambos geraram o mesmo efeito. Da forma como está implementado no comando, COLOR e BACKCOLOR estão funcionando como sinônimos.

Então, usar um ou outro dá o mesmo resultado. Não está assim para você ?

Aproveitando, havia me esquecido que o Harbour entende números hexadecimais. Então, nem se precisa da função de conversão. Funciona também como abaixo:

PROCEDURE Main()

   LOCAL oDialog

   INIT DIALOG oDialog TITLE "Teste" SIZE 640, 480 COLOR 0x00FF00

   ACTIVATE DIALOG oDialog

RETURN

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 16:43
por asimoes
marcosgambeta escreveu:Então, usar um ou outro dá o mesmo resultado. Não está assim para você ?


BACKCOLOR na 2.17 não está implementado e na 2.2x olhando o fonte não vi o uso, pelo menos nos parâmetros New() não está passando

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 17:07
por marcosgambeta
asimoes escreveu:BACKCOLOR na 2.17 não está implementado e na 2.2x olhando o fonte não vi o uso, pelo menos nos parâmetros New() não está passando


Olhando no fonte da classe, realmente só tem um parâmetro para cor. Mas vamos tentar por outro ângulo (acho que agora consigo me expressar corretamente).

O comando COLOR da 2.17 se refere, na verdade, à cor de fundo da janela (a cor de sua superfície). Então, BACKCOLOR seria um termo mais adequado.

Na versão corrente, foi introduzido o comando BACKCOLOR junto com o COLOR. O desenvolvedor pode usar tanto um como o outro. Com isto, introduziu-se o termo correto, mas sem perder a compatibilidade com o que era antes.

Meus comentários anteriores foram sobre os comandos e não sobre o código-fonte da classe:

INIT WINDOW ... COLOR ...
ou
INIT WINDOW ... BACKCOLOR ...

INIT DIALOG ... COLOR ...
ou
INIT DIALOG ... BACKCOLOR ...


Quer use COLOR ou BACKCOLOR, o que o desenvolvedor está definindo sempre será a cor de fundo da janela (daí haver apenas 1 parâmetro).

Bom, acho que agora consegui me explicar (espero).

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 18:27
por Itamar M. Lins Jr.
Olá!
Aproveitando, havia me esquecido que o Harbour entende números hexadecimais. Então, nem se precisa da função de conversão. Funciona também como abaixo:

Então resolveu mais outro problema, pois eu tinha colocado dentro de aspas "" e não tinha funcionado, deu erro. Quer dizer que não precisa delas.
... SIZE 640, 480 COLOR "0x00FF00" //assim dá erro.


Saudações,
Itamar M. Lins Jr.

Cor da DIALOG

MensagemEnviado: 23 Jan 2021 19:35
por asimoes
Isso mesmo Marcos.

No fonte hdialog.prg (2.17)

O que define a cor é a chamada ::Setcolor( , bColor )

Na 2.2x

IF bColor != Nil
   ::brush := HBrush():Add( bColor )
ENDIF


O método SETCOLOR na 2.17 está no fonte hcwindow, e faz uso da HBrush():Add( bColor )

Resumindo não há compatibilidade entre 2.17 e 2.2x, embora eu prefira a 2.17, que fiz algumas modificações e adaptações, algumas incorporações da 2.2x