Página 2 de 2

Usando BITMAP no TAB

Enviado: 28 Nov 2020 22:19
por Fernando queiroz
Simoes teria como você postar a CLASS New( ) da HTAB, pois acho que a minha está diferente da sua estou meio perdido

Código: Selecionar todos

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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 06:41
por asimoes
Fernando

Tem modificações pra fazer:
1- guilib.ch

Código: Selecionar todos

#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

Código: Selecionar todos

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

Código: Selecionar todos

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:

Código: Selecionar todos

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

Código: Selecionar todos

         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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 06:48
por asimoes
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

Código: Selecionar todos

 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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 07:08
por asimoes
Quase ia esquecendo do exemplo de uso após as modificações

Código: Selecionar todos

   @ 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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 11:13
por Fernando queiroz
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

Código: Selecionar todos

	@ 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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 11:23
por asimoes
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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 11:28
por asimoes
Nesse caso pra não usar o BEGIN PAGE, as chamadas devem ser o ON CHANGE para as janelas que quer exibir

Usando BITMAP no TAB

Enviado: 29 Nov 2020 12:29
por asimoes
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 )

Usando BITMAP no TAB

Enviado: 29 Nov 2020 13:52
por asimoes
BEGIN PAGE mata a exibição das imagens pode ser que quem construiu a classe não tenha observado esse detalhe

Usando BITMAP no TAB

Enviado: 29 Nov 2020 16:33
por Fernando queiroz
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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 18:10
por asimoes
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

Usando BITMAP no TAB

Enviado: 29 Nov 2020 20:33
por Fernando queiroz
NOS BOTOES

Código: Selecionar todos

			@ 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

Código: Selecionar todos

************************************************************************************************************************************************************************************************************************
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

Código: Selecionar todos

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