GTWVG - Harbour 3.2

GTWVG com API Windows somente no Harbour.
No Harbouir 3.4 está sendo usado pointer, aonde no 3.2 é numérico.

Moderador: Moderadores

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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Código: Selecionar todos

   AAdd( aBlocks, {|| wvt_DrawLabel( 1, 40, cLabel, 6,, RGB( 255, 255, 255 ), RGB( 198, 198, 198 ), "Arial", 26, , , , , .T., .T. ) } )
   AAdd( aBlocks, {|| wvt_DrawBoxRaised( nTop, nLft, nBtm, nRgt ) } )
   AAdd( aBlocks, {|| wvt_DrawBoxRecessed( 7, 61, 13, 70 ) } )
   AAdd( aBlocks, {|| wvt_DrawBoxGroup( 15, 59, 18, 72 ) } )
   AAdd( aBlocks, {|| wvt_DrawBoxGroup( 5, 6, 19, 44 ) } )
   AAdd( aBlocks, {|| wvt_DrawImage( 8, 62, 12, 69, IMAGE_VOUCH, , .T. ) } )
   AAdd( aBlocks, {|| wvt_DrawBoxRecessed( 7, 48, 13, 55 ) } )
   AAdd( aBlocks, {|| wvt_DrawLine( MaxRow() - 2, 0, MaxRow() - 2, MaxCol(), WVT_LINE_HORZ, WVT_LINE_RECESSED, WVT_LINE_BOTTOM ) } )
   AAdd( aBlocks, {|| wvt_DrawLine( MaxRow() - 1, 41, MaxRow(), 41, WVT_LINE_VERT, WVT_LINE_RECESSED, WVT_LINE_CENTER ) } )
   AAdd( aBlocks, {|| AEval( GetList, {| oGet | wvt_DrawBoxGet( oGet:Row, oGet:Col, Len( Transform( oGet:VarGet(), oGet:Picture ) ) ) } ) } )
Nos exemplos da WVG o uso é outro.
Isso tudo acima é "desenhar na tela de fundo", não são controles GUI.

Código: Selecionar todos

   LOCAL wvtScr     := wvt_SaveScreen( 0, 0, MaxRow(), MaxCol() )
   wvt_RestScreen( wvtScr )
Isso acima, é salvar/restaurar a tela gráfica, só essa "tela de fundo".

Então....
Existia a WVT pra tudo isso, por isso esses levam o nome WVT_.
A WVG foi pra permitir o uso de controles Windows, como uma LIB GUI.
Acho que o próprio criador não percebeu que entre totalmente gráfico e totalmente GUI, existe esse modo intermediário, que tira proveito dos dois ambientes.
Acabou que GTWVG tem tudo, mas não tem nada de exemplos, só exemplo mais complicado.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

test.png
Fiz um teste com a WVG ORIGINAL.
É SÓ TESTE, NÃO É PRA USAR.

Coloquei no evento resize() do button pra recarregar o ícone do tamanho do button - tamanho do fonte.
Lógico, esse resize é pra texto encima ou embaixo, e não do lado, aonde era do lado, o texto sumiu porque o ícone "empurrou" o texto pra fora da janela.
Lógico também, ele começa normal, só faz o redimensionamento do ícone quando altera tamanho da janela, que faz alterar o tamanho do button - isso aciona a rotina em resize()

Foi só teste.
Talvez isso carregue um novo ícone a cada redimensionamento, acumulando na memória, pela falta do LR_SHARED.

Parecido com o que seria usado em HWGUI ou outra LIB, SE USAREM IMAGEM NO AUTOMÁTICO.
O Ownerbutton usa desenho manual, e usa DrawIconEx() pra isso.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Esqueci de mostrar o fonte alterado.
Neste fonte, só uma rotina pra criar os buttons.
Assim começa a reduzir fonte extra.

Código: Selecionar todos

#include "wvgparts.ch"
#include "hbgtwvg.ch"
#include "wvtwin.ch"

PROCEDURE Main

   LOCAL cResp := Space(1), GetList := {}, oBtn
   LOCAL oBtnList := { ;
      { -1, -1, -5, -10, 0, "teste", Nil }, ;
      { -1, -11, -5, -10, BS_TOP, "teste", "icoBook" }, ;
      { -1, -21, -5, -10, BS_BOTTOM, "teste", "icoBook" }, ;
      { -1, -31, -5, -10, BS_RIGHT, "teste", "icoBook" }, ;
      { -1, -41, -5, -10, BS_LEFT, "teste", "icoBook" } }

   SetMode(30,100)
   CLS
   Altd()
   FOR EACH oBtn IN oBtnList
      CreateButton( oBtn )
   NEXT
   @ 12, 5 SAY "ok" GET cResp
   READ

   RETURN

FUNCTION CreateButton( oBtn )

   AAdd( oBtn, Nil )
   WITH OBJECT oBtn[8] := wvgPushButton():New()
      :PointerFocus := .F.
      IF ! Empty( oBtn[5] )
         :Style += oBtn[5]
      ENDIF
      :Create( , , { oBtn[1], oBtn[2] }, { oBtn[3], oBtn[4] } )
      IF ! Empty( oBtn[7] )
         :SetCaption( { , WVG_IMAGE_ICONRESOURCE, oBtn[7] } )
         :sl_Resize := { || ResizeIcon( oBtn[8], oBtn[7] ) }
      ENDIF
      :SetCaption( oBtn[6] )
   ENDWITH

   RETURN oBtn

FUNCTION ResizeIcon( oBtn, cIcon )

   LOCAL aSize, nWidth, nHeight

   WITH OBJECT oBtn
      aSize := :CurrentSize()
      nWidth  := aSize[ 1 ] - 2
      nHeight := aSize[ 2 ] - wvt_GetFontInfo()[ 6 ] - 2
      wvg_SendMessage( :hWnd, BM_SETIMAGE, IMAGE_ICON, wvg_LoadImage( cIcon, 1, IMAGE_ICON, nWidth, nHeight ) )
   ENDWITH

   RETURN Nil
Só comentário:
Apesar de usar linha/coluna pra posições, o button usa pixels, e o redimensionamento da imagem é todo usando pixels.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Código: Selecionar todos

   WITH OBJECT oBtn
      aSize := :CurrentSize()
      nWidth  := aSize[ 1 ] - 2
      nHeight := aSize[ 2 ] - wvt_GetFontInfo()[ 6 ] - 2
      wvg_SendMessage( :hWnd, BM_SETIMAGE, IMAGE_ICON, wvg_LoadImage( cIcon, 1, IMAGE_ICON, nWidth, nHeight ) )
   ENDWITH
Quem usa GUI sabe, só mudam os nomes.

aSize := :CurrentSize()
Isso pega o array que contém o tamanho da janela

nWidth := aSize[ 1 ] - 2
Pra largura, menos 2 pixels, pro contorno do button

nHeight := aSize[ 2 ] - wvt_GetFontInfo()[ 6 ] - 2
Pra altura, se vai ter um texto, menos o tamanho do fonte, menos 2 pro contorno do button

wvg_SendMessage( :hWnd, BM_SETIMAGE, IMAGE_ICON, wvg_LoadImage( cIcon, 1, IMAGE_ICON, nWidth, nHeight ) )
E por último, carrega a imagem indicando o tamanho, e manda uma mensagem para o button com a nova imagem.

Essa parte toda não precisa fazer parte do fonte, melhor copiar o fonte do controle button e já alterar (ou alterar o original).

É legal a brincadeira.
GTWVG, HWGUI, HMG.... é tudo API Windows.
Os detalhes, como os nomes de métodos ou funções são diferentes, mas o funcionamento dos controles GUI é o mesmo.
E tem o desenho automático e o desenho manual, onde no manual abre mais possibilidades de cores, aparência, etc. e deixa os controles de uma LIB diferentes dos controles de outra.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Mais dois métodos do button:

Código: Selecionar todos

         oControl:Activate := BuildBlockKeyPut( oElement[ 1 ] )
         oControl:TooltipText( cTooltip )
Tooltiptext é o texto de dica, de tooltip, que mostra quando passa o mouse por cima do button.

Activate é quando clica - como eu disse, nomes puxado do xbase++
Na hwgui é no ON CLICK, ou :bClick

Pode ser uma rotina mais complexa, mas eu preferi enviar um KEYBOARD, e tratar na rotina normal do aplicativo.
Lá no controle button tem um SetFocus() de volta pra janela de GT antes de executar o comando, então o KEYBOARD vai pra GT.

Podemos ter na rotina I-Inclui, A-Altera, E-Exclui

Código: Selecionar todos

@ 1, 0 GET cResp PICTURE "!A"
READ
IF LastKey() == K_ESC
   EXIT
ENDIF
E criar os buttons pra só fazer o keyboard da letra, ou do ESC.
O usuário digita letra funciona, o usuário clica no button funciona.

Só não vamos usar o GET, pra não ficar aquele get aparecendo na tela... vai por Inkey(0) ou com tempo...
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

menu.png
Outro controle é o menu.
Mas não gosto de menu Windows, não acho prático.
Nenhuma novidade, igual qualquer menu Windows.
Tenho no aplicativo talvez há 10 anos, como opção, mas nunca liberei pra ninguém.

Deixar o menu uma bost. só pra dizer que é Windows ?
Não vejo vantagem.

Tá aí.... talvez criar um controle novo pra menu !!!
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

relatorio.png
Tenho um menu desse tipo EM CADA RELATÓRIO.
Alguma idéia GUI pra substituir ?

Ou talvez de outra forma:
Alguma idéia GUI QUE COMPENSE substituir ?

Dependendo da opção, tem pesquisa em cadastros.

Até dá pra fazer com letras diferentes, escolher entre milhões de cores, talvez enfeitar, mas....
Sei lá...
Desse jeito seria trocar 6 por meia dúzia...

E se for um controle que faça isso.... me parece também trocar 6 por meia dúzia.

Nota: mouse funciona, rodinha do mouse funciona, à primeira vista, GUI seria só pra visual mesmo, tipos de letras e cores.
A não ser que invente uma nova forma de fazer isso.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Trocar por combobox?

Aí o usuário teria que obrigatoriamente clicar com o mouse pra mudar o foco.
Poderia perder o recurso de digitar a letra.
Em HWGUI, por exemplo, tem o recurso ON KEY, mas o usuário teria que clicar no form pra poder funcionar ON KEY.
O mesmo deve acontecer se usar o combobox da gtwvg.

Não se trata de LIB ou recurso, mas, se for pra mudar, tem que ser pra melhor.

Mudar pra hwgui ? Aí na digitação do código vai ter o bug da validação do último campo.
Teria que ficar MUITO MELHOR do que está hoje, pra compensar o bug.

Mudar pra HMG?
Não sei se tem bug, mas teria que ficar melhor do que é hoje, pra justificar a troca.

Até hoje sem idéias do que melhorar nisso.

Só pensei em talvez esconder as opções, e ter apenas uma opção de filtro, que vai acrescentando o que for escolhido.
Isso deixaria um visual mais limpo.
Acho que essa sempre foi a idéia geral, mais reforçada na atualidade: visual limpo
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/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

GTWVG - Harbour 3.2

Mensagem por Fernando queiroz »

eu uso um combobox ficou legal
eu uso um combobox ficou legal
Não dou muita ênfase a relatórios, prefiro uma tela de consulta das informações, menos papel, tonner/tinta e mais atualizado os dados estao
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Fernando queiroz escreveu:Não dou muita ênfase a relatórios, prefiro uma tela de consulta das informações, menos papel, tonner/tinta e mais atualizado os dados estao
Mas não necessáriamente o relatório vai pra impressora.
A saída é um PDF que pode ser somente visualizado.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Ou também pode ser enviado por email.

Vendedores, por exemplo, querem ver direitinho suas comissões.
Além disso, há casos onde os vendedores ficam o tempo todo na rua, e nem usam computador.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

Código: Selecionar todos

METHOD WvgStatic:new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )

   ::wvgWindow:new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )

   /* SS_NOTIFY  SS_ETCHEDFRAME  SS_SUNKEN  SS_WHITERECT */

   ::style       := WS_CHILD + WS_CLIPCHILDREN
   ::className   := "STATIC"
   ::objType     := objTypeStatic

   RETURN Self

METHOD WvgStatic:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )

   ::wvgWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )

#if 0
   SS_ETCHEDFRAME
   SS_SUNKEN
   SS_LEFTNOWORDWRAP
   SS_SIMPLE
   SS_CENTERIMAGE
   SS_REALSIZEIMAGE
   SS_ENHMETAFILE
   SS_ETCHEDHORZ
   SS_ETCHEDVERT
   SS_RIGHTJUST
#endif

   SWITCH ::type
   CASE WVGSTATIC_TYPE_TEXT
      IF hb_bitAnd( ::options, WVGSTATIC_TEXT_LEFT ) == WVGSTATIC_TEXT_LEFT
         ::style += SS_LEFT /*+ SS_LEFTNOWORDWRAP */
      ENDIF
      IF hb_bitAnd( ::options, WVGSTATIC_TEXT_RIGHT ) == WVGSTATIC_TEXT_RIGHT
         ::style += SS_RIGHT
      ENDIF
      IF hb_bitAnd( ::options, WVGSTATIC_TEXT_CENTER ) == WVGSTATIC_TEXT_CENTER
         ::style += SS_CENTER
      ENDIF
      IF hb_bitAnd( ::options, WVGSTATIC_TEXT_WORDBREAK ) == WVGSTATIC_TEXT_WORDBREAK
         ::style -= SS_LEFTNOWORDWRAP
      ENDIF
      EXIT

   CASE WVGSTATIC_TYPE_GROUPBOX
      EXIT
   CASE WVGSTATIC_TYPE_ICON
      ::style += SS_ICON
      EXIT
   CASE WVGSTATIC_TYPE_SYSICON
      EXIT
   CASE WVGSTATIC_TYPE_BITMAP
      ::style += SS_BITMAP
      DO CASE
      CASE ::options == WVGSTATIC_BITMAP_TILED
         ::style += SS_CENTERIMAGE
      CASE ::options == WVGSTATIC_BITMAP_SCALED

      OTHERWISE

      ENDCASE
      EXIT

   CASE WVGSTATIC_TYPE_FGNDRECT
      ::style += SS_WHITERECT
      EXIT
   CASE WVGSTATIC_TYPE_BGNDRECT
      ::style += SS_BLACKRECT
      EXIT
   CASE WVGSTATIC_TYPE_HALFTONERECT
      ::style += SS_GRAYRECT
      EXIT
   CASE WVGSTATIC_TYPE_FGNDFRAME
      ::style += SS_WHITEFRAME
      EXIT
   CASE WVGSTATIC_TYPE_BGNDFRAME
      ::style += SS_BLACKFRAME
      EXIT
   CASE WVGSTATIC_TYPE_HALFTONEFRAME
      ::style += SS_GRAYFRAME
      EXIT
   CASE WVGSTATIC_TYPE_RAISEDBOX
      ::style += SS_ETCHEDFRAME
      EXIT

   CASE WVGSTATIC_TYPE_RECESSEDBOX
      EXIT
   CASE WVGSTATIC_TYPE_RAISEDRECT
      EXIT
   CASE WVGSTATIC_TYPE_RECESSEDRECT
      EXIT
   CASE WVGSTATIC_TYPE_RAISEDLINE
      EXIT
   CASE WVGSTATIC_TYPE_RECESSEDLINE
      EXIT
   ENDSWITCH  /* ::type */

#if 1
   /* Options */
   IF AScan( { WVGSTATIC_TYPE_FGNDFRAME, WVGSTATIC_TYPE_BGNDFRAME, WVGSTATIC_TYPE_HALFTONEFRAME }, ::type ) > 0
      DO CASE
      CASE hb_bitAnd( ::options, WVGSTATIC_FRAMETHIN ) == WVGSTATIC_FRAMETHIN
         ::style += WS_BORDER
      CASE hb_bitAnd( ::options, WVGSTATIC_FRAMETHICK ) == WVGSTATIC_FRAMETHICK
         ::style += WS_DLGFRAME
      ENDCASE
   ENDIF
#endif
#if 0
   IF ::type == WVGSTATIC_TYPE_TEXT
      DO CASE
      CASE ::options == WVGSTATIC_FRAMETHIN
         ::style += WS_BORDER
      CASE ::options == WVGSTATIC_FRAMETHICK
         ::style += WS_DLGFRAME
      ENDCASE
   ENDIF
#endif

   ::oParent:addChild( Self )
Fonte parcial do wvgStatic da WVG.
Daria pra apagar quase tudo, e deixar o Style por conta do usuário.

Código: Selecionar todos

METHOD WvgStatic:setCaption( xCaption, cDll )

   HB_SYMBOL_UNUSED( cDll )

   __defaultNIL( @xCaption, ::caption )
   ::caption := xCaption

   DO CASE
   CASE ::type == WVGSTATIC_TYPE_TEXT
      wvg_SendMessageText( ::hWnd, WM_SETTEXT, 0, ::caption )

   CASE ::type == WVGSTATIC_TYPE_BITMAP
      IF ::hBitmap != nil
         wvg_DeleteObject( ::hBitmap )
      ENDIF

      ::hBitmap := wvg_LoadImage( ::caption, iif( HB_ISNUMERIC( ::caption ), 1, 2 ) )

      wvg_SendMessage( ::hWnd, STM_SETIMAGE, IMAGE_BITMAP, ::hBitmap )

   ENDCASE

   RETURN Self
Tá errado/incompleto aí.
Se tem a opção de ícone, porque só tem opção de carregar bitmap?
Bom.... tudo bem.... vai ser só copiar do button, e já adicionar resize.

Igual em qualquer LIB, o STATIC é uma coisa de uso geral, só pra apresentar texto ou imagem ou algum desenho.
O Style seleciona entre os desenhos pré-definidos: traço, quadrado, frame com título, ícone, bitmap, etc.
Talvez até ownerdraw pra desenhos adicionais não previstos no Windows.

Tá aí um controle que é extremamente simples, mas serve pra muita coisa.

E pois é.... até um simples traço na tela é uma janela adicional.
Isso é GUI.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

E quais são os Styles que podem ser usados no controle static?

https://learn.microsoft.com/en-us/windo ... rol-styles

O ruim é que aí não mostra o que pode ser combinado.
Combinar errado, o resultado pode ser qualquer coisa.

Então.... o que temos até agora:

- Tela estilo console
- Texto de qualquer tamanho/cor
- Desenhos pré definidos e imagens
- controles

Limitação 1: trocar GET por textbox é péssima opção, por causa do foco

Limitação 2: o uso do GET normal vai ser sempre a mesma fonte/tamanho, pelo menos vai ter resize automático

Limitação 3: não é exatamente uma limitação. o ideal vai ser usar janelas e esquecer aquilo de savescreen/restorescreen.
Ou então, hide() e show() para os controles GUI, se abrir janelas comuns estilo console.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

debug.png
É só lembrar daqui, a tela de debug.

É considerar que é tela GUI, mesmo parecendo console.

O normal, pra evitar trabalho extra, é abrir uma janela pra cada coisa.

Nessa mesma tela:

Opção 1: usar hide() e show(), pra esconder e mostrar esses buttons

Opção 2: o normal de GUI, abrir uma nova janela. Ela vai estar vazia sem esses buttons. Igual toda lib GUI faz.

Não vale CLS, SAVE SCREEN, RESTORE SCREEN, porque isso passou a ser GUI e não console.

E agora.... faltam idéias...
Vale pra qualquer LIB.
Com exceção da parte de GETs.... que na WVG melhor não fugir dos GETs.
E talvez isso também elimine a TABPAGE, porque ela também depende de foco.
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

GTWVG - Harbour 3.2

Mensagem por JoséQuintas »

hb32.png
Só comentário do que estou usando.

É o Harbour 3.2 ORIGINAL.

Usando MINGW 7.3 SOMENTE 32 bits, NÃO SERVE AQUELA VERSÃO COM 32+64 bits juntos pra harbour 3.2

Essas duas alterações a mais foram enviadas para a versão oficial, mas uma aguarda há mais de um ano, outra aguarda menos.
- cor opcional diferente pras barras do tbrowse
- wvg_LoadImage() com os parâmetros pra resize da imagem sendo carregada

E removi a inclusão automática de arquivos CH em gtwvg.hbc
#headers=hbgtwvg.ch wvgparts.ch wvtwin.ch

Nada anormal, se o fonte precisa hbgtwvg.ch, precisa colocar no fonte #include "hbgtwvg.ch"
Incluir automático causa #define duplicado ao usar outras LIBs GUI ao mesmo tempo.

Pensando bem.... agora que passei a usar o Harbour 3.2, pode ficar mais fácil testar FIVEWIN.
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