Jump to content
Fivewin Brasil

Erro no ListBox


soaresja1

Recommended Posts

 Boa Tarde! Estou com um erro ao clicar em uma célula no ListBox acontece este erro.

  Path and name: D:\Projetos\Controle\Controle.EXE (32 bits)
   Size: 4,138,496 bytes
   Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20161218)
   FiveWin  version: FWHX 17.09
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows version: 6.2, Build 9200

   Time from start: 0 hours 0 mins 16 secs
   Error occurred at: 26/04/2019, 14:46:15
   Error description: Error BASE/1004  Class: 'LOGICAL' has no exported method: EVAL
   Args:
     [   1] = L   .T.
     [   2] = N   86
     [   3] = N   444
     [   4] = N   1
     [   5] = O   TWBROWSE
     [   6] = L   .F.

Stack Calls
===========
   Called from:  => EVAL( 0 )
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:LBUTTONDOWN( 1972 )

Link to comment
Share on other sites

Sorry, não dá para ajudar muito, pois não entendi sua lógica para um simples LISTBOX. Leia comentários com calma.

#include "fivewin.ch"
// #include "xbrowse.ch" /// tem xbrowse aonde?
#include "colors.ch"
#include "inkey.ch"
#include "dbinfo.ch"
#include "fileio.ch"
// #include "Vkey.ch"   // nao precisa
// #include "VENDAS.CH" // proprio
	//#include "sqllib.ch"
// #include "XBrowse.Ch"  // xbrowse de novo?
	// #include "FOLDER.CH"  // tem folder aonde?
// #include "SIGAWIN.CH"  // proprio?
#include "Customer.ch"    // ?? DO \SAMPLES ??
	///
#define CLR_LGRAY        nRGB( 230, 230, 230 ) //-> Dark   - Opaco/Cinza/Cienza
#define CLR_LGREEN       nRGB( 190, 215, 190 ) //-> Green  - Verde/Vierde
#define CLR_AMARELO      nRGB( 255, 255, 000 ) //-> Yellow - Amarelo/Amarijo
#define CLR_BOMBOM       nRGB( 000, 000, 000 ) //-> Brown Light  - Preto(Black)
#define CLR_MARROM       nRGB( 135, 206, 235 ) //-> Brown Normal - Marrom Normal
#define CLR_VERMELHO     nRGB( 255, 000, 000 ) //-> Red - Vermelho/Rojo
#define CLR_GOLD1        nRGB( 255, 215, 000 ) //-> Gold1  - Ouro 1
#define CLR_GOLD2        nRGB( 238, 201, 000 ) //-> Gold2  - Ouro 2
#define CLR_GOLD3        nRGB( 205, 173, 000 ) //-> Gold3  - Ouro 3
#define CLR_GOLD4        nRGB( 139, 117, 000 ) //-> Gold4  - Ouro 4
#define CLR_LEMONCHIFFON nRGB( 255, 250, 205 ) //-> Lemon      - Limao
#define CLR_AQUAMARINE   nRGB( 127, 255, 212 ) //-> Aquamarine - Agua Marinha
#define CLR_ORANGE       nRGB( 255, 165, 000 ) //-> Orange     - Laranja
	STATIC oWnd, oClients, oClient, oName
STATIC cName
STATIC oDlgProd
	/*
+----------+-----------+----------+-------------------------+------+----------------------------+
|Programa  |  PEDP001  | Autor    |   Márcio F. Martins | Data |                         |
+----------+-----------+----------+-------------------------+------+----------------------------+
|Descricao | Tela para consulta especifica de produtos                                        |
+----------+------------------------------------------------------------------------------------+
| USO      | Projeto: Consulta específica de produtos                             |
+----------+------------------------------------------------------------------------------------+
|           ALTERACOES FEITAS DESDE A CRIACAO                                      |
+----------+-----------+------------------------------------------------------------------------+
|Autor     | Data      | Descricao                                                     |
+----------+-----------+------------------------------------------------------------------------+
+----------+-----------+------------------------------------------------------------------------+
*/
	FUNCTION PEDP001()
	   PRIVATE oButton1
   PRIVATE oButton2
   PRIVATE oButton3
   PRIVATE oButton4
   PRIVATE oButton5
   PRIVATE oButton6
   PRIVATE oButton7
   PRIVATE oComboBo1
   PRIVATE nComboBo1 := "DESC. ESPECIFICA"
   PRIVATE oGet1
   PRIVATE cGet1 := Space( 80 )
   PRIVATE oGroup1
   PRIVATE oMultiGe1
   PRIVATE cMultiGe1 := Space( 500 )
	   // PREFIRA USAR LOCAL PARA DESTRUIR
   PRIVATE oFont1 := TFont():New( "Tahoma", , 024, , .T. , , , , , .F. , .F. )
   PRIVATE oFont2 := TFont():New( "Tahoma", , 018, , .F. , , , , , .F. , .F. )
   PRIVATE oFlagVerde     := LoadBitMap( GetResources(), "BR_VERDE" )
   PRIVATE oFlagAmarelo   := LoadBitMap( GetResources(), "BR_AMARELO" )
   PRIVATE oFlagLaranja   := LoadBitMap( GetResources(), "BR_LARANJA" )
   PRIVATE oFlagVermelho  := LoadBitMap( GetResources(), "BR_VERMELHO" )
   PRIVATE oFlagAzul   := LoadBitMap( GetResources(), "BR_AZUL" )
   PRIVATE oFlagPreto   := LoadBitMap( GetResources(), "BR_PRETO" )
	   PRIVATE oWListB2
   PRIVATE aWListB2  := {}
   PRIVATE aWListB3  := {}
   PRIVATE lWBrowse1   := .T.
	   PRIVATE aLegenda := {}
	   PRIVATE cProdAtu // variável utilizada nas telas auxiliares
   PRIVATE cDescAtu // variável utilizada nas telas auxiliares
   PRIVATE lRet := .F.
	   // PRIVATE oDlgProd
	   PRIVATE oWnd
	    //JOMain()
	   aadd( aLegenda, { 'ENABLE'    , 'Estoque positivo' } )  // Verde
   aadd( aLegenda, { 'BR_AMARELO', 'Estoque totalmente reservado' } )// Amarelo
   aadd( aLegenda, { 'BR_LARANJA', 'Estoque esgotado' } )// Laranja
   aadd( aLegenda, { 'DISABLE'   , 'Estoque negativo' } )  // Vermelho
   aadd( aLegenda, { 'BR_PRETO'  , 'Produto Promoção' } )// Preto
	 
   //Define Window oDlgProd Title "Vendas   " MDIChild Of oWnd From 0,0 To MaxRow(),MaxCol() NoSysMenu
	   DEFINE DIALOG oDlgProd TITLE "Consulta Avançada de Produto" FROM 000, 000  TO 540, 1060 COLORS 0, 15658734 PIXEL
 
   @ 010, 010 COMBOBOX oComboBo1 VAR nComboBo1 ITEMS { "DESC. ESPECIFICA", "COD. PRODUTO", "COD. REFER. FORNECEDOR", "PRODUTOS EM PROMOÇÃO", "FILTRO DESCRIÇÃO" } SIZE 80, 60 PIXEL  OF oDlgProd
   //@ 010,002 COMBOBOX oComboBo1 VAR nComboBo1 ITEMS {"DESC. ESPECIFICA","COD. PRODUTO","COD. REFER. FORNECEDOR","PRODUTOS EM PROMOÇÃO","FILTRO DESCRIÇÃO"} SIZE 60, 50  PIXEL  OF oDlgProd /*COLORS 0, 16777215 PIXEL  */
	   //@ 010, 002 MSCOMBOBOX oComboBo1 VAR nComboBo1 ITEMS {"DESC. ESPECIFICA","COD. PRODUTO","COD. REFER. FORNECEDOR","PRODUTOS EM PROMOÇÃO","FILTRO DESCRIÇÃO"} SIZE 107, 012 OF oDlgProd COLORS 0, 16777215 PIXEL
	
/* // NAO PASSOU NA COMPILACAO ???
   @ 010, 114 MSGET oGet1 VAR cGet1 SIZE 230, 012 OF oDlgProd PICTURE "@!" COLORS 0, 16777215 PIXEL
*/
	   @ 010, 350 BUTTON oButton5 PROMPT "Pesquisar" SIZE 050, 010 OF oDlgProd ACTION Eval( {||fPesquisa() } ) PIXEL
   //@ 010, 334 BUTTON "Pesquisar"    SIZE 40,12 PIXEL OF oDlgProd ACTION fPesquisa()
 
   @ 026, 002 GROUP oGroup1 TO 238, 528 OF oDlgProd COLOR 0, 16777215 PIXEL
	   fWListB2() // desenha o browser
	   //@ 242, 002 GET oMultiGe1 VAR cMultiGe1 OF oDlgProd MULTILINE SIZE 525, 025 HSCROLL PIXEL FONT oFont1 /*CLR_HGREEN, CLR_YELLOW */
   //@ 228, 169 BUTTON oButton1 PROMPT "Pedido em Produção" SIZE 052, 010 OF oDlgProd ACTION fPedProodu() PIXEL
   //@ 228, 224 BUTTON oButton1 PROMPT "Pedido de Compra"   SIZE 052, 010 OF oDlgProd ACTION fPedCompr() PIXEL
   //@ 228, 279 BUTTON oButton2 PROMPT "Pedido de Venda"    SIZE 052, 010 OF oDlgProd ACTION fPedVenda() PIXEL
   //@ 010, 387 BUTTON oButton3 PROMPT "Legenda"            SIZE 052, 010 OF oDlgProd ACTION fLegenda() PIXEL
   //@ 010, 440 BUTTON oButton4 PROMPT "Sair"               SIZE 052, 010 OF oDlgProd ACTION oDlgProd:End() PIXEL
   //@ 228, 334 BUTTON oButton7 PROMPT "Ficha Técnica"      SIZE 052, 010 OF oDlgProd ACTION fFicha() PIXEL
   //@ 228, 387 BUTTON oButton5 PROMPT "Imagem"             SIZE 052, 010 OF oDlgProd ACTION fAbrir() PIXEL
	   @ 228, 440 BUTTON oButton6 PROMPT "OK"                 SIZE 052, 010 OF oDlgProd ACTION fDplClick() PIXEL
	   ACTIVATE DIALOG oDlgProd  CENTERED
	   //Activate Window oDlgProd Maximized On Init (oDlgProd:SetFocus() ) Valid (oDlgProd:=Nil,FFechar() )
	RETURN NIL //lRet
	//*************************************************************************
//* Função que desenha o browser com os itens dos pedidos de venda a faturar
//*************************************************************************
	STATIC FUNCTION fWListB2()
	//**************************
	   LOCAL oOk := LoadBitmap( GetResources(), "LBOK" )
   LOCAL oNo := LoadBitmap( GetResources(), "LBNO" )
   LOCAL cCodAux := ''
	   LOCAL TAB_PEC
	
   USE ARQPEC
	   GO TOP
	   TB_PEC := ALIAS()
	
   //Query que trata os dados a serem apresentados
	   IF Len( aWListB2 ) = 0
	      aWListB2 := {}
	      /* // SO PARA TESTE DESLIGUEI
      dbSelectArea( "TB_PEC" )
      dbSetOrder( 2 )
      DbGotop()
      */
            
	      /*
      IF !EOF() .AND. !BOF()
	         WHILE !TB_PEC->( Eof() )
	            Aadd( aWListB2, { ;
               fGetFlag();         //  1
            , TB_PEC->CODPECAS; // 1 - Codigo do Produto
            , TB_PEC->DESCRPECAS; // 2 - Descrição específica do produto
            , TB_PEC->UNIDADE; //     3 - Unidade
            , Transform( TB_PEC->PRECOVENDA, "@E 999,999,999.99" ); //  4 - Preço de venda
            , Transform( TB_PEC->FISICO, "@E 999,999,999.99" ); // 5- Estoque atual
            , TB_PEC->DATAULTCOP } ) //6 Data da ultimma compra
            TB_PEC->( dbSkip() )
         ENDDO
    
         IF Len( aWListB2 ) == 0
            Aadd( aWListB2, { "", "", "", "", "", "" } )
         ENDIF
      Endif
      */
 
   ENDIF
	
   // REVEJA ESSA LOGICA - NAO ENTENDI NADA, ENTAO NADA VOU DIZER.
   IF lWBrowse1
      lWBrowse1 := .F.
	      /*
      aWListB2 := aSort( aWListB2, , , { |x, y| x[3] < y[3] } )
      @ 031, 004 LISTBOX oWListB2 Fields HEADER "Flag", ; // 1
      "  Produto", ; // 2
      "Descrição", ; // 3
      "Uni", ; // 4
      " Preço Venda", ; // 5
      " Est.Atual", ; // 6
      "Data Compra"; // 7
      SIZE 525, 195 OF oDlgProd FONT oFont2 ON CHANGE fMudaLinha() PIXEL ColSizes 100, 100, 230, 100, 100, 100, 100, 30, 30
      */
	      BROWSE() // ABRIU NORMAL E UM DIALOGO GIGANTESTECO.
	   ENDIF
	   /*
   oWListB2:SetArray( aWListB2 )
   oWListB2:bLine := {|| { ;
      aWListB2[oWListB2:nAt,1], ;
      aWListB2[oWListB2:nAt,2], ;
      aWListB2[oWListB2:nAt,3], ;
      aWListB2[oWListB2:nAt,4], ;
      aWListB2[oWListB2:nAt,5], ;
      aWListB2[oWListB2:nAt,6], ;
      aWListB2[oWListB2:nAt,7] } }
	   oWListB2:nClrBackHead  := CLR_LGREEN  // Cor do Fundo do Cabecalho
   oWListB2:nClrText      := CLR_BLACK   // Cor do Fundo as letras
   oWListB2:nClrBackFocus := CLR_WHITE   // Cor do Cursor Em Cima do Ötem
   oWListB2:nClrForeFocus := CLR_HRED    // Cor da letra da barra ativa
   oWListB2:nClrForeHead  := CLR_BLACK   // Cor nos Headers - Cabecalhos
  
   oWListB2:nColAct       := 2           // Onde o Cursor Vai Iniciar na coluna
   oWListB2:nLineStyle    := 3           // Estilo das linhas nos dados da Browse
   oWListB2:lCellStyle    := .T.         // Somente pinta a c‚lula em que o cursor esta no momento
   // Justifica o Cabe‡alho: .F. = Esquerda .T. = Centro
   oWListB2:aJustify := { .T. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , ;
      .F. , .F. , .F. }
   oWListB2:lMChange      := .F.         // Desabilita Mousemove - Movimentos do Mouse Congelam.
   oWListB2:SetFocus()                   // Refocus on The Browse - Ativa o Foco na ListBox(Browse)
   oWListB2:Refresh()                    // Estabiliza o Browse/Listbox - Refresca os Dados.
   // Pinta os Dados Novamente
   */
	   //oWListB2:bLDblClick := {|| aWListB2[oWListB2:nAt,1] := !aWListB2[oWListB2:nAt,1],oWListB2:DrawSelect()}
	   //oWListB2:bKeyDown   := {|nKey| iif(nKey=K_ENTER,EditBrowse(,,oWListB2), )}
   //oWListB2:bLDblClick := {|nRow,nCol| EditBrowse(nRow,nCol,oWListB2) }
	RETURN NIL
	//*************************************************************************
//* Função chamada quando muda de linha no Browser
//*************************************************************************
	STATIC FUNCTION fMudaLinha()
	//**************************
	//cMultiGe1 := ''//Posicione("SZE",1,xFilial("SZE")+aWListB2[oWListB2:nAt,2],"ZE_OCORRE")
//oMultiGe1:Refresh()
	RETURN NIL
	//*************************************************************************
//* Função que exibe a janela de legenda
//*************************************************************************
	STATIC FUNCTION fLegenda()
	//**************************
	//BrwLegenda("Legenda","Estoque de Produtos",aLegenda )
	RETURN( .T. )
	//*************************************************************************
//* Posiciona no registro pesquisado
//*************************************************************************
	STATIC FUNCTION fPesquisa()
	//**************************
	   IF allTrim( nComboBo1 ) == "DESC. ESPECIFICA"
      fWListB2()
      aWListB2 := aSort( aWListB2, , , { |x, y| x[3] < y[3] } )
      oWListB2:nAt := aScan( aWListB2, {|x| allTrim( SubStr(x[3],1,Len(allTrim(cGet1 ) ) ) ) == allTrim( cGet1 ) } )
   ELSEIF allTrim( nComboBo1 ) == "COD. PRODUTO"
      fWListB2()
      aWListB2 := aSort( aWListB2, , , { |x, y| x[2] < y[2] } )
      oWListB2:nAt := aScan( aWListB2, {|x| allTrim( x[2] ) == allTrim( cGet1 ) } )
   ELSEIF allTrim( nComboBo1 ) == "COD. REFER. FORNECEDOR"
      fWListB2()
      aWListB2 := aSort( aWListB2, , , { |x, y| x[11] < y[11] } )
      oWListB2:nAt := aScan( aWListB2, {|x| allTrim( x[11] ) == allTrim( cGet1 ) } )
   ELSEIF allTrim( nComboBo1 ) == "PRODUTOS EM PROMOÇÃO"
      fWListB2()
      aWListB2 := aSort( aWListB2, , , { |x, y| x[13] > y[13] } )
      oWListB2:nAt := aScan( aWListB2, {|x| allTrim( x[13] ) <> " " } )
   ELSEIF allTrim( nComboBo1 ) == "FILTRO DESCRIÇÃO"
      fWListB3()
      oWListB2:nAt := 1//aScan(aWListB2, {|x| allTrim(x[13]) <> " "})
   ENDIF
	   IF oWListB2:nAt == 0
      Alert( "Produto não encontrado!" )
      oWListB2:nAt := 1
   ENDIF
   oWListB2:Refresh()
	//fMudaLinha()
	RETURN NIL
	//*************************************************************************
//* Retorna a Flag de acordo a regra da legenda
//*************************************************************************
	STATIC FUNCTION fGetFlag( pQATU, pRESERVA, pCAMPAN )
	//**************************
	   RETURN ( oFlagVermelho )
	   IF pQATU < 0  // se o estoque atual for negativo
      RETURN oFlagVermelho
   ELSEIF pQATU == 0 // se o estoque for zero
      RETURN oFlagLaranja
   ELSEIF pQATU > 0 .AND. pQATU == pRESERVA // se o estoque for positivo mas estiver completamente reservado
      RETURN oFlagAmarelo
   ELSEIF pCAMPAN <> ' ' // Produto em campanha
      RETURN oFlagPreto
   ELSE
      RETURN oFlagVerde
   ENDIF
	RETURN NIL
	//*************************************************************************
//* Função chamada no duplo clique no item do Browser
//*************************************************************************
	STATIC FUNCTION fDplClick()
	//**************************
   IF allTrim( nComboBo1 ) == "FILTRO DESCRIÇÃO"
      dbSelectArea( "TB_PEC" )
      dbSetOrder( 1 )
      IF dbSeek( aWListB3[oWListB2:nAt,2] )
         lRet := .T.
      ELSE
         Alert( "Produto não encontrado!" )
      ENDIF
   ELSE
      dbSelectArea( "TB_PEC" )
      dbSetOrder( 1 )
      IF dbSeek( aWListB2[oWListB2:nAt,2] )
         lRet := .T.
      ELSE
         Alert( "Produto não encontrado!" )
      ENDIF
   ENDIF
   oDlgProd:End()
	RETURN NIL
	//*************************************************************************
//* Exibe a tela da observação
//*************************************************************************
	//   User FUNCTION fTelaObs()  //???? OI? QUME E USER?
	FUNCTION fTelaObs()
	//**************************
	   LOCAL oMultiObs
   LOCAL cMultiObs := ''//Posicione("SZE",1,xFilial("SZE")+aWListB2[oWListB2:nAt,2],"ZE_ORCORRE")
   LOCAL oSayObs
   LOCAL oSButton1
   STATIC oDlg
	   DEFINE DIALOG oDlg TITLE "Observação do Produto" FROM 000, 000  TO 130, 400 COLORS 0, 16777215 PIXEL
	   @ 003, 015 GET oMultiObs VAR cMultiObs OF oDlg MULTILINE SIZE 174, 048 COLORS 0, 16777215 HSCROLL PIXEL
   @ 003, 002 SAY oSayObs PROMPT "Obs:" SIZE 013, 009 OF oDlg COLORS 0, 16777215 PIXEL
   @ 053, 148 BUTTON oButton1 PROMPT "Gravar" SIZE 040, 013 OF oDlg ACTION {|| fGravaObs( cMultiObs ), oDlg:End() }PIXEL
	   ACTIVATE DIALOG oDlg CENTERED
	RETURN NIL
	//*************************************************************************
//* Grava a observação digitada na tabela
//*************************************************************************
	STATIC FUNCTION fGravaObs( cObs )
	//**************************
	RETURN NIL
	//*************************************************************************
//* Abre tela de Pedidos de venda
//*************************************************************************
	STATIC FUNCTION fPedVenda()
	//**************************
	   cProdAtu  := aWListB2[oWListB2:nAt,2]
   cDescAtu := aWListB2[oWListB2:nAt,3]
//Execblock("AFATP03")
	RETURN NIL
	//*************************************************************************
//* Abre tela de Pedidos de compra
//*************************************************************************
	STATIC FUNCTION fPedCompr()
	//**************************
	   cProdAtu  := aWListB2[oWListB2:nAt,2]
   cDescAtu := aWListB2[oWListB2:nAt,3]
//Execblock("AFATP04")
	RETURN NIL
	//*************************************************************************
//* Abre tela de  Produtos de producao
//*************************************************************************
	STATIC FUNCTION fPedProodu()
	//**************************
	   cProdAtu  := aWListB2[oWListB2:nAt,2]
   cDescAtu := aWListB2[oWListB2:nAt,3]
//Execblock("AFATP05",.F.,.F.,{cProdAtu} )
	STATIC FUNCTION FAbrir()
/*
Local cCodPict := Posicione("SB1",1,xFilial("SB1")+aWListB2[oWListB2:nAt,2],"B1_ZIMAGE")
Local cAuxPict := alltrim(cCodPict)+".jpg"
Local cUrl := "http://images.ddns.net/"+cAuxPict
//ShellExecute( "Open", cUrl, "", "C:\", 1 )
*/
	RETURN NIL
	STATIC FUNCTION FFicha()
	   LOCAL cNomArq := AllTrim( aWListB2[oWListB2:nAt,2] ) + ".JPG" //1101510399 - E:\Protheus12_prod\Protheus_Data\system\anexos\ficha_tecnica
   LOCAL cUrl := "\\192.168.1.211\anexos\ficha_tecnica\"
	   ShellExecute( "Open", cUrl + cNomArq, " /k dir", "C:\", 1 )
	RETURN NIL
	//*************************************************************************
//* Função que desenha o browser com os itens dos pedidos de venda a faturar
//*************************************************************************
	STATIC FUNCTION fWListB3()
	//**************************
	   LOCAL oOk := LoadBitmap( GetResources(), "LBOK" )
   LOCAL oNo := LoadBitmap( GetResources(), "LBNO" )
   LOCAL cGet1Aux  := cGet1
   LOCAL nPosX     := 0
   LOCAL lSair     := .T.
   WHILE lSair
      nPosX := At ( "+", cGet1Aux )
      IF !Empty( nPosX )
         cQuery1 += " AND B1_DESC LIKE '%" + AllTrim( SubStr( cGet1Aux,1,nPosX - 1 ) ) + "%'"
         cGet1Aux := Alltrim( substr( cGet1Aux,nPosX + 1,Len(AllTrim(cGet1Aux ) ) ) )
      ELSE
         cQuery1 += " AND B1_DESC LIKE '%" + AllTrim( SubStr( cGet1Aux,1,Len(AllTrim(cGet1Aux ) ) ) ) + "%'"
         lSair     := .F.
      Endif 
   ENDDO
	   aWListB3 := {}
   dbSelectArea( cAliasQry )
   DbGotop()
   IF !EOF() .AND. !BOF()
      WHILE !( cAliasQry )->( Eof() )
         Aadd( aWListB3, { ;
            fGetFlag( ( cAliasQry )->B2_QATU, ( cAliasQry )->B2_RESERVA, ( cAliasQry )->B1_CAMPAN );            //  1
         , ( cAliasQry )->B1_COD; // 2 - Codigo do Produto
         , ( cAliasQry )->B1_ESPECIF; // 3 - Descrição específica do produto
         , ( cAliasQry )->B1_UM; //     4 - Unidade
         , ( cAliasQry )->B2_LOCAL; // 5 - Armazem
         , Transform( ( cAliasQry )->B1_PRV1, "@E 999,999,999.99" ); //  6 - Preço de venda
         , Transform( ( cAliasQry )->B2_QATU, "@E 999,999,999.99" ); // 7- Estoque atual
         , Transform( ( cAliasQry )->B2_RESERVA, "@E 999,999,999.99" ); // 8 - Estoque reservado
         , Transform( ( cAliasQry )->B2_QTDDISP, "@E 999,999,999.99" );// 9 - Quantidade Disponivel: [atual - reservado]
         , Transform( ( cAliasQry )->QPEDVEN + ( cAliasQry )->B2_QEMP, "@E 999,999,999.99" ); // 10 - Pedido sem reserva (verificar campo)
         , Transform( ( cAliasQry )->B2_SALPEDI, "@E 999,999,999.99" ); // 11 - Total em pedidos de compra (abertos + resíduos)
         , SUBSTR( ( cAliasQry )->B1_DTCONF, 7, 2 ) + '/' + SUBSTR( ( cAliasQry )->B1_DTCONF, 5, 2 ) + '/' + SUBSTR( ( cAliasQry )->B1_DTCONF, 1, 4 ); // 12 Produto em campanha
         , ( cAliasQry )->B1_REFFOR; // 13
         , ( cAliasQry )->B1_CAMPAN } ) //14 Data de Inventario
         ( cAliasQry )->( dbSkip() )
      ENDDO
      ( cAliasQry )->( dbCloseArea() )
	      IF Len( aWListB3 ) == 0
         Aadd( aWListB3, { oFlagAzul, "", "", "", "", "", "", "", "", "", "", "", "", "", "" } )
      ENDIF
   Endif 
   IF lWBrowse1
      lWBrowse1 := .F.
      aWListB3 := aSort( aWListB3, , , { |x, y| x[3] < y[3] } )
      @ 031, 004 LISTBOX oWListB2 Fields HEADER "Flag", ; // 1
      "  Produto", ; // 2
      "Descrição Específica", ; // 3
      "Uni", ; // 4
      "Arm.", ; // 5
      " Preço", ; // 6
      " Est.Atual", ; // 7
      "Reserv.", ; // 8
      "Disp.", ; // 9
      "Qtd.Empenho", ; // 10
      "Tot.Compra"; // 11
      SIZE 525, 195 OF oDlgProd FONT oFont2 ON CHANGE fMudaLinha() PIXEL ColSizes 20, 34, 230, 15, 15, 30, 30, 30, 30, 30, 30, 30
   ENDIF
	   oWListB2:SetArray( aWListB3 )
   oWListB2:bLine := {|| { ;
      aWListB3[oWListB2:nAt,1], ;
      aWListB3[oWListB2:nAt,2], ;
      aWListB3[oWListB2:nAt,3], ;
      aWListB3[oWListB2:nAt,4], ;
      aWListB3[oWListB2:nAt,5], ;
      aWListB3[oWListB2:nAt,6], ;
      aWListB3[oWListB2:nAt,7], ;
      aWListB3[oWListB2:nAt,8], ;
      aWListB3[oWListB2:nAt,9], ;
      aWListB3[oWListB2:nAt,10], ;
      aWListB3[oWListB2:nAt,11], ;
      aWListB3[oWListB2:nAt,13], ;
      aWListB3[oWListB2:nAt,14];
      } }
//oWListB2:bLDblClick := {|| fDplClick(),oWListB2:DrawSelect()}
	   oWListB2:bKeyDown   := {|nKey| iif( nKey = K_ENTER, EditBrowse( ,,oWListB2 ), ) }
   oWListB2:bLDblClick := {|nRow, nCol| EditBrowse( nRow, nCol, oWListB2 ) }
  
RETURN NIL
	/////SAIR
	FUNCTION JOSEMain()
	   LOCAL oBrush , ;
      oBar   , ;
      oIcon  , ;
      oBrowse, oHand
	//StartMonitor()
	    
	   CursorWait()
	   dbSelectArea( "TB_PEC" )
   dbSetOrder( 1 )
	
   DEFINE BRUSH oBrush STYLE TILED
	   DEFINE ICON oIcon RESOURCE "FIVEREP"
	   DEFINE WINDOW oWnd FROM 0, 0 TO 24, 78             ;
      TITLE "FiveWin Report Engine DEMO"            ;
      MENU  BuildMenu()                             ;
      BORDER NONE  NOZOOM                           ;
      ICON oIcon                                    ;
      BRUSH oBrush
	   DEFINE CURSOR oHand HAND
	   DEFINE BUTTONBAR oBar SIZE 33, 33 OF oWnd 2007
	   DEFINE BUTTON RESOURCE "EXIT" OF oBar ACTION oWnd:End() ;
      MESSAGE "Exit from DEMO" TOOLTIP "Exit" NOBORDER
	   DEFINE BUTTON RESOURCE "INFO" OF oBar                 ;
      MESSAGE "About..."                               ;
      ACTION MsgAbout( "FiveWin Report Engine DEMO", ;
      OemtoAnsi( "Developed by FiveTech" ) ) ;
      TOOLTIP "Info" NOBORDER
	   DEFINE BUTTON RESOURCE "PREVIEW" OF oBar GROUP        ;
      MESSAGE "Preview the current Report"             ;
      ACTION Report() TOOLTIP "Preview" NOBORDER
	   DEFINE BUTTON RESOURCE "PRG" OF oBar             ;
      MESSAGE "Show source code from the current Report"   ;
      ACTION Source() TOOLTIP "Source" NOBORDER
	   DEFINE BUTTON RESOURCE "HELP" OF oBar             ;
      MESSAGE "Show some comments from the current Report"   ;
      ACTION Comment() TOOLTIP "Help" NOBORDER
	   AEval( oBar:aControls, { | o | o:oCursor := oHand } )
	   SET MESSAGE OF oWnd TO ;
      OemToAnsi( "Designed and developed by FiveTech" ) ;
      CENTERED 2007
	   @ 3.3, 2 LISTBOX oBrowse                ;
      FIELDS TB_PEC->CODPECAS , ;
      TB_PEC->DESCRPECAS    , ;
      Transform( TB_PEC->PRECOVENDA, "@E 999,9999,999.99" )        , ;
      Transform( TB_PEC->FISICO, "@E 999,9999,999.99" )        , ;
      TB_PEC->DATAULTCOP                       ;
      HEADERS "Codigo"                , ;
      "Descricao"          , ;
      "Quantidade"          , ;
      "Data Ult. compras"                      ;
      SIZE 592, 258                    ;
      FIELDSIZES 45, 110, 410, 1         ;
      OF oWnd
	   oBrowse:bKeyDown   := {|nKey| iif( nKey = K_ENTER, EditBrowse( ,,oBrowse ), ) }
   oBrowse:bLDblClick := {|nRow, nCol| EditBrowse( nRow, nCol, oBrowse ) }
	   WndCenter( oWnd:hWnd )
	   CursorArrow()
	   ACTIVATE WINDOW oWnd ;
      VALID  MsgYesNo( "Exit from FiveWin Report DEMO?", "Select" ) ;
	
      //EndMonitor()
	RETURN ( NIL )
	//----------------------------------------------------------------------------//
	STATIC FUNCTION BuildMenu()
	   LOCAL oMenu
	   MENU oMenu
	   MENUITEM "&File"
	   MENU
	   MENUITEM "&Exit..."  ;
      MESSAGE "Exit from FiveWin Report DEMO" ;
      ACTION oWnd:End()
	   SEPARATOR
	   MENUITEM "&About..." ;
      MESSAGE "About FiveWin Reports" ;
      ACTION ShellAbout( "FiveWin Report Engine", ;
      OemtoAnsi( "Developed by FiveTech" ), ;
      oWnd:oIcon:hIcon )
   ENDMENU
	   MENUITEM "&Report"
	   MENU
	   MENUITEM "&Preview"      ;
      ACTION Report()     ;
      MESSAGE "Preview current Report"
	   MENUITEM "&Source" ;
      ACTION Source()     ;
      MESSAGE "Show source code from current Report"
	   MENUITEM "&Comment" ;
      ACTION Comment()     ;
      MESSAGE "Show some comments from current Report"
	   ENDMENU
	   ENDMENU
	RETURN oMenu
	//----------------------------------------------------------------------------//
	STATIC FUNCTION EditBrowse( nRow, nCol, oBrowse )
	   LOCAL nColPos  := 0 , ;
      nColInit := 0 , ;
      nColGet  := 0
	   LOCAL xVar
	   IF nCol != NIL
      nColGet := AScan( oBrowse:GetColSizes(), ;
         { | nColumn | nColPos += nColumn, ;
         nCol <= nColPos }, oBrowse:nColPos )
   ENDIF
	   IF nColGet == 0
      nColGet := oBrowse:nColPos
   ENDIF
	   xVar := RepDemo->( FieldGet( nColGet ) )
	   oBrowse:lEditCol( nColGet, @xVar, "@K" )
	   IF xVar != RepDemo->( FieldGet( nColGet ) )
      Repdemo->( FieldPut( nColGet,xVar ) )
      oBrowse:DrawSelect()
   ENDIF
	RETURN NIL
	//----------------------------------------------------------------------------//
	STATIC FUNCTION Comment()
	   LOCAL oDlg, oGet
	   LOCAL cComment := Repdemo->Comments
	   DEFINE DIALOG oDlg RESOURCE "COMMENTS"
	   oDlg:cCaption := "Comments [" + trim( Repdemo->Prg ) + "]"
	   REDEFINE GET oGet VAR cComment ID 102 MEMO OF oDlg
	   REDEFINE BUTTON ID 101 OF oDlg ACTION oDlg:End()
	   ACTIVATE DIALOG oDlg CENTERED
	   IF !( cComment == Repdemo->Comments )
      REPLACE Repdemo->Comments WITH cComment
   ENDIF
	RETURN NIL
	//----------------------------------------------------------------------------//
	STATIC FUNCTION Source()
	   LOCAL oDlg, oGet
	   LOCAL cSource := MemoRead( Repdemo->Prg )
	   DEFINE DIALOG oDlg RESOURCE "SOURCE"
	   oDlg:cCaption := "Source [" + trim( Repdemo->Prg ) + "]"
	   REDEFINE GET oGet VAR cSource ID 102 MEMO OF oDlg
	   REDEFINE BUTTON ID 101 OF oDlg ACTION oDlg:End()
	   ACTIVATE DIALOG oDlg CENTERED
	   RETURN NIL
	//----------------------------------------------------------------------------//
	STATIC FUNCTION Report()
	   LOCAL cMacReport :=  Trim( SubStr( Repdemo->prg,;
      1, ;
      RAt( ".", Repdemo->prg ) - 1 ) ) + "()"
	   IF cMacReport = "REP"
      Eval( &( "{||" + cMacReport + "}" ) )
   ELSE
      MsgBeep()
   ENDIF
	   SELECT REPDEMO
	   RETURN NIL
	PROCEDURE AppSys   // XBase++ requirement
	RETURN NIL
	//// INICIO
//----------------------------------------------------------------------------//
	FUNCTION JOMain()
	   LOCAL oBar
	   dbSelectArea( "TB_PEC" )
   dbSetOrder( 1 )
   DEFINE WINDOW oWnd TITLE "Reporting tools" MDI ;
      MENU FBuildMenu() COLOR "N/W"
   DEFINE BUTTONBAR oBar OF oWnd SIZE 60, 60 2007
   DEFINE BUTTON OF oBar ACTION  BrwClients()  ;
      FILENAME "..\bitmaps\attach.bmp" PROMPT "&Clients..."
   DEFINE BUTTON OF oBar ACTION MsgInfo( "Click" ) ;
      FILENAME "..\bitmaps\calendar.bmp" PROMPT "Calendar"
   DEFINE BUTTON OF oBar ACTION  BrwClients()   ;
      FILENAME "..\bitmaps\people2.bmp" PROMPT "Clients"
   DEFINE BUTTON OF oBar ACTION MsgInfo( "Click" )
   SET MESSAGE OF oWnd TO "Testing the FiveWin Report Class" CENTERED
   ACTIVATE WINDOW oWnd ;
      VALID MsgYesNo( "Do you want to end?" )
	   RETURN nil
	//----------------------------------------------------------------------------//
	FUNCTION FBuildMenu()
	   LOCAL oMenu
	   MENU oMenu
   MENUITEM "&DataBases"
   MENU
   MENUITEM "&Clients..." ACTION  BrwClients() ;
      MESSAGE "Clients management"
   MENUITEM "&Report..." ACTION GenReport()
   SEPARATOR
   MENUITEM "&End" ACTION oWnd:End() ;
      MESSAGE "End this test"
   ENDMENU
   oMenu:AddMdi()              // Add standard MDI menu options
   ENDMENU
	   RETURN oMenu
	//----------------------------------------------------------------------------//
	FUNCTION BrwClients()
	   LOCAL oLbx, oIco, oBar
	   IF oClients != nil
      RETURN nil
   ENDIF
   DEFINE ICON oIco FILENAME "..\icons\customer.ico"
   DEFINE WINDOW oClients TITLE "Clients management" ;
      MDICHILD ICON oIco
   DEFINE BUTTONBAR oBar OF oClients
   DEFINE BUTTON OF oBar ACTION ShowClient()
   @ 2, 0 LISTBOX oLbx FIELDS OF oClients ;
      SIZE 500, 500 ;
      ON CHANGE ChangeClient()
   oClients:SetControl( oLbx )
//-----------------------------------------------------------------------//
   oLbx:nClrBackHead  := CLR_LGREEN  // Cor do Fundo do Cabecalho
   oLbx:nClrText      := CLR_BLACK   // Cor do Fundo as letras
   oLbx:nClrBackFocus := CLR_WHITE   // Cor do Cursor Em Cima do Ötem
   oLbx:nClrForeFocus := CLR_HRED    // Cor da letra da barra ativa
   oLbx:nClrForeHead  := CLR_BLACK   // Cor nos Headers - Cabecalhos
// Cor no Pano de Fundo da Browse()
   oLbx:nClrPane      := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) % 2 == 0, ;
      CLR_WHITE, CLR_WHITE ) }
   oLbx:nColAct       := 4           // Onde o Cursor Vai Iniciar na coluna
   oLbx:nLineStyle    := 3           // Estilo das linhas nos dados da Browse
   oLbx:lCellStyle    := .T.         // Somente pinta a c‚lula em que o cursor esta no momento
// Justifica o Cabe‡alho: .F. = Esquerda .T. = Centro
   oLbx:aJustify := { .T. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , .F. , ;
      .F. , .F. , .F. }
   oLbx:lMChange      := .F.         // Desabilita Mousemove - Movimentos do Mouse Congelam.
   oLbx:SetFocus()                   // Refocus on The Browse - Ativa o Foco na ListBox(Browse)
   oLbx:Refresh()                    // Estabiliza o Browse/Listbox - Refresca os Dados.
// Pinta os Dados Novamente
//-----------------------------------------------------------------------//
   ACTIVATE WINDOW oClients ;
      VALID( oClients := nil, .T. )        // We destroy the object
	RETURN nil
	//----------------------------------------------------------------------------//
	FUNCTION GenReport()
	   LOCAL oWnd, oIco
	   DEFINE ICON oIco FILENAME "..\icons\print.ico"
   DEFINE WINDOW oWnd MDICHILD TITLE "Clients report" ;
      VSCROLL HSCROLL ICON oIco
   ACTIVATE WINDOW oWnd
	RETURN nil
	//----------------------------------------------------------------------------//
	FUNCTION ShowClient()
	   LOCAL oIco
	   IF oClient != nil
      RETURN nil
   ENDIF
   DEFINE ICON oIco FILENAME "..\icons\Person.ico"
   DEFINE DIALOG oClient RESOURCE "Client" ;
      ICON oIco
   REDEFINE SAY ID 3 OF oClient   // To get the proper color
   REDEFINE SAY ID 4 OF oClient
   REDEFINE SAY ID 5 OF oClient
   REDEFINE GET oName VAR cName ID ID_NAME OF oClient
   REDEFINE BUTTON ID ID_NEXT OF oClient ACTION GoNext()
   SELECT Sales     // We select Sales to properly initialize the Browse
   REDEFINE LISTBOX FIELDS ID ID_SALES OF oClient
   ACTIVATE DIALOG oClient CENTERED NOWAIT ;
      VALID ( oClient := nil, .T. )           // Destroy the object
   SELECT Clients
	RETURN nil
	//----------------------------------------------------------------------------//
	FUNCTION ChangeClient()
	   IF oClient != nil
      cName = AllTrim( Clients->Last ) + ", " + Clients->First
      oName:Refresh()
   ENDIF
	RETURN nil
	//----------------------------------------------------------------------------//
	FUNCTION GoNext()
	   IF oClients != nil
      oClients:oControl:GoDown()
   ELSE
      SKIP
      IF EoF()
         GO BOTTOM
      ENDIF
   ENDIF
   ChangeClient()
	RETURN nil
	// FIM


Link to comment
Share on other sites

Bom dia!  Kapiaba,

Esta rotina e para ser usada com pesquisa de produto para venda, pesquisa por código , descrição , retornando o código em uma célula de pedido de venda, por isso usei o ListBox.

Você não tem um programa que faça isso para ter um modelo, quando você usa o BROWSE() não tem como definir os campos os títulos a pesquisa.

Muito obrigado pela ajuda.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...