Opções de PROMPT não aparecem após usar rgb

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por porter »

Olá pessoal,
Estou pintando a tela com rgb, mas após a tela ser pintada, as opções criadas com PROMPT não aparecem,
é correto fazer dessa forma, quero usar o rgb por ter mais opção de cores, mas após pintar a tela as opções
não aparecem.
Harbour 3.2.0(dev), GTWVG

Código: Selecionar todos

aPaint := {}
AAdd( aPaint, { NIL , { || Wvt_SetBrush( 0, rgb(46,139,87 ) ) }, NIL } )
AAdd( aPaint, { NIL , { || Wvt_DrawRectangle( 01, 00, 22, 79 ) }   , NIL } )
WvtSetPaint( aPaint )

@02,01 PROMPT "Opção 1"
@03,01 PROMPT "Opção 2"
@04,01 PROMPT "Opção 3"
@05,01 PROMPT "Opção 4"
Menu to m1

FUNCTION rgb( r, g, b )
   RETURN r + ( g * 256 ) + ( b * 256 * 256 )
   
FUNCTION Wvt_Paint()
   WvtPaintObjects()
   RETURN NIL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por JoséQuintas »

wvt_Paint() é uma rotina que fica em LOOP, assim como certas atualizações de texto.
O texto cobre o gráfico, o gráfico cobre o texto.

Se quer apenas uma cor de fundo diferente, mais prático alterar a tabela de cores.
Pesquise sobre Palette.

Por exemplo, pode trocar a cor azul por outra, e depois usar SetColor( "W/B" )
O limite é a tabela de cores do Clipper/Harbour.
Pode usar 16 cores diferentes, cada uma dessas cores pode ser qualquer cor RGB.

Importante: parece fácil escolher 16 cores, mas não é.
São cores de frente/fundo, ao usar duas juntas, o resultado pode não ser o esperado, e ter que trocar novamente.
8 frente e 8 fundo, são 64 combinações a serem testadas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por JoséQuintas »

JoséQuintas escreveu:8 frente e 8 fundo, são 64 combinações a serem testadas.
Correção: 16 X 16 = 256
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por JoséQuintas »

Até esqueci que tenho fonte pronto pra isso... o que falei seria isto:

https://github.com/JoseQuintas/JoseQuin ... alette.prg

Seria trocar as 16 cores originais por outras cores, qualquer uma das milhões de cores do RGB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por porter »

Olá JoséQuintas, muito obrigado por sua atenção,
Achei essa rotina com palette e consegui compilar, agora quero entender como funciona, quero
compilar também essa rotina sua, uma dúvida, com o Setcolor(), consegue-se fazer
vários tons de cores ou para isso é necessário outras formas como o Palette por exemplo ?
HARBOUR 3.2.0(dev) GTWVG

Código: Selecionar todos

PARAM PAL
IF PAL=NIL
   PAL="0"
ENDIF
CLS
PALETE=VAL(PAL)
SETBLINK(.F.)
CORDIGI2="W+/BG+,GR+/N,,,RG+/BG+"
CORDIGI="W+/R+*,GR+/N,,,G+/R+*"
CORDIGI3="W+/N+"
CORDIGI4="W+/R"

Palette(1, 8+PALETE)
Palette(2, 10+PALETE)
Palette(3, 12+PALETE)
Palette(10, 43+PALETE)
Palette(11, 19+PALETE)
Palette(12, 18+PALETE)

SETCOLOR(CORDIGI)
@ 02,00 CLEAR TO 12,20
@ 02,00 TO 12,20
@ 04,02 SAY "TESTE =>"
SETCOLOR(CORDIGI2)
@ 02,22 CLEAR TO 12,42
@ 02,22 TO 12,42
@ 04,24 SAY "TESTE =>"
SETCOLOR(CORDIGI3)
@ 14,00 CLEAR TO 24,20
@ 14,00 TO 24,20
@ 16,24 SAY "TESTE =>"
SETCOLOR(CORDIGI4)
@ 14,22 CLEAR TO 24,42
@ 14,22 TO 24,42
@ 16,24 SAY "TESTE =>"
@ 00,69 SAY "Tipo -> "+STR(PALETE,3)
TOT=0
DO WHIL TOT<>-21
   INKEY(0)
   TOT--
   Palette(1, 8+TOT)
   Palette(2, 10+TOT)
   Palette(3, 43+TOT)
   Palette(10, 23+TOT)
   Palette(11, 19+TOT)
   Palette(12, 18+TOT)   
   @ 00,69 SAY "Tipo -> "+STR(TOT,3)
ENDDO

TOT=0
DO WHIL TOT<>41
   INKEY(0)
   TOT++
   Palette(1, 8+TOT)
   Palette(2, 10+TOT)
   Palette(3, 43+TOT)
   Palette(10, 23+TOT)
   Palette(11, 19+TOT)
   Palette(12, 18+TOT)   
   @ 00,69 SAY "Tipo -> "+STR(TOT,3)
ENDDO

SCRMODE()
CLS
RETURN(.T.)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por porter »

Estou tentando compilar essa rotina, mas está dando o erro: Undefined reference to 'HB_FUN_WAPI_RGB'
é necessário acrescentar alguma biblioteca ?

Código: Selecionar todos

/*
ZE_PALETTE - paleta de cores
*/

#include "hbgtinfo.ch"

FUNCTION GtSetupPalette()

   LOCAL aPalette

   // HKCU=HKEY_CURRENT_USER
   // cRootKey := "HKCU\Software\JPA Tecnologia\"

   // IF lSave
   // aPalette := hb_GtInfo( HB_GTI_PALETTE )
   // FOR nCont = 1 TO Len( aPalette )
   // Win_RegWrite( cRootKey + "Color" + Ltrim( Str( nCont ) ), aPalette[ nCont ] )
   // NEXT
   // ELSE
   aPalette := { ;
      wapi_Rgb(  30 , 30,  30 ), ; //  0 N   Black      Preto                   New Form Font Color
      wapi_Rgb(   0,  0,   80 ), ;   //  1 B   Blue     Azul
      wapi_Rgb(   0,  63, 125 ), ; //  2 G   Green      Verde
      wapi_Rgb(   0, 133, 133 ), ; //  3 BG  Cyan       Azul Celeste            Title and Selected BackGround
      wapi_Rgb( 150,   0,   0 ), ; //  4 R   Red        Vermelho
      wapi_Rgb( 133,   0, 133 ), ; //  5 RB  Magenta    Rosa
      wapi_Rgb( 133, 133,   0 ), ; //  6 GR  Brown      Marrom
      wapi_Rgb( 180, 180, 180 ), ; //  7 W   White      Branco
      wapi_Rgb(  42,  42,  42 ), ; //  8 N+  Gray       Cinza
      wapi_Rgb(   0, 114, 198 ), ; //  9 B+  +Blue      Azul Claro
      wapi_Rgb(   0,  31,  62 ), ; // 10 G+  +Green     Azul Escuro
      wapi_Rgb( 132, 150, 173 ), ; // 11 BG+ +Cyan      Azul Celeste Claro
      wapi_Rgb( 248,   0,  38 ), ; // 12 R+  +Red       Vermelho Claro          Alert
      wapi_Rgb(  64,   0,  64 ), ; // 13 RB+ +Magenta   Rosa Claro
      wapi_Rgb( 216, 152,   0 ), ; // 14 GR+ Yellow     Amarelo
      wapi_Rgb( 255, 255, 255 ) }  // 15 W+  +White     Branco Claro            New Get and Selected Font Color

   // FOR nCont = 1 TO Len( aPalette )
   // nInfRegistro := Win_RegRead( cRootKey + "Color" + Ltrim( Str( nCont ) ) )
   // IF nInfRegistro == NIL
   // Win_RegWrite( cRootKey + "Color" + Ltrim( Str( nCont ) ), aPalette[ nCont ] )
   // ELSE
   // aPalette[ nCont ] := nInfRegistro
   // ENDIF
   // NEXT
   // ENDIF
   hb_GtInfo( HB_GTI_PALETTE, aPalette )

   RETURN NIL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Opções de PROMPT não aparecem após usar rgb

Mensagem por JoséQuintas »

Importante:
O Harbour tem limite de 16 cores, igual ao Clipper.
É trocar as 16 cores no início do aplicativo, e trabalhar todo restante do tempo com essas 16 cores.

Tem diferença entre Harbour 3.2 e Harbour 3.4.
Dá uma procurada hbmk2 -find rgb
No 3.4:

Código: Selecionar todos

hbwin.hbc (installed):
   wapi_RGB()
ou em hbwin.ch

Código: Selecionar todos

#define WIN_RGB( nR, nG, nB )              ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder