Página 1 de 5

De Harbour 3.4 pra Harbour 3.2

Enviado: 05 Mar 2023 19:11
por JoséQuintas
3432.png
Ainda tem coisa pra resolver, mas não faço nem idéia sobre algumas.
Por exemplo, pra mudar o tamanho do fonte, não tem nada nos fontes a não ser variáveis.

Não faço uso de nada disso, mas..... nunca se sabe....

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 08:38
por JoséQuintas
Diferenças:

- Não apareceu ícone em dois controles
- Listbox - cor de fundo diferente
- Textbox - cor de fundo diferente
- frame - cor de fundo diferente no título
- slider - cor de fundo diferente
- editbox - cor de fundo diferente
- label - tamanho do fonte não se altera, além da cor de fundo

Acertando a cor de fundo já elimina boa parte da lista.

Por enquanto só olhei tamanho de fonte, nada mais.
Talvez deixar pra olhar quando precisar.

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 08:47
por Fernando queiroz
@ 10,560 SAY oLabel11 CAPTION "Descrição" SIZE 492,22 COLOR 0 BACKCOLOR 16777215 FONT HFont():Add( '',0,-10,400,,,)

@ 895,550 SAY oEditbox4 CAPTION "R$ " + ltrim(transform(w_vNF,"@E 99,999,999,999.99")) SIZE 215,35 ;
COLOR 255 BACKCOLOR 16777215 ;
FONT HFont():Add( '',0,-25,700,,,) ;
STYLE ES_RIGHT
TELA01.jpg

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 11:25
por JoséQuintas

Código: Selecionar todos

   IF ::cFontName != NIL
      hOldFont := ::SendMessage( WIN_WM_GETFONT )
      ::SendMessage( WIN_WM_SETFONT, wvt_CreateFont( ::cFontName, ::nFontSize ), 0 )
      wvg_DeleteObject( hOldFont )
   ENDIF
Tinha bloqueado por causa dos erros aleatórios, pra ser se resolvia alguma coisa.

Aqui é setando para o uso automático, como sempre, mensagem para o Windows.
mensagem WIN_WM_GETFONT pega o ponteiro do fonte anterior
mensagem WIN_WM_SETFONT envia o ponteiro do fonte novo
mensagem WIN_WM_SETTEXT envia o texto a ser escrito
Este jeito só vale pro modo automático do Windows

Curiosidade:
No HFONT() da HWGUI usa HWG_CREATEFONT()
Na GTWVG usa WVT_CREATEFONT()
Isso é apenas pra carregar o fonte pra um ponteiro/variável, até aí ainda não está usando pra nada.
Na HWGUI o HFONT() vai carregando todos os fontes como elementos de um array.

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 11:36
por JoséQuintas
Tem coisa estranha na hwgui:

Código: Selecionar todos

METHOD Add( fontName, nWidth, nHeight , fnWeight, ;
      fdwCharSet, fdwItalic, fdwUnderline, fdwStrikeOut, nHandle ) CLASS HFont

   LOCAL i, nlen := Len( ::aFonts )

   nHeight  := iif( nHeight == Nil, - 13, nHeight )
   fnWeight := iif( fnWeight == Nil, 0, fnWeight )
   fdwCharSet := iif( fdwCharSet == Nil, 0, fdwCharSet )
   fdwItalic := iif( fdwItalic == Nil, 0, fdwItalic )
   fdwUnderline := iif( fdwUnderline == Nil, 0, fdwUnderline )
   fdwStrikeOut := iif( fdwStrikeOut == Nil, 0, fdwStrikeOut )

   FOR i := 1 TO nlen
      IF ::aFonts[i]:name == fontName .AND.             ;
            ( ( Empty(::aFonts[i]:width) .AND. Empty(nWidth) ) ;
            .OR. ::aFonts[i]:width == nWidth ) .AND.    ;
            ::aFonts[i]:height == nHeight .AND.         ;
            ::aFonts[i]:weight == fnWeight .AND.        ;
            ::aFonts[i]:CharSet == fdwCharSet .AND.     ;
            ::aFonts[i]:Italic == fdwItalic .AND.       ;
            ::aFonts[i]:Underline == fdwUnderline .AND. ;
            ::aFonts[i]:StrikeOut == fdwStrikeOut

         ::aFonts[ i ]:nCounter ++
         IF nHandle != Nil
            hwg_Deleteobject( nHandle )
         ENDIF
         RETURN ::aFonts[ i ]
      ENDIF
   NEXT
Esse nHandle tá esquisito, e talvez até no lugar errado.

Se a rotina recebe nHandle, destrói o fonte.
Ok, mas..... que fonte ? não deveria remover do array ?
E o que tem a ver ESSE nHandle com o fonte novo ?
E se coincidir que o nHandle é exatamente o fonte que interessa ? vai ser destruído e ao mesmo tempo usado?

Como eu disse, tá esquisito.
Pode ser que até hoje não foi usado esse parâmetro.
Mas eu diria que pode ser uma possível fonte de erros.

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 11:49
por JoséQuintas
NÃO USA nHandle em lugar nenhum, mas....

Achei isto em HSTATICLink

Código: Selecionar todos

   IF ::oFont == NIL
      IF ::oParent:oFont != NIL
         ::oFont := HFont():Add( ::oParent:oFont:name, ::oParent:oFont:width, ::oParent:oFont:height, ;
            ::oParent:oFont:weight, ::oParent:oFont:charset, ::oParent:oFont:italic, 1, ::oParent:oFont:StrikeOut,,.T. )
      ELSE
         ::oFont := HFont():Add( "Serif", 0, 12,,,,,,,.T. )
      ENDIF
   ELSE
      IF ::oFont:Underline  == 0
         oPrevFont := ::oFont
         ::oFont:Release()
         ::oFont := HFont():Add( oPrevFont:name, oPrevFont:width, oPrevFont:height, ;
            oPrevFont:weight, oPrevFont:charset, oPrevFont:italic, 1, oPrevFont:StrikeOut,,.T. )
      ENDIF
   ENDIF
Tem um décimo parâmetro (.T.) que não existe lá no HFont():Add().

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 12:05
por JoséQuintas
Pera lá....
Esqueci que hwgui tem rotinas pra Linux e pra Windows.
Pesquisar todos os fontes trás rotinas dos dois ambientes.

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 12:13
por JoséQuintas

Código: Selecionar todos

   METHOD Add( fontName, nWidth, nHeight , fnWeight, fdwCharSet, fdwItalic, fdwUnderline, fdwStrikeOut, nHandle, lLinux )
Na HFONT pra Linux tem o décimo parâmetro lLinux.
E o fonte de HSTATICLink que olhei antes também é pra Linux

Tá tudo certo, só mesmo o uso de nHandle que está esquisito, mas não usa em nenhum lugar.

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 12:16
por JoséQuintas
test.png
Tamanho do fonte resolvido.
Pode ser esquisito aumentar somente altura e não largura, mas pra teste tá bom.

De Harbour 3.4 pra Harbour 3.2

Enviado: 06 Mar 2023 12:34
por JoséQuintas
Sobre a cor de fundo:

No padrão do Windows, a cor do controle é igual à da janela, o Windows pega a cor da janela.
Acontece que.... a cor da GT usada pelo Harbour está cobrindo a janela.
Se não fosse isso, tava tudo certo, a janela default do Windows é branca.

Ao mesmo tempo, é interessante isso:
Lembram do OWNERBUTTON da HWGUI ? tem a propriedade SS_OWNER e é "desenhado a mão"?
Daria pra aplicar isso a todos os controles, e usar a cor da GT.
E mais que isso: criar o controle que quiser, pra desenhar o que quiser, do jeito que quiser, sem ficar limitado ao que existe.

De Harbour 3.4 pra Harbour 3.2

Enviado: 14 Mar 2023 16:39
por faustinofaria
JoséQuintas, tudo bem?! Você e o Itamar sempre ajudam esse Véio Programador aqui.

Porque você está migrando do 3.4 para o 3.2?

Uso o 3.2. Outro dia vi que um programador estava tendo problemas de travamento Harbour + GTWVW com Windows 10/11. Ele mudou do 3.2 para o 3.4 e resolveu.

Eu estava pensando em migrar, pois achei que era mais novo. E agora vejo seu post.

Pode me auxiliar nisso, por favor!

Muito obrigado!

De Harbour 3.4 pra Harbour 3.2

Enviado: 14 Mar 2023 19:11
por JoséQuintas
faustinofaria escreveu:Porque você está migrando do 3.4 para o 3.2?
Uso o 3.2. Outro dia vi que um programador estava tendo problemas de travamento Harbour + GTWVW com Windows 10/11. Ele mudou do 3.2 para o 3.4 e resolveu.
Eu estava pensando em migrar, pois achei que era mais novo. E agora vejo seu post.
Pode me auxiliar nisso, por favor!
Muito obrigado!
O projeto inicial foi Harbour, continua até hoje.
Desse projeto foi criada uma cópia, o XHarbour, então passaram a ser 2 diferentes.
Do mesmo projeto foi criada uma cópia, o Harbour 3.4., então passaram a ser 3 diferentes.
São 3 projetos, cada um foi evoluindo de uma maneira.

O Harbour 3.4 até foi incorporando TUDO do 3.2, mas parou, dependendo do ponto de vista, ficou pra trás.
Muita coisa do 3.4 foi sendo copiada para os outros, mas não tudo, só o que interessou pra quem mexe no 3.2.

Hoje, por exemplo, o Harbour 3.2 tem o símbolo do EURO, usado em quase toda a Europa, o 3.4 não, XHarbour nem sei.
Isso deve ter provocado uma migração pesada pra 3.2, pelo menos da Europa.

Por outro lado, está sendo muito difundido o mod_harbour, pra uso do Harbour na internet, que usa como base totalmente o Harbour 3.4, devido às melhorias dele.

São 3 produtos diferentes: Harbour 3.2 , Harbour 3.4 e XHarbour

De Harbour, o único que vém sendo atualizado é o Harbour 3.2.
É de se imaginar que, por ser o mais usado, vai ser o que terá mais suporte e correções.

NÃO TIVE NENHUM PROBLEMA COM HARBOUR 3.4
Apenas cansei de "ser diferente", no que se refere a versão do Harbour.

Usar GTWVW também é ser diferente, vai deixar preso ao 3.4, e só vai servir ele.
Usar GTWVG nem tanto, tem nos dois.

Fora isso, faço contribuições pra algumas LIBs.
Já aconteceu de eu mandar coisa pra LIB, e não funcionar no 3.2.
Usando 3.2 vai ser certeza de funcionar.

De certa forma, vai da preferência de cada um.
Mas vai que a Microsoft muda as regras do jogo, só o 3.2 vai ser atualizado rápido.

O W10 bagunçou a GTWVW ? e o que mais pode bagunçar daqui pra frente ?
Pode resolver agora com 3.4, mas e depois ?

De Harbour 3.4 pra Harbour 3.2

Enviado: 14 Mar 2023 19:14
por JoséQuintas
Acabei de pegar uma diferença 3.4 x 3.2

Código: Selecionar todos

test.prg
/fontes/integra/libjpa/prg/errorsys.prg
error F0035 Bad command-line parameter '/fontes\integra\libjpa\prg\errorsys.prg'
No 3.2, só se for no formato windows, com barra invertida.
No Linux vai ser complicado resolver isso.

De Harbour 3.4 pra Harbour 3.2

Enviado: 14 Mar 2023 19:33
por Itamar M. Lins Jr.
Olá!
Por outro lado, está sendo muito difundido o mod_harbour, pra uso do Harbour na internet, que usa como base totalmente o Harbour 3.4, devido às melhorias dele.
Sei disso não.
Cadê a fonte dessa informação ?
Acompanho desde o inicio até nos grupos... Agente usa HB32.

Saudações,
Itamar M. Lins Jr.

De Harbour 3.4 pra Harbour 3.2

Enviado: 14 Mar 2023 20:40
por JoséQuintas
Não dá mais pra ver, foi tudo apagado.
Ficava tudo lá no site do Antonio Linares.
Só procurar os posts aqui de mod_harbour, e vai ver que nenhum link funciona mais.
A história foi apagada.