Jump to content
Fivewin Brasil

mkyx

Membros
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    15

Everything 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. Boa tarde, Já tinha feito dessa maneira aí, indicado pelo aferra, mas, fui tentar de novo, e nada só permite a digitação do número, quando se dá enter, não corrige o campo.
  3. 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)}
  4. 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 . .
  5. Kapiaba, não funcionou, função inexistente.
  6. Nos meus testes IsIconic( oWnd:hWnd ) retornou: False e IsZoomed( oWnd:hWnd ) retornou: True
  7. On Init RoundRecta( oDlg:hWnd, 20 ) esse comando, você coloca em todas as janelas que você desejar os cantos arredondados.
  8. 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)) *
  9. 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.
  10. Pessoal, será que tem jeito de colocar cantos arredondados no xBrowse?
  11. sem o errsysw.prg funcionou, deu erro e saiu do programa. com o errsysw.prg travou.
  12. coloquei antes do main() e o sistema na rodou porque executou primeiro essa procedure. e não uso compilador harbour, uso o xharbour.
  13. Boa tarde, Alguém pode me dizer se tem jeito de tratar os error em tempo de execução para que o programa não páre ou trave? Vocês têm alguma dica? Já tentei errorsys.prg, errsysw.prg e nada. Em ambos os prgs ou trava o pára. Obrigado.
  14. http://sped.rfb.gov.br/pasta/show/1573 veja se ajuda, aí tudo sobre edf sped livros fiscais
  15. Não entendi bem o que tu queres! Seria usar um programa próprio e emitir os boleto da CEF? e depois gerar o arquivo de remessa e enviar para a caixa? ou importar o arquivo texto da CEF e emitir os boletos?
  16. 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
  17. 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.
  18. pode usar um app no celular, para atualizar o estoque, ou um leitor de codigo de barra sem fio.
  19. 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.
  20. Impressora fiscal, já era, é coisa do passado, muda para sat, é 1000 a zero.
  21. Eu não enxerguei a necessidade de converter pdf para jpg ou bmp, só para exibir no preview do fw, vc pode exibir o pdf pelo fw, sem problema nenhum. Explique melhor.
  22. 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.
  23. 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)
  24. Trabalho normalmente, só precisei configurar as tags referentes à nfce, o resto é tudo igual. Quanto à impressão eu montei um relatório normal para tprinter, configurado para o formato de página 256.
  25. Olha essa opção também https://android-apk.org/com.recarga.recarga/46017775-recarga-celular-pagar-contas-e-bilhete-unico/
×
×
  • Create New...