Usando BITMAP no TAB

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

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

Usando BITMAP no TAB

Mensagem por Fernando queiroz »

Estou tentando colocar bitmaps no TAB mas eles não estão aparecendo, o que esta faltando ????

Segue o Código para ajuda, os BITMAPS estão no RESOURCE e com a cor correta.

@ 1,113 TAB oPage1 ITEMS {} SIZE 1024,456 ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS;
ON CHANGE {|This| ::Consultas_tab(This, oDlg, LTRIM(str(oPage1:oBrowse1:aArray[ oPage1:oBrowse1:nCurrent, 1])), oPage1:oBrowse1:aArray[ oPage1:oBrowse1:nCurrent, 2]) };
BITMAP {"product-256-30-neg", "FOLDER-256-30-neg", "FOLDER-256-30-neg" , "PRINTER-256-30-neg"} FROM RESOURCE
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

E aceita resource ?

é repetido assim mesmo BITMAP {"product-256-30-neg", "FOLDER-256-30-neg", "FOLDER-256-30-neg" , "PRINTER-256-30-neg"}
►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)
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

Usando BITMAP no TAB

Mensagem por Fernando queiroz »

asimoes escreveu:E aceita resource ?

é repetido assim mesmo BITMAP {"product-256-30-neg", "FOLDER-256-30-neg", "FOLDER-256-30-neg" , "PRINTER-256-30-neg"}
Sim o BITMAP neste caso é um ARRAY , aceita RESOURCE sim

#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> ] ] ;
=> ;
[<oTab> := ] HTab():New( <oWnd>,<nId>,<nStyle>,<x>,<y>,<width>, ;
<height>,<oFont>,<bInit>,<bSize>,<bDraw>,<aItems>,<bChange>, <aBmp>, <.res.>,<nBC>,;
<bClick>, <bGetFocus>, <bLostFocus> );
[; hwg_SetCtrlName( <oTab>,<(oTab)> )]

#xcommand BEGIN PAGE <cname> OF <oTab> ;
=> ;
<oTab>:StartPage( <cname> )

#xcommand END PAGE OF <oTab> ;
=> ;
<oTab>:EndPage()

#xcommand ENDPAGE OF <oTab> ;
=> ;
<oTab>:EndPage()
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Nesses casos eu olharia o fonte da hwgui pra ver se está implementado essa função para bitmap, aprendi muito olhando os fontes para entender o que estava errado.
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Fiz um teste aqui por resource não funcionou, funcionou carregando o arquivo da pasta

Código: Selecionar todos

 @ 1,113 TAB oPage1 ITEMS {"TESTE   ", "TESTE   ", "TESTE   ", "TESTE   "} SIZE 1024,456 ;
   ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS;
   BITMAP {"AVI\exclama.bmp", "ICON_OK16", "ICON_OK16" , "ICON_OK16"} //FROM RESOURCE
2020-11-27 09_35_23-Window.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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Tem que ser icones 32 x 32 bitmaps
2020-11-27 09_49_08-Window.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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

A função hwg_Loadbitmap pode estar falhando na leitura do resouce

Eu ainda prefiro deixar do lado de fora da aplicação qq imagem
►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)
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

Usando BITMAP no TAB

Mensagem por Fernando queiroz »

Como fica a parte

BEGIN PAGE <cname> OF <oTab>

END PAGE

mudei a forma de fazer esta parte mas não deu certo

Código: Selecionar todos

	@ 1,113 TAB oPage1 ITEMS {'PRODUTOS', 'CONSULTA 1', 'CONSULTA 2', 'RANKING DE PRODUTOS', 'RELATÓRIOS'} SIZE 1024,456 ;
			ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS;
			ON CHANGE  {|This| ::Consultas_tab(This, oDlg, LTRIM(str(oPage1:oBrowse1:aArray[ oPage1:oBrowse1:nCurrent, 1])), oPage1:oBrowse1:aArray[ oPage1:oBrowse1:nCurrent, 2], @cProgressKey ) } ;
			BITMAP {'C:\SGCMARIADB\ICONS\product-256-30-neg.BMP'} //from RESOURCE 

			oPage1:StartPage( 'PRODUTOS' )
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

O Bitmap tem que ter essa dimensão 32 x 32 pixels
►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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando BITMAP no TAB

Mensagem por JoséQuintas »

Código: Selecionar todos

HB_FUNC( HWG_LOADBITMAP )
{
   if( HB_ISNUM( 1 ) )
   {
      if( !HB_ISNIL( 2 ) && hb_parl( 2 ) )
         HB_RETHANDLE( LoadBitmap( NULL, MAKEINTRESOURCE( hb_parni( 1 ) ) ) );
      else
         HB_RETHANDLE( LoadBitmap( GetModuleHandle( NULL ),
                     MAKEINTRESOURCE( hb_parni( 1 ) ) ) );
   }
   else
   {
      void *hString;
      HB_RETHANDLE( LoadBitmap( GetModuleHandle( NULL ), HB_PARSTR( 1,
                        &hString, NULL ) ) );
      hb_strfree( hString );
   }
}
loadbitmap apenas carrega a imagem

Código: Selecionar todos

HB_FUNC( HWG_LOADIMAGE )
{
   void *hString = NULL;

   HB_RETHANDLE( LoadImage( HB_ISNIL( 1 ) ? GetModuleHandle( NULL ) : ( HINSTANCE ) hb_parnl( 1 ),      // handle of the instance that contains the image
               HB_ISNUM( 2 ) ? MAKEINTRESOURCE( hb_parni( 2 ) ) : HB_PARSTR( 2, &hString, NULL ),       // name or identifier of image
               ( UINT ) hb_parni( 3 ),  // type of image
               hb_parni( 4 ),   // desired width
               hb_parni( 5 ),   // desired height
               ( UINT ) hb_parni( 6 )   // load flags
          ) );
   hb_strfree( hString );
}
LoadImage permite redimensionar

As classes hbitmap, hicon seriam as mais adequadas 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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Quintas

Pensei também na HWG_LOADIMAGE mas vai ter que modificar a classe, tem que apresentar o problema para o Kressin
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Consegui definir tamanho para o bitmap, mas resource não carregou

Código: Selecionar todos

        IF lResour
            nHandleFile := HBitmap():AddResource( aImages[ i ], LR_LOADTRANSPARENT + LR_LOADMAP3DCOLORS, , 24, 24 ):handle
         ELSE
            nHandleFile := HBitmap():AddFile( aImages[ i ], LR_LOADTRANSPARENT + LR_LOADMAP3DCOLORS, , 24, 24 ):handle
         ENDIF         
Isso fica no METHOD New da classe HTab
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

2020-11-28 07_34_12-Window.png
Com a classe modificada definindo tamanho do bitmap para 24 x 24 pixel
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Consegui carregar o bitmap do .rc tinha uma bobeira no arquivo, mas pra funcionar teve essa modificação ai em cima na classe
2020-11-28 08_20_51-Window.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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Usando BITMAP no TAB

Mensagem por asimoes »

Modifiquei a chamada pra definir o tamanho do BMP é opcional SIZEBMP
Modifiquei o método New para incluir os tamanhos W e H

Isso pode ser uma sugestão para o Kressin

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)> ]
►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)
Responder