Clipper On Line • Ver Tópico - Usando BITMAP no TAB

Usando BITMAP no TAB

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Usando BITMAP no TAB

Mensagempor Fernando queiroz » 28 Nov 2020 22:19

Simoes teria como você postar a CLASS New( ) da HTAB, pois acho que a minha está diferente da sua estou meio perdido

METHOD New( oWndParent, nId, nStyle, nLeft, nTop, nWidth, nHeight, ;
      oFont, bInit, bSize, bPaint, aTabs, bChange, aImages, lResour, nBC, bClick, bGetFocus, bLostFocus  ) CLASS HTab
   LOCAL i, aBmpSize

   nStyle   := Hwg_BitOr( iif( nStyle == Nil,0,nStyle ), WS_CHILD + WS_VISIBLE + WS_TABSTOP )
   ::Super:New( oWndParent, nId, nStyle, nLeft, nTop, nWidth, nHeight, oFont, bInit, ;
      bSize, bPaint )

   ::title   := ""
   ::oFont   := iif( oFont == Nil, ::oParent:oFont, oFont )
   ::aTabs   := iif( aTabs == Nil, {}, aTabs )
   ::bChange := bChange
   ::bChange2 := bChange

   ::bGetFocus := iif( bGetFocus == Nil, Nil, bGetFocus )
   ::bLostFocus := iif( bLostFocus == Nil, Nil, bLostFocus )
   ::bAction   := iif( bClick == Nil, Nil, bClick )

   IF aImages != Nil
      ::aImages := {}
      FOR i := 1 TO Len( aImages )
         AAdd( ::aImages, Upper( aImages[i] ) )
         aImages[i] := iif( lResour, hwg_Loadbitmap( aImages[i] ), hwg_Openbitmap( aImages[i] ) )
      NEXT
      aBmpSize := hwg_Getbitmapsize( aImages[1] )
      ::himl := hwg_Createimagelist( aImages, aBmpSize[1], aBmpSize[2], 12, nBC )
      ::Image1 := 0
      IF Len( aImages ) > 1
         ::Image2 := 1
      ENDIF
   ENDIF

   ::Activate()

   RETURN Self
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 06:41

Fernando

Tem modificações pra fazer:
1- guilib.ch
#xcommand @ <x>,<y> TAB [ <oTab> ITEMS ] <aItems> ;
             [ OF <oWnd> ]              ;
             [ ID <nId> ]               ;
             [ SIZE <width>, <height> ] ;
             [ STYLE <nStyle> ]         ;
             [ FONT <oFont> ]           ;
             [ ON INIT <bInit> ]        ;
             [ ON SIZE <bSize> ]        ;
             [ ON PAINT <bDraw> ]       ;
             [ ON CHANGE <bChange> ]    ;
             [ ON CLICK <bClick> ]      ;
             [ ON RIGHTCLICK <bRClick> ];
             [ ON GETFOCUS <bGetFocus> ];
             [ ON LOSTFOCUS <bLostFocus>];
             [ BITMAP <aBmp>  [<res: FROM RESOURCE>] [ BITCOUNT <nBC> ] ]  ;
             [ SIZEBMP <nWidthIm>, <nHeightIm> ] ;
          => ;
          [<oTab> := ] HTab():New( <oWnd>,<nId>,<nStyle>,<x>,<y>,<width>, ;
             <height>,<oFont>,<bInit>,<bSize>,<bDraw>,<aItems>,<bChange>, <aBmp>, <.res.>,<nBC>,;
             <bClick>, <bGetFocus>, <bLostFocus>, <bRClick>, <nWidthIm>, <nHeightIm> ) ;;
          [ <oTab>:name := <(oTab)> ]


2-HTAB.PRG, incluir 2 parâmetros novos: nWidthIm, nHeightIm
  METHOD New( oWndParent, nId, nStyle, nLeft, nTop, nWidth, nHeight, ;
               oFont, bInit, bSize, bPaint, aTabs, bChange, aImages, lResour, nBC, ;
               bClick, bGetFocus, bLostFocus, bRClick, nWidthIm, nHeightIm )

METHOD New( oWndParent, nId, nStyle, nLeft, nTop, nWidth, nHeight, ;
            oFont, bInit, bSize, bPaint, aTabs, bChange, aImages, lResour, nBC, bClick, bGetFocus, bLostFocus, bRClick, nWidthIm, nHeightIm ) CLASS HTab


Onde:
   aImages[i] := iif( lResour, hwg_Loadbitmap( aImages[i] ), hwg_Openbitmap( aImages[i] ) ) 

Trocar por:
         IF lResour
            aImages[ i ] := HBitmap():AddResource( aImages[ i ], LR_LOADTRANSPARENT + LR_LOADMAP3DCOLORS, , nWidthIm, nHeightIm ):handle
         ELSE
            aImages[ i ] := HBitmap():AddFile( aImages[ i ], LR_LOADTRANSPARENT + LR_LOADMAP3DCOLORS, , nWidthIm, nHeightIm ):handle
         ENDIF         

3-Compilar a lib
4-testar

Lembrando que essas modificações devem ser sugeridas ao Kressin pra ficarem na lib original
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 06:48

Eu uso a Bostaurus, a minha versão permite usar jpg, png, etc, mas ai teria que incorporar a bostaurus na hwgui, provavelmente o Kressin não vai querer fazer isso, mas tá como na diz a gíria
mamão com açúcar pra usar.

Com a Bostaurus fica assim: tanto faz estar no resource ou em uma pasta
 nHandleFile := BT_BitmapLoadFile( aImages[ i ] )
nHandleFile := BT_BitmapCopyAndResize( nHandleFile, nWidthIm, nHeightIm )

Todas as imagens estão no .rc
2020-11-29 06_54_30-QR Code.png
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 07:08

Quase ia esquecendo do exemplo de uso após as modificações

   @ 1,110 TAB oPage1 ITEMS {"TESTE 1   ", "TESTE 2   ", "TESTE 3   ", "TESTE 4   "} SIZE 500,32 ;
   ON CHANGE {|This| hwg_MsgInfo( str(oPage1:nActive)) };
   ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS;
   BITMAP { "ICON_STOP", "ICON_EXIT1", "ICON_EXIT2", "ICON_EXIT3"} FROM RESOURCE SIZEBMP 24, 24


Se não passar SIZEBMP 24, 24 o default é 24 x 24
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor Fernando queiroz » 29 Nov 2020 11:13

Na minha compilação deu eerro na linha vermelha

#xcommand @ <x>,<y> TAB [ <oTab> ITEMS ] <aItems> ;
[ OF <oWnd> ] ;
[ ID <nId> ] ;
[ SIZE <width>, <height> ] ;
[ STYLE <nStyle> ] ;
[ FONT <oFont> ] ;
[ ON INIT <bInit> ] ;
[ ON SIZE <bSize> ] ;
[ ON PAINT <bDraw> ] ;
[ ON CHANGE <bChange> ] ;
[ ON CLICK <bClick> ] ;
[ ON GETFOCUS <bGetFocus> ];
[ ON LOSTFOCUS <bLostFocus>];
[ BITMAP <aBmp> [<res: FROM RESOURCE>] [ BITCOUNT <nBC> ] ] ;
[ SIZEBMP <nWidthIm>, <nHeightIm> ] ;
=> ;
[<oTab> := ] HTab():New( <oWnd>,<nId>,<nStyle>,<x>,<y>,<width>, ;
<height>,<oFont>,<bInit>,<bSize>,<bDraw>,<aItems>,<bChange>, <aBmp>, <.res.>,<nBC>,;
<bClick>, <bGetFocus>, <bLostFocus>, <bRClick>, <nWidthIm>, <nHeightIm> ) ;;
[ <oTab>:name := <(oTab)> ]

C:\hwgui>hbmk2 hwgui.hbp procmisc.hbp hbxml.hbp hwgdebug.hbp
hbmk2: Processando opç⌡es do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuraçπo: C:\hb32\bin\hbmk.hbc
hbmk2: Harbour: Compilando módulos...
include\guilib.ch(593) Error E0008 Unknown result marker in #translate/#command
1 error

outra coisa que esta acontecendo é que quando eu coloco
BEGIN PAGE <cname> OF <oTab> ou <oTab>:StartPage( <cname> )

ele substitui o que está no array <aItems> , como fica a parte das paginas

   @ 1,113 TAB oPage1 ITEMS {'VENDEDORES   ', 'RELATÓRIOS   '} SIZE 1024,456 ;
         ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS;
         ON CHANGE  {|This| ::Vendedores_tab(This, oDlg, @cProgressKey ) } ;
         BITMAP {"product-256-24-neg", "PRINTER-256-24-neg"} from RESOURCE SIZEBMP 24, 24

      oPage1:StartPage(  )
                          < comandos da pagina >
      oPage1:EndPage()

      oPage1:StartPage( )
                          < comandos da pagina >
               oPage1:EndPage()


se usar oPage1:StartPage( "VENDEDORES" ) ele aparece mas não aparece o BMP
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 11:23

Fernando,

Dá uma olhada na minha guilib.ch

Outra coisa eu não uso BEGIN PAGE, use sem o BEGIN PAGE, já fiz um teste aqui o icone não aparece porque não tem tratamento para imagem, todos os testes que eu fiz e postei tela foram sem BEGIN PAGE

Aqui compila normal
Anexos
guilib.ch
(93.57 KiB) Baixado 32 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 11:28

Nesse caso pra não usar o BEGIN PAGE, as chamadas devem ser o ON CHANGE para as janelas que quer exibir
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 12:29

Pra saber qual aba está no momento: retorna um número da aba corrente, útil para tratar no ON CLICK

ON CLICK {|o| hwg_MsgInfo( str( hwg_Getcurrenttab( Thisform:oPage1:handle ) ) ) } ;

hwg_Getcurrenttab( Thisform:oPage1:handle )
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 13:52

BEGIN PAGE mata a exibição das imagens pode ser que quem construiu a classe não tenha observado esse detalhe
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor Fernando queiroz » 29 Nov 2020 16:33

Varia mudanças tentando fazer o .BMP aparecer na TAB mais foi em vão, nao deu, mas consegui outras coisas

aumentar o HEADER e fazer um gradiente e mudar a cor da letra

teste.jpg


ficou ate interessante,

Outra coisa que tentei implementar seria uma marca de HEADER selecionado, mas não consegui entender o exemplo do TUTOR
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Usando BITMAP no TAB

Mensagempor asimoes » 29 Nov 2020 18:10

Fernando, pois é eu particularmente tive problemas com PAGE, pulei fora, vi que o melhor é exibir uma janela modal, pode ser até a chamada da janela usando uma grid, agora que recurso você usou?

Gostei desse gradiente qual é a combinação no array? o icone branco faz um destaque legal

Esse texto em baixo do icone como fez, posta aqui um exemplo
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Usando BITMAP no TAB

Mensagempor Fernando queiroz » 29 Nov 2020 20:33

NOS BOTOES

         @ 0,0 PANEL oPanel1 SIZE 1024,80 ;
               ON PAINT {|| Gradiente( oPanel1, 0, 0, 1920, 80, 1, {0, 13400576} ) }
               oPanel1:Anchor:=130

         @ 0,0 LINE oLine LENGTH 1024
               oLine:Anchor:=130

         @ 5,13 OWNERBUTTON oOwnerbutton1  OF oPanel1  SIZE 73,59 ;
               ON CLICK {|| ::CADASTRO_VENDEDORES_MANUTENCAO( "INCLUIR" , ), oPage1:oBrowse1:aArray := ::VENDEDORES_MANUTENCAO_CARREGA( "ORDER BY " + cAlvo_Consulta ), ::VENDEDORES_MANUTENCAO_onDlgInit( oDlg ), oPage1:obrowse1:REFRESH()};
               FLAT  ;
               TEXT 'Inclui' COLOR 16777215  ;
               COORDINATES 0, 40, 0, 0  ;
               BITMAP HBitmap():Addresource('add-file-256-30')    ;
               COORDINATES 0, 5, 0, 0  ;
               TOOLTIP 'Incluir novo Vendedor'
               oOwnerbutton1:aStyle := { HStyle():New( {0, 13400576}, 1,, ),  HStyle():New( {0, 13400576}, 1,, 2, 16777215 ), HStyle():New( {0, 13400576}, 1,  ) }


FUNCAO GRADIENTE
************************************************************************************************************************************************************************************************************************
FUNCTION Gradiente( oPanel, x, y, x1, y1, nOrient, aCores )
************************************************************************************************************************************************************************************************************************
   Local pps, hDC
      pps := hwg_Definepaintstru()
      hDC := hwg_Beginpaint( oPanel:handle, pps )
      hwg_drawGradient( hDC, x, y, x1, y1, nOrient, aCores )
      hwg_Endpaint( oPanel:handle, pps )
  RETURN .T.


NO BROWSE
LOCAL oBrowse1;
   , oColuna, bColorBlock;
   , cAlvo_Consulta:="VENDEDOR.NOMVEN" ;

   @ 2,30 BROWSE oBrowse1 ARRAY OF oDlg SIZE 1018,420  STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
         ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
         ON KEYDOWN {|oBrowse1,nKeyPress| ::VENDEDORES_MANUTENCAO_onKeyDown( oBrowse1, nKeyPress, oDlg, @cProgressKey, @cAlvo_Consulta ) }

         oBrowse1:nHeadRows := 2
         oBrowse1:oStyleHead := HStyle():New( { 0, 13400576 }, 1,, 0.4, 16759929 )
         oBrowse1:headColor := 16777215
         oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)
         oBrowse1:aArray :=  ::VENDEDORES_MANUTENCAO_CARREGA( "ORDER BY VENDEDOR.NOMVEN" )
         oBrowse1:freeze := 2   
         oBrowse1:AddColumn( HColumn():New('ID', hwg_ColumnArBlock() ,'N',11, 0 ,.F.,1,2,,,,,,;
                     {|| oBrowse1:aArray := ::VENDEDORES_MANUTENCAO_CARREGA( "ORDER BY VENDEDOR_ID" ),cAlvo_Consulta:="VENDEDOR.ID",obrowse1:Refresh(), hwg_WriteStatus( oDlg,2,"Ordem: ID") } ,,,,,,,))
         oBrowse1:AddColumn( HColumn():New('NOME VENDEDOR', hwg_ColumnArBlock() ,'C',24, 0 ,.F.,,,,,,,,;
                     {|| oBrowse1:aArray := ::VENDEDORES_MANUTENCAO_CARREGA( "ORDER BY VENDEDOR.NOMVEN" ), cAlvo_Consulta:="VENDEDOR.NOMVEN",obrowse1:Refresh(), hwg_WriteStatus( oDlg,2,"Ordem: NOME VENDEDOR") } ,,,,,,,))
         bColorBlock := {|| {0,16777215,, } }      
         FOR EACH oColuna IN oBrowse1:aColumns
            oColuna:bColorBlock := bColorBlock
         NEXT
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Anterior



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro