Meus controles, não totalmente portados pra 3.2
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
O ícone usado é harbour\package\harbour.ico, mas só existe quando se baixam os fontes do harbour, e vai precisar ajustar o path no arquivo RC.
Em todo caso, tem o compilado junto, harbour 3.2.
Talvez algum dia possa fazer parte do harbour.
Note que é sempre o mesmo ícone, com redimensionamento, coisa que não tem na wvg atual.
Também não estava previsto na wvg atual usar texto + icone ao mesmo tempo
No 3.4 a cor de fundo do texto, por exemplo, era alterada, no 3.4 está mantendo branco.
Ainda não fiz muita tentativa pra corrigir isso.
Com certeza acima é recurso do rmchart.
Mas usando um controle simples pro gráfico, chamei de wvgTstRectangle()
É só um controle vazio.
Em todo caso, tem o compilado junto, harbour 3.2.
Talvez algum dia possa fazer parte do harbour.
Note que é sempre o mesmo ícone, com redimensionamento, coisa que não tem na wvg atual.
Também não estava previsto na wvg atual usar texto + icone ao mesmo tempo
No 3.4 a cor de fundo do texto, por exemplo, era alterada, no 3.4 está mantendo branco.
Ainda não fiz muita tentativa pra corrigir isso.
Com certeza acima é recurso do rmchart.
Mas usando um controle simples pro gráfico, chamei de wvgTstRectangle()
É só um controle vazio.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
O exemplo dos buttons, compliquei um pouco pra dar opção de janela modal ou não modal, e pra recursividade de acordo.
Se executar exemplo modal cada button que clica numa janela, abre outra janela modal por cima.
Se executar exemplo nomodal, cada button que clica abre uma nova janela independente.
É só esse fonte acima pras duas opções.
ESSE RECURSO DE JANELAS É DA PRÓPRIA GTWVG.
O recurso de buttons também, só o redimensionamento de ícone que não é, e esse uso de texto+ícone.
E aqui cabe uma pergunta básica:
Dá pra comparar algum exemplo da gtwvg com esse ?
Acho que não. Os exemplos da GTWVG são complicados.
Esse usa o que seria uma LIB GUI, sem reaproveitar janela, e controles windows.
Os exemplos da GTWVG usam as funções WVT_*, que são usados de outra forma mais chata/complicada.
Código: Selecionar todos
#include "inkey.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "wvtwin.ch"
FUNCTION demo_button( cText, nMode )
LOCAL nKey := 0, oCrt, oControl, nCol := 0, GetList := {}
LOCAL cName := Space(30), cAddress := Space(30), cCity := Space(20)
LOCAL oCtlList := { ;
{ "Insert", "icoharbour", Asc( "I" ), Nil }, ;
{ "Edit", "icoharbour", Asc( "E" ), Nil }, ;
{ "Delete", "icoharbour", Asc( "D" ), Nil }, ;
{ "Search", "icoharbour", Asc( "S" ), Nil }, ;
{ "Exit", "icoharbour", K_ESC, Nil } }
hb_Default( @cText, "" )
hb_Default( @nMode, 1 )
IF nMode == 1
oCrt := wvgCrt():New()
oCrt:lModal := .T.
oCrt:Create( ,, { 1, 1 }, { 24, 60 } )
ELSE
hb_gtReload( "WVG" )
SetMode( 25, 80 )
ENDIF
SetColor( "W/B" )
CLS
@ 1, 0 SAY cText
FOR EACH oControl IN oCtlList
WITH OBJECT oControl[ 4 ] := wvgTstPushbutton():New()
:PointerFocus := .F.
:Style += BS_TOP
:Create( oCrt, , { -3, iif( nCol == 0, -0.1, -nCol ) }, { -3, -6 } )
:SetCaption( { , WVG_IMAGE_ICONRESOURCE, oControl[ 2 ] } )
:SetCaption( oControl[ 1 ] )
:Activate := BuildBlockKeyPut( oControl[ 3 ] )
:TooltipText( oControl[ 1 ] )
nCol += 6
ENDWITH
NEXT
@ 8, 1 SAY "Name.....:" GET cName
@ Row() + 1, 1 SAY "Address..:" GET cAddress
@ Row() + 1, 1 SAY "City.....:" GET cCity
SetPaintGetList( GetList, oCrt )
CLEAR GETS
DO WHILE nKey != K_ESC
nKey := Inkey(0)
IF nKey != K_ESC
FOR EACH oControl IN oCtlList
IF nKey == oControl[ 3 ]
IF oCrt == Nil
hb_ThreadStart( { || demo_button( oControl[ 1 ], nMode ) } )
ELSE
demo_button( oControl[ 1 ], nMode )
ENDIF
ENDIF
NEXT
ENDIF
ENDDO
IF nMode == 1
oCrt:Destroy()
ENDIF
RETURN Nil
FUNCTION BuildBlockKeyPut( nKey )
RETURN { || HB_KeyPut( nKey ) }
FUNCTION SetPaintGetList( GetList, oCrt )
LOCAL oGet, oControl
FOR EACH oGet IN GetList
oControl := wvgTstGroupbox():New()
oControl:Create( oCrt, , { -(oGet:Row-0.3), -(oGet:Col-0.3) }, { -1.3, -0.4-Len( Transform( oGet:VarGet(), oGet:Picture ) ) } )
NEXT
RETURN Nil
Se executar exemplo nomodal, cada button que clica abre uma nova janela independente.
É só esse fonte acima pras duas opções.
ESSE RECURSO DE JANELAS É DA PRÓPRIA GTWVG.
O recurso de buttons também, só o redimensionamento de ícone que não é, e esse uso de texto+ícone.
E aqui cabe uma pergunta básica:
Dá pra comparar algum exemplo da gtwvg com esse ?
Acho que não. Os exemplos da GTWVG são complicados.
Esse usa o que seria uma LIB GUI, sem reaproveitar janela, e controles windows.
Os exemplos da GTWVG usam as funções WVT_*, que são usados de outra forma mais chata/complicada.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
Ainda sobre o anterior:
Os controles windows (wvg*) são criados e não somem da janela, igual é normal em GUI.
Não precisa ficar repintando igual os outros.
Uma diferença entre console e GUI é justamente o console ficar usando sempre a mesma janela, apagar, salvar, restaurar, etc.
Em GUI a janela é criada do jeito que vai ser usada o tempo todo, uma nova janela pra cada "diálogo" diferente.
É isso que tem aí.
Torna tudo relativamente mais simples.
Talvez se na época que saiu a GTWVG exemplos assim tivessem chamado mais a atenção.
De qualquer jeito, OOP confunde a cabeça de quem não está acostumado.
E os exemplos confundiram mais ainda kkkk
Os controles windows (wvg*) são criados e não somem da janela, igual é normal em GUI.
Não precisa ficar repintando igual os outros.
Uma diferença entre console e GUI é justamente o console ficar usando sempre a mesma janela, apagar, salvar, restaurar, etc.
Em GUI a janela é criada do jeito que vai ser usada o tempo todo, uma nova janela pra cada "diálogo" diferente.
É isso que tem aí.
Torna tudo relativamente mais simples.
Talvez se na época que saiu a GTWVG exemplos assim tivessem chamado mais a atenção.
De qualquer jeito, OOP confunde a cabeça de quem não está acostumado.
E os exemplos confundiram mais ainda kkkk
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
Pensando bem, faltou um exemplo com buttons de tamanhos variados e mesmo ícone....
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
Na prática não vai ser usado, é só pra demonstrar o recurso de redimensionamento da imagem no button.
Código: Selecionar todos
#include "inkey.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "wvtwin.ch"
FUNCTION demo_buttonSize( cText )
LOCAL nKey := 0, oCrt, oControl, nCol := 0, aButtonSize := { 3, 6 }
LOCAL oCtlList := { ;
{ "Insert", "icoharbour", Asc( "I" ), Nil }, ;
{ "Edit", "icoharbour", Asc( "E" ), Nil }, ;
{ "Delete", "icoharbour", Asc( "D" ), Nil }, ;
{ "Search", "icoharbour", Asc( "S" ), Nil }, ;
{ "Exit", "icoharbour", K_ESC, Nil } }
hb_Default( @cText, "" )
oCrt := wvgCrt():New()
oCrt:lModal := .T.
oCrt:Create( ,, { 1, 1 }, { 24, 60 } )
SetColor( "W/B" )
CLS
@ 1, 0 SAY cText
FOR EACH oControl IN oCtlList
WITH OBJECT oControl[ 4 ] := wvgTstPushbutton():New()
:PointerFocus := .F.
:Style += BS_TOP
:Create( oCrt, , { -3, iif( nCol == 0, -0.1, -nCol ) }, { -aButtonSize[ 1 ], -aButtonSize[ 2 ] } )
:SetCaption( { , WVG_IMAGE_ICONRESOURCE, oControl[ 2 ] } )
:SetCaption( oControl[ 1 ] )
:Activate := BuildBlockKeyPut( oControl[ 3 ] )
:TooltipText( oControl[ 1 ] )
nCol += aButtonSize[2]
aButtonSize[ 1 ] += 1
aButtonSize[ 2 ] += 2
ENDWITH
NEXT
DO WHILE nKey != K_ESC
nKey := Inkey(0)
IF nKey != K_ESC
FOR EACH oControl IN oCtlList
IF nKey == oControl[ 3 ]
demo_button( oControl[ 1 ] )
ENDIF
NEXT
ENDIF
ENDDO
oCrt:Destroy()
RETURN Nil
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
Comentário extra:
Esse é o codeblock a ser executado no button.
Em GUI costuma se chamar OnClick(), na gtwvg é Activate(), fazer o que...
Poderia ser { || rotina() } e chamar diretamente uma rotina.
Mas como estamos trabalhando com GT, que de certa forma é console, pode ser mais interessante usar um KEYBOARD, e seguir o normal do console.
Supondo que tenha lá no fonte:
A alteração no fonte pra usar buttons se resume a criar os buttons, e cada um faz o seu KEYBOARD.
A rotina existente já vai servir para o restante.
E provavelmente algum ajuste de tela, pra caber os buttons.
Pode ter caso que faça sentido chamar rotina diretamente, mas, assim continua do jeito tradicional estilo console, sem precisar alterar muito os fontes.
Mas como eu digo sempre:
Os fontes podem ter muito a ser melhorado.
Não é porque aproveita fonte, que vai deixar um fonte ruim no aplicativo.
Se o fonte tá ruim, pode ficar pior, mesmo sendo só a criação de buttons.
Nos exemplos acima, usei FOR/EACH pra criar os buttons.
Isso economiza muito fonte, comparado a criar um por um.
Cada um vai encontrar seu próprio jeito de lidar com tudo isso.
Pode até usar PIXEL, mas aí vai ficar preso a resolução de tela, o que pode não ser bom.
Usando linha/coluna, todo posicionamento e redimensionamento é automático ao redimensionar a tela.
Pode ficar comprido ou curto, conforme o que o usuário redimensionar... e daí?
Código: Selecionar todos
oButton:Activate := BuildBlockKeyPut( oControl[ 3 ] )
Em GUI costuma se chamar OnClick(), na gtwvg é Activate(), fazer o que...
Poderia ser { || rotina() } e chamar diretamente uma rotina.
Mas como estamos trabalhando com GT, que de certa forma é console, pode ser mais interessante usar um KEYBOARD, e seguir o normal do console.
Supondo que tenha lá no fonte:
Código: Selecionar todos
@ 1, 0 SAY "I-Inclui, A-Altera, E-Exclui, ESC-Sai" Get cOpcao PICTURE "!A"
READ
DO CASE
CASE cOpcao == "I"
CASE cOpcao == "A"
...
ENDCASE
A rotina existente já vai servir para o restante.
E provavelmente algum ajuste de tela, pra caber os buttons.
Pode ter caso que faça sentido chamar rotina diretamente, mas, assim continua do jeito tradicional estilo console, sem precisar alterar muito os fontes.
Mas como eu digo sempre:
Os fontes podem ter muito a ser melhorado.
Não é porque aproveita fonte, que vai deixar um fonte ruim no aplicativo.
Se o fonte tá ruim, pode ficar pior, mesmo sendo só a criação de buttons.
Nos exemplos acima, usei FOR/EACH pra criar os buttons.
Isso economiza muito fonte, comparado a criar um por um.
Cada um vai encontrar seu próprio jeito de lidar com tudo isso.
Pode até usar PIXEL, mas aí vai ficar preso a resolução de tela, o que pode não ser bom.
Usando linha/coluna, todo posicionamento e redimensionamento é automático ao redimensionar a tela.
Pode ficar comprido ou curto, conforme o que o usuário redimensionar... e daí?
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
um recurso do windows 10 é arrastar a janela para um lado.
Isso vai fazer com que a janela do aplicativo ocupe metade da tela.
soltou o mouse, o aplicativo ocupa a metade.
Não pergunte qual a vantagem, o recurso apenas existe.
Tá aí redimensionado.
O aplicativo não tem nada especial pra isso, é automático.
Isso vai fazer com que a janela do aplicativo ocupe metade da tela.
soltou o mouse, o aplicativo ocupa a metade.
Não pergunte qual a vantagem, o recurso apenas existe.
Tá aí redimensionado.
O aplicativo não tem nada especial pra isso, é automático.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
E que tal criar um novo ?
Gosto desse meu gráfico.
Tenho este exemplo da bostaurus.
Acho que juntando os dois, e mais meu rectangle.... dá pra criar um controle novo....
Gosto desse meu gráfico.
Tenho este exemplo da bostaurus.
Acho que juntando os dois, e mais meu rectangle.... dá pra criar um controle novo....
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
A barra ok, o texto não deu certo.
É só teste, ainda não está no lugar certo, que seria o Paint() do controle.
Poderia ser usada em qualquer lib.
Bostaurus, assim como gtwvg do harbour 3.2, trabalha com numérico ao invés de pointer, nem precisou conversão. (para o hwnd)
Código: Selecionar todos
CREATE CLASS MyClass INHERIT wvgTstRectangle
METHOD SetValue( nIndex, nTotal )
ENDCLASS
METHOD SetValue( nIndex, nTotal ) Class MyClass
LOCAL n_hWnd, nWidth, nHeight
LOCAL hDC, BTstruct, nAlignText, nTypeText, aSize
BT_ClientAreaInvalidateAll( ::hWnd )
n_hWnd := ::hWnd
aSize := ::CurrentSize()
nWidth := aSize[ 1 ] // BT_ClientAreaWidth( n_hWnd )
nHeight := aSize[ 2 ] // BT_ClientAreaHeight( n_hWnd )
hDC = BT_CreateDC( n_hWnd, BT_HDC_INVALIDCLIENTAREA, @BTstruct)
BT_DrawGradientFillHorizontal( hDC, 0, 0, Int( ( nWidth * nIndex ) / nTotal ), nHeight, BLACK, BLUE )
BT_DrawGradientFillHorizontal( hDC, 0, Int( ( nWidth * nIndex ) / nTotal ), nWidth - Int( ( nWidth * nIndex ) / nTotal ), nHeight, BLACK, RED )
nTypeText := BT_TEXT_TRANSPARENT + BT_TEXT_BOLD + BT_TEXT_ITALIC + BT_TEXT_UNDERLINE
nAlignText := BT_TEXT_CENTER + BT_TEXT_BASELINE
BT_DrawText( hDC, 0, 0, "Testing graphic", "Comic Sans MS", 18, YELLOW, BLACK, nTypeText, nAlignText )
BT_DeleteDC( BTstruct )
RETURN Nil
Poderia ser usada em qualquer lib.
Bostaurus, assim como gtwvg do harbour 3.2, trabalha com numérico ao invés de pointer, nem precisou conversão. (para o hwnd)
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meus controles, não totalmente portados pra 3.2
Até deu certo, mas não entendi a métrica usada pro texto.
Parece que está pegando da janela maior e não da janela do controle.
Parece que está pegando da janela maior e não da janela do controle.
Código: Selecionar todos
#include "inkey.ch"
#include "bostaurus.ch"
#include "i_color.ch"
#include "hbclass.ch"
FUNCTION MAIN
LOCAL oWin, nKey := 0, nCont
hb_gtReLoad( "WVG" )
//wvt_SetGui( .T. )
SetMode(25,80)
CLS
oWin := MyClass():New()
oWin:Create( , , { -1, -1 }, { -5, -35 } )
DO WHILE nKey != K_ESC
FOR nCont = 1 TO 100
oWin:SetValue( nCont, 100 )
IF ( nKey := Inkey(1) ) == K_ESC
EXIT
ENDIF
NEXT
IF nKey == K_ESC
EXIT
ENDIF
ENDDO
RETURN NIL
CREATE CLASS MyClass INHERIT wvgTstRectangle
VAR nIndex INIT 1
VAR nTotal INIT 1
METHOD Paint()
METHOD SetValue( nIndex, nTotal ) INLINE ::nIndex := nIndex, ::nTotal := nTotal, ::Paint()
ENDCLASS
METHOD Paint() Class MyClass
LOCAL n_hWnd, nWidth, nHeight
LOCAL hDC, BTstruct, nAlignText, nTypeText, aSize
BT_ClientAreaInvalidateAll( ::hWnd )
n_hWnd := ::hWnd
aSize := ::CurrentSize()
nWidth := aSize[ 1 ] // BT_ClientAreaWidth( n_hWnd )
nHeight := aSize[ 2 ] // BT_ClientAreaHeight( n_hWnd )
hDC = BT_CreateDC( n_hWnd, BT_HDC_INVALIDCLIENTAREA, @BTstruct)
BT_DrawGradientFillHorizontal( hDC, 0, 0, Int( ( nWidth * ::nIndex ) / ::nTotal ), nHeight, BLACK, BLUE )
BT_DrawGradientFillHorizontal( hDC, 0, Int( ( nWidth * ::nIndex ) / ::nTotal ), nWidth - Int( ( nWidth * ::nIndex ) / ::nTotal ), nHeight, BLACK, RED )
nTypeText := BT_TEXT_TRANSPARENT + BT_TEXT_BOLD + BT_TEXT_ITALIC
nAlignText := BT_TEXT_LEFT + BT_TEXT_BASELINE
BT_DrawText( hDC, 40, 55, "Testing graphic", "Comic Sans MS", 25, YELLOW, BLACK, nTypeText, nAlignText )
BT_DeleteDC( BTstruct )
RETURN Nil
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/
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/