Jump to content
Fivewin Brasil

mkyx

Membros
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by mkyx

  1. Resolvido, assim:

    Coloquei um SYSWAIT(0.1) dentro do método PostEdit do xbrowse:


    METHOD PostEdit( xValue, lButton ) CLASS TXBrwColumn

       local lGoNext := .f.,X

       If ::lOnPostEdit
          return nil
       Endif

       ::lOnPostEdit := .t.

       DEFAULT lButton := .f.


       do case
          case ::nEditType == EDIT_GET
               if ::oEditGet != nil
                  SYSWAIT(0.1)     // <----------------só com essa pausa que funcionou. OBS: pra trabalhar com bancos de dados está normal, não precisa do syswait
                  X:=Eval( ::bOnPostEdit, Self, Eval( ::oEditGet:bSetGet ), ::oEditGet:nLastKey )
                  lGoNext := ( ::oEditGet:nLastKey == VK_RETURN )
                  ::oEditGet:End()
                  ::oEditGet := nil
               endif

     

  2. Bom dia, 

    tenho um tabela feito com xbrowse usando array. Eu preciso deixar editável a coluna de quantidade,

    fiz conforme abaixo, mas não grava na tabela as alterações

    Alguém o por quê?

     

    tab_item_1:={{"","","",0,0,0,"",0,0,0,0,"",0,"","",0,0,""}}

     

       oBrw0:=TXBrowse():New( oWnd )
       oBrw0:nTop:=_l0*IF(IMP_CC="@",65,125)/768
       oBrw0:nLeft:=15
       oBrw0:nBottom:=_l0*IF(IMP_CC="@",500,555)/768
       oBrw0:nRight:=if(_c0<=1600,640,950)
       oBrw0:nMarqueeStyle := MARQSTYLE_HIGHLCELL
       oBrw0:setArray(tab_item_1)   
       oBrw0:nColDividerStyle   := 0
       oBrw0:nRowDividerStyle     := 0
       oBrw0:nHeaderLines        := 1   //--> Cabecalho em 2 Linhas.
       oBrw0:lAllowColSwapping   :=.F. // Trocar Colunas
       oBrw0:lAllowRowSizing     := .F.  //--> Nao move as Linhas
       oBrw0:nRowHeight := 25   //--> Altura das Linhas do ListBox.
       oBrw0:lHScroll := .F.
       oBrw0:lVScroll := .F.
       oBrw0:lHeader := .T.
       oBrw0:lFooter := .F.
       oBrw0:lRecordSelector := .F.
       oBrw0:l2007:=.T.
       oBrw0:bClrStd := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,1]="D",{CLR_WHITE,CLR_RED},{CLR_BLUE,CLR_WHITE}) }

       oBrw0:lFooter := .F.
       if _c0<=1600
          oBrw0:oFont := OFNT44
       else
          oBrw0:oFont := OFNT441
       endif
       oBrw0:aCols[1]:cHeader := "?"
       oBrw0:aCols[1]:nWidth := 20  
       oBrw0:aCols[1]:nHeadStrAlign := AL_CENTER
       oBrw0:aCols[1]:nDataStrAlign := AL_CENTER
       
       oBrw0:aCols[2]:cHeader := "CÓDIGO"
       oBrw0:aCols[2]:nWidth := 60
       oBrw0:aCols[2]:nHeadStrAlign := AL_LEFT
       oBrw0:aCols[2]:nDataStrAlign := AL_LEFT
       
       oBrw0:aCols[3]:cHeader := "DESCRIÇÃO"
       oBrw0:aCols[3]:nWidth := 295
       oBrw0:aCols[3]:nHeadStrAlign := AL_LEFT
       oBrw0:aCols[3]:nDataStrAlign := AL_LEFT
       

       Somente essa coluna é editável, coluna 4


       oBrw0:aCols[4]:cHeader := "QUANTID"
       oBrw0:aCols[4]:nWidth := 70  
       oBrw0:aCols[4]:nHeadStrAlign := AL_RIGHT
       oBrw0:aCols[4]:nDataStrAlign := AL_RIGHT
       oBrw0:aCols[4]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,4]>0,IF(INT(TAB_ITEM_1[oBrw0:nArrayAT,4])=TAB_ITEM_1[oBrw0:nArrayAT,4],TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999'),TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999.999')),"") }
       oBrw0:aCols[4]:nEditType  := 1
       oBrw0:aCols[4]:CEDITPICTURE :="@E 999999.999"
       oBrw0:aCols[4]:bOnPostEdit   := {|o,x|FieldPut( tab_item_1[oBrw0:nArrayAT ,4 ] , x) }    // não funciona

       oBrw0:aCols[5]:cHeader := "VALOR"
       oBrw0:aCols[5]:nWidth := 70  
       oBrw0:aCols[5]:nHeadStrAlign := AL_RIGHT
       oBrw0:aCols[5]:nDataStrAlign := AL_RIGHT
       oBrw0:aCols[5]:bStrData := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,5]>0,TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,5] , '@E 999,999.99'),"") }
       
       oBrw0:aCols[6]:cHeader := "TOTAL"
       oBrw0:aCols[6]:nWidth := 100  
       oBrw0:aCols[6]:nHeadStrAlign := AL_RIGHT
       oBrw0:aCols[6]:nDataStrAlign := AL_RIGHT
       oBrw0:aCols[6]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,6]>0, TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,6] , '@E 999,999.99'),"") }
     

       oBrw0:bClrSel := {|| {RGB(0,0,128),RGB(255,255,255)} } // COR SELECIONADA QUANDO SAI DE FOCO

       oBrw0:CreateFromCode()
       oBrw0:bKeydown:={|nkey|_obrw0(nkey,OBRW0:nArrayAt)}
     

     

     

  3. Eu mudei de lugar, a rotina que verifica se o programa já está em execução na memória.

    E por fim deu certo o que eu quero. Aqui no meu computador funcionou, não sei se nos clientes vai funcionar.

    .

    .

    .
    IF ISEXERUNNING("WINCOM.EXE")
       var_sys:="WinCom 4.00.69 - www.adentech.com.br - (12) 98854-8476"
       titj:="Empresário WinCom "+substr(var_sys,8,8)+" - Adentech Automação ::: "+fir_USER   
       
       IF GETACTIVEWINDOW()=0
          hWnd:=FindWindow(0,[titj] )
          IF hWnd # 0
             BringWindowToTop( hWnd )
             ShowWindow(hWnd,3)
             RETURN Nil
          ENDIF      
       ENDIF
    ENDIF
    .

    .

     

     

     

  4. Como faço, para conseguir os cantos arredondados numa dialog

     

    DEFINE DIALOG ODLG FROM 0,0 TO 15,50 STYLE NOR(WS_POPUPWINDOW) COLORS RGB(112,219,219),RGB(112,219,219) TRANSPARENT

     

    .

    .

    ACTIVATE DIALOG ODLG CENTERED NOMODAL On Init RoundRecta( oDlg:hWnd, 20 ) 

    RETURN .T.

    ***
    Function RoundRecta( hWnd, nRound )
    Default nRound := 0
    Return SetWindowRgn(hWnd,CreateRoundRectRgn(GetClientRect(hWnd),nRound,nRound))
    *
     

  5. Boa noite, pessoal,

    Não achei aqui no forum, algo referente por isso resolvi perguntar:

    Qual comando transferir a tela do nosso programa para frente quando na tela estiver aberto várias outras janelas, como google chrome, word, etc.

             BringWindowToTop( hWnd )
             ShowWindow(hWnd,3)
    Esses comandos, só funcionam maximizando, quando a tela estiver minimizada, funciona top.

    Mas, não trazem para frente, tipo BringWindowToFront, testei mas, não existe.

    Desde já agradeço a todos. 

  6. eu uso assim e funciona muito bem, com qualquer sat:

     

    hdllSAT:=LoadLibrary( "SAT.dll" )

     

    N_SESSAO:=INT(NRANDOM(999999)+1)
     

    retorno:= SATConsultar(N_SESSAO)

    ? retorno

     

    return .t.

     

    DLL32 Function SATConsultar(NumeroSessao AS _INT) AS STRING PASCAL FROM "ConsultarSAT" LIB hdllSAT
    DLL32 Function CSO_sat(NumeroSessao AS _INT, codigoDeAtivacao AS STRING) AS STRING PASCAL FROM "ConsultarStatusOperacional" LIB hdllSAT
     

  7. Pessoal, bom dia

    no exemplo, acima do dorneles, com as devidas correções, é possível exibir a página contendo, as informações do xml.

    Abaixo, podemos ver isso, agora só falta os comandos para poder pegar o texto da página, logo após a digitação do recaptcha.

     

     

     

    #include "fivewin.ch"

    FUNCTION MAIN()

    A:=BaixarXml("cole aqui o chave da nfe a ser baixada")

    RETURN .T.


    STATIC FUNCTION BaixarXml(f_cChave)
    ////////////////////////////////////////////////////////////////////////////////
    local oOle, oOleDoc := Array(2)
                            
    Default f_cChave := ""


    MsgWait( "Conectando ao Portal da SEFAZ...", ;
                "Aguarde... ", 2.0 )

    TRY                                                  
        oOle:= CreateObject("InternetExplorer.Application")
        oOle:Visible   := .t. // Apresenta o Browser
        oOle:ToolBar   := .f. // Desativa a barra de ferramentas
        oOle:StatusBar := .F. // Desativa a barra de status
        oOle:MenuBar   := .f. // desativa a barra de menu
       
        oOle:Navigate2("http://www.nfe.fazenda.gov.br/portal/consultaResumo.aspx?tipoConteudo=d09fwabTnLk=")
       
        hWnd:= FindWindow(0,"Windows Internet Explorer")
        BringWindowToTop(hWnd)
        ShowWindow(hWnd, 3)
       
        WHILE oOle:Busy
        syswait(.5)
        END

    CATCH

    END

    TRY
        oOle := oOle:Document()
        oOle:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoResumo",0):Value:= f_cchave
        oOle:All:Item("ctl00$ContentPlaceHolder1$txtCaptcha",0):Focus()
    CATCH
    END
                                  
    oOle:=Nil

    SysRefresh()

    ***

    *** aqui deve entrar a rotina para ler a página com as informações do XML

    ***


    RETURN .T.

     

  8. Bom dia,

    ALguem tem o modulo de restaurante para android?

    um modulo onde se digita o numero da mesa, o garcom seria atraves do numero do celular dele, ou seja, o reconhecimento do garcom seria pelo numero do celular, e por fim, a digitacao do pedido da mesa: 

    codigo e quantidade, e observacao

    Alguem teria algo assim para disponibilizar?

    Favor contatar com precos, pelo e-mail: pardes.mky@hotmail.com

    Obrigado.

     

  9. Boa tarde, pessoal

    Tem como fazer uma inserção no mysql, de uma informação que ainda não esteja cadastrada, num só comando INSERT?

    Exemplo:

       APCODE:="insert into historicos (codigo,descricao,ent_sai) value ('TRANSF-ENT','TRANSFERÊNCIAS-ENTRADAS','E') where not exists (select * from historicos where codigo='TRANSF-ENT');
       OSQL:EXEC(APCODE )   
     

    Uso o sqlrdd, mas o comando acima nem dentro do mysql 5.5 não funciona.

     

  10. Como faço:

             X0:="Consulta via leitor de QR-Code"
             L1:=oPRN:GETTEXTWIDTH(X0,oFNT2)
             POS:=(coluna*80-L1)/2
             oprn:Say(linha,POS,X0,OFNT2)
             linha:=linha+avanca*0.6
             
             objNFeUtil := CreateObject("NFe_Util_2G.util")
             
             Resultado:=0
             msgResultado:=""
             XMLAnsi = objNFeUtil:LeArquivoANSI(cFileXml, @Resultado, msgResultado)
             If Resultado = 7330

                versaoQRCode = "100"
                URL0 = ""        
                msgResultado=""
                cStat = objNFeUtil:geraUrlNFCe(idToken,N_CSC,versaoQRCode,XMLAnsi,@URL0,msgResultado)
                if cstat=8400
                   escala = 5
                   nomeArquivo = N_PASTA+"\QRCode.jpg"
                   msgResultado = ""
                   cStat_1 = objNFeUtil:geraQRCode(URL0,escala,nomeArquivo,msgResultado)
                   if cstat_1=8420
        
                      oBmp := TImage():Define( ,nomeArquivo, oPrn )
                      oPrn:SayImage(LINHA+avanca*0.3,COLUNA*16,oBmp,coluna*48,coluna*48)
                      linha:=linha+avanca*11
          
                      X0:="Protocolo de Autorização:"+N_PROT+"  "+substr(DH_PROT,9,2)+"/"+substr(DH_PROT,6,2)+"/"+substr(DH_PROT,1,4)+" "+substr(DH_PROT,12,8)
                      L1:=oPRN:GETTEXTWIDTH(X0,oFNT2)
                      POS:=(coluna*80-L1)/2
                      oprn:Say(linha,POS,X0,OFNT2)
                      linha:=linha+avanca*0.6
                   else
                      MSGINFO("Erro não foi possível gerar o QR Code:"+chr(13)+cFileXml+chr(13)+"Código do erro: "+alltrim(str(resultado))+chr(13)+msgresultado)
                   endif   
                else
                    MSGINFO("Erro não foi possível gerar o URL:"+chr(13)+cFileXml+chr(13)+"Código do erro: "+alltrim(str(cstat))+chr(13)+msgresultado)
                endif
             ELSE
                MSGINFO("Erro não foi possível ler o xml:"+chr(13)+iif(FILE(cFileXml),".T.",".F.")+" "+cFileXml+chr(13)+"Código do erro: "+alltrim(str(cstat_1))+chr(13)+msgresultado)
             ENDIF
             OPRN:LINE(LINHA,COLUNA,LINHA,COLUNA*80,OPEN)
             linha:=linha+avanca*0.1
             X0:="ADENTech Automação - www.adentech.com.br - (12) 98854-8476"
             L0:=oPRN:GETTEXTWIDTH(X0,oFNT44)
             POS:=(coluna*80-L0)/2
             oprn:Say(linha,POS,X0,OFNT44)
     

×
×
  • Create New...