mkyx
Membros-
Posts
892 -
Joined
-
Last visited
-
Days Won
15
Everything posted by mkyx
-
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
-
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.
-
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)}
-
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 . .
-
Kapiaba, não funcionou, função inexistente.
-
Nos meus testes IsIconic( oWnd:hWnd ) retornou: False e IsZoomed( oWnd:hWnd ) retornou: True
-
On Init RoundRecta( oDlg:hWnd, 20 ) esse comando, você coloca em todas as janelas que você desejar os cantos arredondados.
-
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)) *
-
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.
-
Pessoal, será que tem jeito de colocar cantos arredondados no xBrowse?
-
sem o errsysw.prg funcionou, deu erro e saiu do programa. com o errsysw.prg travou.
-
coloquei antes do main() e o sistema na rodou porque executou primeiro essa procedure. e não uso compilador harbour, uso o xharbour.
-
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.
-
http://sped.rfb.gov.br/pasta/show/1573 veja se ajuda, aí tudo sobre edf sped livros fiscais
-
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?
-
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
-
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.
-
pode usar um app no celular, para atualizar o estoque, ou um leitor de codigo de barra sem fio.
-
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.
-
Impressora fiscal, já era, é coisa do passado, muda para sat, é 1000 a zero.
-
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.
-
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.
-
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)
-
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.
-
Olha essa opção também https://android-apk.org/com.recarga.recarga/46017775-recarga-celular-pagar-contas-e-bilhete-unico/