Clipper On Line • Ver Tópico - Usando BITMAP no TAB
Página 1 de 2

Usando BITMAP no TAB

MensagemEnviado: 25 Nov 2020 13:03
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

Usando BITMAP no TAB

MensagemEnviado: 26 Nov 2020 11:59
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"}

Usando BITMAP no TAB

MensagemEnviado: 26 Nov 2020 22:07
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()

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 09:05
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.

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 09:38
por asimoes
Fiz um teste aqui por resource não funcionou, funcionou carregando o arquivo da pasta

 @ 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

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 09:55
por asimoes
Tem que ser icones 32 x 32 bitmaps
2020-11-27 09_49_08-Window.png

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 11:35
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

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 20:58
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
   @ 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' )

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 21:37
por asimoes
O Bitmap tem que ter essa dimensão 32 x 32 pixels

Usando BITMAP no TAB

MensagemEnviado: 27 Nov 2020 22:38
por JoséQuintas
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

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.

Usando BITMAP no TAB

MensagemEnviado: 28 Nov 2020 06:47
por asimoes
Quintas

Pensei também na HWG_LOADIMAGE mas vai ter que modificar a classe, tem que apresentar o problema para o Kressin

Usando BITMAP no TAB

MensagemEnviado: 28 Nov 2020 07:29
por asimoes
Consegui definir tamanho para o bitmap, mas resource não carregou

        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

Usando BITMAP no TAB

MensagemEnviado: 28 Nov 2020 07:35
por asimoes
2020-11-28 07_34_12-Window.png


Com a classe modificada definindo tamanho do bitmap para 24 x 24 pixel

Usando BITMAP no TAB

MensagemEnviado: 28 Nov 2020 08:09
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

Usando BITMAP no TAB

MensagemEnviado: 28 Nov 2020 08:25
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
#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)> ]

Usando BITMAP no TAB

MensagemEnviado: 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

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

MensagemEnviado: 29 Nov 2020 06:41
por asimoes
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

Usando BITMAP no TAB

MensagemEnviado: 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
 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

MensagemEnviado: 29 Nov 2020 07:08
por asimoes
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

Usando BITMAP no TAB

MensagemEnviado: 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

   @ 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

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