soaresja1 Posted April 26, 2019 Report Share Posted April 26, 2019 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 ) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 26, 2019 Report Share Posted April 26, 2019 Mostrr a linha que quebra o programa no ERRRO.LOG ou a FUNCTION completa, está usando a WBROWSE.PRG desta versão mesmo? Quote Link to comment Share on other sites More sharing options...
soaresja1 Posted April 26, 2019 Author Report Share Posted April 26, 2019 Kapiaba, acho que tem algo referente as versão . Em anexo o erro e o programa, tem como você executar este programa PEDP001 , erro.log e o arquivo dbf Obrigado. PEDP001.prg error.log ARQPEC.dbf ARQPEC.cdx Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 26, 2019 Report Share Posted April 26, 2019 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 Quote Link to comment Share on other sites More sharing options...
soaresja1 Posted April 27, 2019 Author Report Share Posted April 27, 2019 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 29, 2019 Report Share Posted April 29, 2019 xBROWSE() é o bixo. http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27493&p=207072&hilit=BUSQUEDA+incremental#p207072 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=34257&p=203057&hilit=BUSQUEDA+incremental#p203057 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=33538&p=197918&hilit=busqueda+incremental#p197918 Abs Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.