Jump to content
Fivewin Brasil

Ladinilson

Membros
  • Posts

    523
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Ladinilson

  1. Agradeço meu caro mas seria uma rotina dentro da minha ou seja, uma rotina feita em FW. Encontrei esta no fórum internacional mas não compila nem a pau com meus fontes http://forums.fivetechsupport.com/viewtopic.php?f=3&t=28983&p=199318&hilit=ocr#p199318 Esta até para baixar seus fontes nas contribuições e esta como nome "testescancompleto" https://code.google.com/archive/p/fivewin-contributions/downloads
  2. Tenho uma aqui via código mesmo Kapi, veja se serve... #INCLUDE "FiveWin.ch" #include "barcode.ch" #include "TSButton.ch" // Para testar o codigo de barras // http://evandro.net/codigo_barras.html static oWnd, oImage, oImageSm static oprn, xa, xb, ofon2, ofont, ofontn, ofont2 static x_1, y_1, x, y, i, k, aonde, vnossonm, _mod10, _mod11 static f_venc, c_livre, v_docum, datavenc, valor, dv_codb static cod_dig, cod_barra, mano, ika, kra,vEmpr, vCNPJ, vMens1 static vFant, vEnd, vBai, vCid, vUf, vCep, vCeden, vNNum, vCod, JUROS FUNCTION IBOL(cTitle,mano) PRIVATE oPrn, oFont, oFont1, oFont2, oIni, oPrinter, ct , nColP , nLinP , nLinC , Pag, ika,nlBol,nlBarra,contaBol, oFont, oFont1 IF oNumBolE = 0 MSGSTOP("Não existem boletos a imprimir!","Boletos") RETURN nil ENDI _mod10 := '12121212121212121212121212121212121212121212121212121212121212121212121212121212' _mod11 := '98765432987654329876543298765432987654329876543298765432987654329876543298765432' SELECT Filiais vEmpr := Filiais->cedente vCeden := ALLTRIM(Filiais->cod_ced) vAgenc := Filiais->agencia vesp_doc := Filiais->especie_do vesp_moe := Filiais->especie_mo vcarteir := Filiais->carteira vlocalPg := Filiais->localpg vmodbol := Filiais->modbol vMensBol1:= Filiais->MensBol1 vMensBol2:= Filiais->MensBol2 vMensBol3:= Filiais->MensBol3 vMensBol4:= Filiais->MensBol4 vMensBol5:= Filiais->MensBol5 vMensBol6:= Filiais->MensBol6 vMensBol7:= Filiais->MensBol7 vMensBol8:= Filiais->MensBol8 vMensBol9:= Filiais->MensBol9 vMensBol10:= Filiais->MensBol10 printer oprn DOC "Imprime Boletos "+cTitle preview x_1 := oprn:nhorzres() y_1 := oprn:nvertres() xa := oprn:cmtr2pix(1, 2.5) // Deslocamento xb := oprn:cmtr2pix(2, 3.5) // Deslocamento y := (xb[1] - xa[1]) / 10 x := (xb[2] - xa[2]) / 10 DEFINE FONT oFont NAME "COURIER NEW" SIZE 0,-8 BOLD OF oPrn DEFINE FONT oFont1 NAME "COURIER NEW" SIZE 0,-10 OF oPrn BOLD nRowStep = oPrn:nVertRes() / 60 // We want 20 rows nColStep = oPrn:nHorzRes() / 280 // We want 15 cols conta := 1 contaBol := 0 nlBol := 1.1 // --> Boleto do topo //nlBol := .8 // --> Boleto do topo IF vmodbol = 0 nlBol := 3.24 // --> Boleto do topo ENDIF CABBOL() FOR a := 1 TO oNumBolE IF conta > 3 .OR. ( vmodbol = 0 .AND. conta > 1) oprn:endpage() conta := 1 nlBol := 1.1 // --> Boleto do topo //nlBol := .8 // --> Boleto do topo IF vmodbol = 0 nlBol := 3.24 // --> Boleto do topo ENDIF CABBOL() ENDIF SELECT Clientes vDoc := mano[a,1] datavenc := mano[a,2] valor := mano[a,3] vCod := mano[a,4] vNomeCli := mano[a,5] vCpf := mano[a,6] vEndereco:= mano[a,7] vPerimetr:= mano[a,8] vBairro := mano[a,9] vCidade := mano[a,10] vEstado := mano[a,11] vCep := mano[a,12] vParc := mano[a,13] vnossonm := mano[a,14] vdoc_pro := mano[a,15] vcodclbo := mano[a,16] IF AT(vParc,"/") = 0 vDoc := ALLTRIM(vParc)+"/"+ALLTRIM(vDoc) endif IF conta = 1 nlBarra := 1760 IF vmodbol = 0 nlBarra := 4000 ENDIF ELSEIF conta = 2 nlBarra := 3820 ELSEIF conta = 3 nlBarra := 5870 ENDIF ACAO() conta++ nlBol += 8.7 NEXT oprn:endpage() endprint oFont:END() oFont1:END() return(Nil) FUNCTION VERHISTBOL(aHistBol) LOCAL oFont IF LEN(aHistBol) > 0 DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-6 DEFINE CURSOR oCursor RESOURCE 1 DEFINE DIALOG proccli RESOURCE "histbol" TITLE "Boletos Já Gerados neste Intervalo" REDEFINE LISTBOX oBrw FIELDS aHistBol[oBrw:nat,1],aHistBol[oBrw:nat,2],aHistBol[oBrw:nat,3],aHistBol[oBrw:nat,4],aHistBol[oBrw:nat,5],aHistBol[oBrw:nat,6],aHistBol[oBrw:nat,7]; //Dependente->nomedep,Dependente->grau_dep,DTOC(Dependente->datacad); HEADERS 'Código','Cliente','Vencimento','Prc','Valor','Nosso Número','Proc. em' ; FIELDSIZES 60,236,65,24,45,115,65 ; ID 100 OF proccli CURSOR oCursor COLOR nRGB(179,239,255),RGB(0,0,0) UPDATE oBrw:SetArray(aHistBol) oBrw:REFRESH() REDEFINE SBUTTON ID 201 OF proccli PIXELS FONT oFont ; PROMPT "Ok" TEXT POSITION 4 ACTION proccli:END() ACTIVATE DIALOG proccli CENTER ENDIF RETURN (.t.) STATIC FUNCTION CABBOL() LOCAL aNumBol oprn:startpage() DO CASE CASE vmodbol = 0 oPrn:SayBitmap(8,8,fdefa+"\boletoFL.bmp",4410,6190) //,4190,5990) CASE oNumBolE = 1 oPrn:SayBitmap(8,8,fdefa+"\boleto1.bmp",4410,6190) //,4190,5990) CASE oNumBolE = 2 oPrn:SayBitmap(8,8,fdefa+"\boleto2.bmp",4410,6190) //,4190,5990) CASE oNumBolE >= 3 aNumBol := oNumBolE-contaBol DO CASE CASE aNumBol >= 3 oPrn:SayBitmap(8,8,fdefa+"\boleto3.bmp",4410,6190) //,4190,5990) CASE aNumBol = 1 oPrn:SayBitmap(8,8,fdefa+"\boleto1.bmp",4410,6190) //,4190,5990) CASE aNumBol = 2 oPrn:SayBitmap(8,8,fdefa+"\boleto2.bmp",4410,6190) //,4190,5990) CASE vParcelas = 6 oPrn:SayBitmap(8,8,fdefa+"\boleto3.bmp",4410,6190) //,4190,5990) ENDCASE ENDCASE RETURN nil ****************************************************************** STATIC FUNCTION ACAO() ****************************************************************** vnossonm += '-' + mod11("24"+vnossonm) prepara() monta_codigo() ******************************************************************* * Recibo do Sacado * ******************************************************************* IF vmodbol = 0 //oPrn:CmSay( (nlBol-1.1) ,0.0 , "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ",oFont) oPrn:CmSay( (nlBol-0.85) ,06.35 , transform(cod_dig, '@R 99999.99999 99999.999999 99999.999999 9 99999999999999'),oFont1) oPrn:CmSay( (nlBol ) ,00.94, vEmpr,oFont) oPrn:CmSay( (nlBol ) ,08.74 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) oPrn:CmSay( (nlBol ) ,12.11 , vesp_doc,oFont) oPrn:CmSay( (nlBol ) ,14.35 , "14/"+vnossonm,oFont) nlBol+=0.70 oPrn:CmSay( (nlBol ) ,00.94, ALLTRIM(vdoc),oFont) oPrn:CmSay( (nlBol ) ,05.98 , vcpf,oFont) oPrn:CmSay( (nlBol ) ,09.57 , DTOC(datavenc),oFont) oPrn:CmSay( (nlBol ) ,16.00 , TRANSFORM(valor,'@E 999,999.99'),oFont) nlBol+=1.30 oPrn:CmSay( (nlBol ) ,00.94, vNomeCli,oFont) nlBol+=0.60 IF !EMPTY(vMensBol1) oPrn:CmSay( (nlBol ) ,00.94, vMensBol1,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol2) oPrn:CmSay( (nlBol ) ,00.94, vMensBol2,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol3) oPrn:CmSay( (nlBol ) ,00.94, vMensBol3,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol4) oPrn:CmSay( (nlBol ) ,00.94, vMensBol4,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol5) oPrn:CmSay( (nlBol ) ,00.94, vMensBol5,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol6) oPrn:CmSay( (nlBol ) ,00.94, vMensBol6,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol7) oPrn:CmSay( (nlBol ) ,00.94, vMensBol7,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol8) oPrn:CmSay( (nlBol ) ,00.94, vMensBol8,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol9) oPrn:CmSay( (nlBol ) ,00.94, vMensBol9,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol10) oPrn:CmSay( (nlBol ) ,00.94, vMensBol10,oFont) nlBol+=0.20 ENDIF ELSEIF vmodbol = 1 //oPrn:CmSay( (nlBol-1.1) ,0.0 , "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ",oFont) oPrn:CmSay( (nlBol+1.2) ,0.7 , vdoc,oFont) oPrn:CmSay( (nlBol+1.8) ,0.7 , DTOC(datavenc),oFont) oPrn:CmSay( (nlBol+2.4) ,0.7 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) oPrn:CmSay( (nlBol+3.0) ,0.7 , "24/"+vnossonm,oFont) oPrn:CmSay( (nlBol+3.7) ,0.7 , TRANSFORM(valor,'@E 999,999.99'),oFont) oPrn:CmSay( (nlBol+7.4) ,0.7 , LEFT(vNomeCli,22),oFont) ENDIF ******************************************************************* * Ficha de compensação * ******************************************************************* IF vmodbol = 0 nlBol:=9.88 oPrn:CmSay( (nlBol-0.85),6.35 , transform(cod_dig, '@R 99999.99999 99999.999999 99999.999999 9 99999999999999'),oFont1) oPrn:CmSay( (nlBol ),00.94 , vlocalPg,oFont) oPrn:CmSay( (nlBol ),16.00 , DTOC(datavenc),oFont) nlBol+=0.64 oPrn:CmSay( (nlBol ),00.94, vEmpr,oFont) oPrn:CmSay( (nlBol ),15.50 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) nlBol+=0.70 oPrn:CmSay( (nlBol ),00.94 , DTOC(DATE()),oFont) oPrn:CmSay( (nlBol ),03.99 , ALLTRIM(vdoc),oFont) oPrn:CmSay( (nlBol ),08.10 , vesp_doc,oFont) oPrn:CmSay( (nlBol ),09.85 , "NÃO",oFont) oPrn:CmSay( (nlBol ),10.87 , DTOC(vdoc_pro),oFont) oPrn:CmSay( (nlBol ),14.30 , "24/"+vnossonm,oFont) nlBol+=0.70 oPrn:CmSay( (nlBol ),03.99 , vcarteir,oFont) oPrn:CmSay( (nlBol ),06.29 , vesp_moe,oFont) oPrn:CmSay( (nlBol ),16.00 , TRANSFORM(valor,'@E 999,999.99'),oFont) nlBol+=0.60 IF !EMPTY(vMensBol1) oPrn:CmSay( (nlBol ) ,00.94, vMensBol1,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol2) oPrn:CmSay( (nlBol ) ,00.94, vMensBol2,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol3) oPrn:CmSay( (nlBol ) ,00.94, vMensBol3,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol4) oPrn:CmSay( (nlBol ) ,00.94, vMensBol4,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol5) oPrn:CmSay( (nlBol ) ,00.94, vMensBol5,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol6) oPrn:CmSay( (nlBol ) ,00.94, vMensBol6,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol7) oPrn:CmSay( (nlBol ) ,00.94, vMensBol7,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol8) oPrn:CmSay( (nlBol ) ,00.94, vMensBol8,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol9) oPrn:CmSay( (nlBol ) ,00.94, vMensBol9,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol10) oPrn:CmSay( (nlBol ) ,00.94, vMensBol10,oFont) nlBol+=0.20 ENDIF //oPrn:CmSay( (nlBol+5.0),4.0 , IIF(Filiais->imp_parcel,'PARCELA '+vParc,""),oFont) nlBol:=15.85 tEndeP := vEndereco+' - '+vBairro+' - '+vCidade+' - '+vEstado+' - '+vcep //oPrn:CmSay( (nlBol+5.5),4.8 , "CÓDIGO: "+vcodclbo,oFont) oPrn:CmSay( (nlBol ),00.94, vNomeCli,oFont) oPrn:CmSay( (nlBol ),13.20 , "CPF/CNPJ: "+vCpf,oFont) nlBol+=0.20 oPrn:CmSay( (nlBol ),00.94, vEndereco,oFont) oPrn:CmSay( (nlBol ),13.20 , "UF: "+VeSTADO,oFont) oPrn:CmSay( (nlBol ),14.60 , "CEP: "+Vcep,oFont) nlBol+=0.20 oPrn:CmSay( (nlBol ),00.94, vBairro,oFont) oPrn:CmSay( (nlBol ),13.20 , "Município: "+vcidade,oFont) @ nlBarra ,085 int25 cod_barra OF oPrn SIZE 1.1 //nlBol+=5.2 //oPrn:CmSay( (nlBol ),00.94, cod_barra,oFont) ELSEIF vmodbol = 1 //oPrn:CmSay( (nlBol-0.1),8.4 , transform(cod_dig, '@R 99999.99999 99999.999999 99999.999999 9 99999999999999'),oFont1) oPrn:CmSay( (nlBol+0.1),8.3 , transform(cod_barra,'@R 99999999999999999999999999999999999999999999999'),oFont1) oPrn:CmSay( (nlBol+0.8),4.0 , vlocalPg,oFont) oPrn:CmSay( (nlBol+0.8),17.3 , DTOC(datavenc),oFont) oPrn:CmSay( (nlBol+1.1),4.0 , vEmpr,oFont) oPrn:CmSay( (nlBol+1.1),16.9 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) oPrn:CmSay( (nlBol+2.0),4.0 , DTOC(DATE()),oFont) oPrn:CmSay( (nlBol+2.0),6.7 , vdoc,oFont) oPrn:CmSay( (nlBol+2.0),9.8 , vesp_doc,oFont) oPrn:CmSay( (nlBol+2.0),11.7 , "NÃO",oFont) oPrn:CmSay( (nlBol+2.0),13.8 , DTOC(vdoc_pro),oFont) oPrn:CmSay( (nlBol+2.0),16.0 , "24/"+vnossonm,oFont) oPrn:CmSay( (nlBol+2.6),6.6 , vcarteir,oFont) oPrn:CmSay( (nlBol+2.6),8.7 , vesp_moe,oFont) oPrn:CmSay( (nlBol+2.6),17.3 , TRANSFORM(valor,'@E 999,999.99'),oFont) // Comentários com espaço de 92 caracteres oPrn:CmSay( (nlBol+3.0),4.0 , vMensBol1,oFont) oPrn:CmSay( (nlBol+3.2),4.0 , vMensBol2,oFont) oPrn:CmSay( (nlBol+3.4),4.0 , vMensBol3,oFont) oPrn:CmSay( (nlBol+3.6),4.0 , vMensBol4,oFont) oPrn:CmSay( (nlBol+3.8),4.0 , vMensBol5,oFont) oPrn:CmSay( (nlBol+4.0),4.0 , vMensBol6,oFont) oPrn:CmSay( (nlBol+4.2),4.0 , vMensBol7,oFont) oPrn:CmSay( (nlBol+4.4),4.0 , vMensBol8,oFont) oPrn:CmSay( (nlBol+4.6),4.0 , vMensBol9,oFont) oPrn:CmSay( (nlBol+4.8),4.0 , vMensBol10,oFont) oPrn:CmSay( (nlBol+5.0),4.0 , IIF(Filiais->imp_parcel .AND. AT(vParc,"/") > 0,'PARCELA '+vParc,""),oFont) tEndeP := vEndereco+' - '+vBairro+' - '+vCidade+' - '+vEstado+' - '+vcep oPrn:CmSay( (nlBol+6.4),4.8 , "CÓDIGO: "+vcodclbo,oFont) oPrn:CmSay( (nlBol+5.7),4.8 , vNomeCli+' - '+vCpf,oFont) oPrn:CmSay( (nlBol+5.9),4.8 , LEFT(tEndeP,80),oFont) oPrn:CmSay( (nlBol+6.1),4.8 , IIF( LEN(tEndeP) > 80,ALLTRIM(SUBST(tEndep,81,40))+" - ","")+vPerimetr,oFont) @ nlBarra ,872 int25 cod_barra OF oPrn SIZE 1.1 ENDIF contaBol++ return(Nil) *** *** Calcula Módulo 10 *** ************************************************** STATIC function mod10(q_num) ************************************************** local x1, x2, x3, x4, x5, x6, x7 if empty(q_num) return('X') end x1 := len(q_num) x2 := right(_mod10, x1) x3 := 0 for x4 := 1 to x1 x5 := val(substr(q_num, x4, 1)) * val(substr(x2, x4, 1)) x6 := strzero(x5, 2) x7 := val(left(x6, 1)) + val(right(x6, 1)) x3 += x7 next x5 := int(x3 / 10) x7 := x3 - (x5 * 10) x2 := str(iif(x7 = 0, 0, 10 - x7), 1) return(x2) *** *** Calcula Módulo 11 *** ************************************************* STATIC function mod11(q_num,ff) ************************************************* local x1, x2, x3, x4, x5, x6, x7 if empty(q_num) return('X') end x1 := len(q_num) x2 := right(_mod11, x1) x3 := 0 for x4 := 1 to x1 x5 := val(substr(q_num, x4, 1)) * val(substr(x2, x4, 1)) x3 += x5 next x5 := int(x3 / 11) x7 := x3 - (x5 * 11) t:=x7 DO CASE CASE x7 <= 1 IF ff != NIL x2 := str( 1, 1) ELSE x2 := str( 0, 1) ENDIF CASE x7 > 9 x2 := str( 1, 1) OTHER x2 := str( 11 - x7, 1) ENDCASE return(x2) ***************************************************************************************** STATIC function mod11X(q_num) ***************************************************************************************** local x1, x2, x3, x4, x5, x6, x7 if empty(q_num) return('X') end x1 := len(q_num) x2 := right(_mod11, x1) x3 := 0 for x4 := 1 to x1 x5 := val(substr(q_num, x4, 1)) * val(substr(x2, x4, 1)) x3 += x5 next x5 := int(x3 / 11) x7 := x3 - (x5 * 11) g:=x7 //x2 := str(iif(x7 <= 1 , 0, 11 - x7), 1) x2 := str(iif(x7 <= 1 .or. x7 > 9, 0, 11 - x7), 1) return(x2) *** *** ***************************************************************************************** STATIC function monta_codigo ***************************************************************************************** local xcod, xbarra xbarra := '1049' // Código do Banco + Moeda (9 - Real) xbarra += f_venc // Fator de Vencimento xbarra += v_docum // Valor do Documento xbarra += c_livre // Campo Livre dv_codb := mod11(xbarra,1) // xbarra := stuff(xbarra, 5, 0, dv_codb) // Digito Verificador Geral Código de Barras xcod := '1049' + substr(c_livre, 1, 5) xcod += mod10(xcod) // 1o. campo xcod += substr(c_livre, 6, 10) + mod10(substr(c_livre, 6, 10)) // 2o. campo xcod += substr(c_livre, 16, 10) + mod10(substr(c_livre, 16, 10)) // 3o. campo xcod += dv_codb // 4o. campo (digito verificador geral do código de barra) xcod += f_venc // 5o. campo (1/2) xcod += v_docum // 5o. campo (2/2) cod_dig := xcod cod_barra := xbarra return(Nil) *** *** Calcula o fator de vencimento *** Monta Valor Documento *** Monta Campo Livre *** ***************************************************************************************** STATIC function prepara ***************************************************************************************** f_venc := strzero(datavenc - ctod('07/10/1997'), 4) v_docum := strzero(valor * 100, 10) c_digCed:= mod11(vCeden) // Dígto cedente c_livre := ALLTRIM(vCeden)+c_digCed+SUBST(vnossonm,1,3)+"2"+SUBST(vnossonm,4,3)+"4"+SUBST(vnossonm,7,9) c_digLiv:= mod11(c_livre) // Digito campo livre c_livre := c_livre+c_digLiv return(Nil) Antigão mas da uma olhada blz! Abraços
  3. Bom dia, Queria ler código de barras que esta dentro de uma imagem JPG. Procurei sobre o assunto e achei via OCR mas como foi um assunto muito antigo, não consegui material completo para montar esta rotina. Algum exemplo que posso me ajudar?´ Obrigado
  4. Isso mesmo meu caro, para isso foi criada ARRAY para deixar todos os números disponíveis de 0 a 999999 e dentro de um FOR...NEXT, foça a função a fazer todos os números. Não expliquei direito mesmo e o intuito é pegar TODOS os números pois se trata de rifas com 6 digitos, portanto funcionou assim como neste teste... function RandomList() local aList := Array( 999999 ) local nAt, aRandom := {} AEval( aList, { |u,i| aList[ i ] := i } ) do while Len( aList ) > 0 nAt := HB_RandomInt( 1, Len( aList ) ) AAdd( aRandom, aList[ nAt ] ) ADel( aList, nAt, .t. ) enddo XBROWSER aRandom SHOW RECID return nil Que se parece muito com a sua sugerida. Obrigado
  5. Obrigado Kapi mas vi que utilizou a hb_random() e esta testei também. Fiz um DBF de 1 até 999999 e pedi para essas funções encontrarem TODOS os números, algumas não encontraram 30 números e outras uns 7 e para quem trabalha com rifas e jogos de bingo, isso é muuuito.
  6. Fiz vários testes com nRANDOM(), RANDOM(), HB_RandomInt(), etc e todas elas NÃO FUNCIONARAM nas suas totalidades ou seja, todas deixaram de fornecer alguns números em uma de range 999999 e estou com muita dificuldade em encontrar uma solução para isso já que em se tratando de sorteios, nenhum número pode faltar ou se repetir. Algum de vocês tem alguma rotina própria criada para esta função que eu consiga testar? Obrigado
  7. Excelente meu caro, se conseguir deves ser por recursos externos esta tecnologia, parabéns. Encontrei algo parecido que pretendo neste link https://forums.fivetechsupport.com/viewtopic.php?f=6&t=32879&hilit=webcam&sid=2c629c03f9ba68eda01fe8a5b343f58f Veja se pode te ajudar em algo. Abraços
  8. Bom dia meus caros, Vi alguns exemplos aqui de captar o video de uma camera e tinha para baixar em dicas mas não achei mas. E pela camera em USB é possivel? Alguem pode me enviar o exemplo pronto em EXE com seus prg,res ou rc e dlls? Obrigado
  9. Marcio como te falei, meu intuito seria mais mobile então instalei e estou tentando o "Hello Word" em B4A, quem poder me ajudar os que usam...
  10. Meu caro tens exemplos em sites ou seus mesmo que poderia dar uma olhada? Pretendo desenvolver um aplicativo que faz compra de cartelas de bingos/sorteios e consolidar com meu software e ainda estou na dúvida doida por decidir em qual inicio. Vejo muitos falando do Windev e realmente foi comprovada suas particularidades mas realmente os custos são altíssimos e não disponho de dividendos assim, mesmo que meu sócio deu um pinote quando apresentei o valor kkkk
  11. Conversamos outro dia Marcio sobre este assunto, no caso seria interessante projetos voltados para Mobile (ao meu ver) e nossa esperança que caiu por terra, seria o Fivetouch. Muitos daqui já encontraram soluções e já até houve informações de custos, tempo e aproveitamento de todo o conhecimento que temos na linguagem. Abraços meu caro. Ladinilson Sousa
  12. Show! Mas era mesmo a mais simples onde esta os produtos.
  13. Meu caro como é que faz esta linha com informações duplas e fontes diferentes no browse?
  14. Olá Everton Desculpe a demora pois consegui implementar a rotina para escanear mas agora tenho uma coisa que não encontrei em nenhum lugar usando TWAIN. Ele inseriu na TSCAN.PRG no metodo DIGITOFILE uma função para identificar se tem código de barras dentro da imagem escaneada... *********************************************************** * Digitaliza hacia un fichero .jpg *********************************************************** METHOD DigiToFile( cFile,oscan ) local cBarValue:="" if EMPTY( cFile ) cFile := ::cFile endif IF !::lError ::hDib := ::Acquire() // Importar // ------------ AQUI PARA RECONHECER SE TEM CODIGO DE BARRAS if oScan:BC_Recognize(::hDib,1,-1)>0 cBarValue:=oScan:BC_Text(0) cBarValue:=alltrim(cBarValue) else cBarValue:="0" endif ENDIF IF cBarValue='9999999' Publicas:cFin:=1 endif //-------------------------------------------------------------- IF ::hDib <> 0 IF ::lBmp // Format bmp ::DibToBmp( cFile ) // Si no hacemos uso de BMP ELSE IF TW_IsJpg() // Si puede hacer uso del JPG ::DibToJpeg( cFile ) ELSE ::DibToBmp( cFile ) // Si no hacemos uso de BMP ENDIF ENDIF else Publicas:cFin:=1 ENDIF Return (cBarValue) E além de reconhecer, ele capta e dar a imagem o código de barras (números) ao arquivo digitalizado. Não achei nada usando a TSCAN (Rafael Carmona) e também o dono da postagem não conseguir falar (sabe se ainda esta vivo!) pois dentro da TSCAN e do EZTAWIN.h não tem estas. Não sei se ele usou uma versão nova da .DLL ou desenvolveu pois precisava para usar no meu programa para bingos. se alguém usa e tem as LIB, DLL, H e um exemplo me ajudem ai. Obrigado
  15. Boa Tarde Wellington, Amigo tive algum tempo este lema em fornecer aos usuários uma tela mais agradável e funcional e que também fizesse eu admirá-la (sei que vocês gostam de ter seus egos de um "bom trabalho" também rsrsr) e percebi que telas com muitas informações não ficavam legais na minha opinião. Teclas de comandos podem serem substituídas com em help em uma tecla (a minha é F12) pois percebi que com o tempo, os usuários gravam em mente suas funções portando, acho desnecessário. Telas sobrepostas com muitos dialogs, ficam confusas e parecem que um fechamento de venda fica com muitos níveis de execução. Cores demais, vi em uma reportagem que visualmente ficam cansativas e não gradáveis com o tempo além de serem bem infantis ao meu ver. Me desculpe as observações mas apenas dei minha opinião sobre o assunto e espero ter contribuído para 1 ou nenhum ponto ao senhor. Gostei muito da transparência na tela do recebimento do caixa, ficou show! Abaixo algumas telas do meu PDV onde pode ser configurado o papel de parede, cores, logo e uso informações apenas necessários onde as mesmas aparecem conforme também as configurações como por exemplo descontos e códigos de vendedores apenas para alguns usuários em níveis de acesso. Obrigado
  16. Boa tarde meu caros, Em uma DIALOG era possível o recurso de duplo clique com o mouse ou uso do ALT+Enter para coloca-la em tela cheia claro sem as bordas e barra de tarefas sendo que esconder a barra de tarefas já tenho. Obrigado Ladinilson Sousa
  17. Boa tarde, Preciso de um força de vendas para integração com meu software de automação comercial. O mesmo pode exportar dados através de DBF, MySQL ou TXT para a importar os pedidos para o meu programa. Mandem orçamentos ok Meus contatos: ladinilson@hotmail.com (91) 98010-3379 Whattsapp Obrigado
  18. Bom dia meu caros, Estou implementando uma rotina para meu software de sorteios (bingos) onde o mesmo terá que escanear os canhotos das cartelas vendidas e automaticamente, validar os mesmos com a leitura do código de barras neles... #include "FiveWin.ch" Function escanea() local cBarValue,hdib,nombre,hora,minu,segu,dia,camino,cFile,sigue local nCntPage:=0, cVar,oIni,escaneo,errores,conta:=0,contae:=0 INI oIni FILE ".\GESPAQ.INI" GET escaneo SECTION "JPG" ENTRY "Ruta Imagenes provisio" OF oIni DEFAULT curdrive()+":\"+curdir() GET errores SECTION "JPG" ENTRY "Ruta Imagenes entrada" OF oIni DEFAULT curdrive()+":\"+curdir() ENDINI cFile:="provi" camino:=curdrive()+":\"+curdir()+"\" tw_SetMultiTransfer(1) oScan := TScan32():New(cfile) * oscan:SelectFeeder(.t.) * oscan:SetAutoFedd(1) oScan:SetRes( 300 ) && 150dpi * oScan:PixelType( TWAIN_BW ) oScan:PixelType( TWPT_RGB ) oScan:SetHide( .T. ) oscan:RegionSet(0,0,8.40,4) Do while .t. //tw_waitforImage(oscan)=1 dia :=alltrim(padr(str(year(date())),"0",4))+alltrim(padr(str(month(date())),"0",2))+alltrim(padr(str(day(date())),"0",2)) hora:=SUBSTR(TIME(), 1, 2) minu:=SUBSTR(TIME(), 4, 2) segu:=SUBSTR(TIME(), 7, 2) cFile:=dia+hora+minu+segu+".jpg" nombre:=oscan:Digitofile( cFile,oscan ) do case case nombre<>"0" .and. nombre <>'9999999' movefile(camino+cFile,escaneo+'0'+nombre+'.jpg' ) conta+=1 case nombre='0' movefile(camino+cFile,errores+cFile ) contae+=1 case nombre='9999999' delete file &nombre end case if Publicas:cFin=1 exit endif enddo * TW_CloseSource() if .not. oScan:BC_available() msgalert("No esta registrada la aplicacion","Atencion") endif oScan:End() msginfo('Resumen del Escaneo'+chr(10)+chr(10)+'Albaranes con codigo de barras '+alltrim(str(conta))+chr(10)+'Albaranes sin codigo de barras '+alltrim(str(contae)),'HEMOS ACABADO') return (sigue) Esse código utiliza a TSCan32 junto com a EzTawin mas tem um problema que não há mais detalhes no tópico.... http://forums.fivetechsupport.com/viewtopic.php?f=6&t=20406&p=108205&hilit=scanner#p108205 E nem o autor respondeu mais. Alguém tem algo parecido ou que pode me direcionar a algo parecido. Obrigado Ladinilson Sousa FWH / xHarbour / Pelles / DBFCDX / MySQL
  19. Amigo acho desnecessário também, pode-se usar vários .RES como por exemplo uso um para dialogs e o outro para bitmaps, icones, etc. A única vantagem da DLL, é que se atualizar apenas o código, se atualiza apenas o .EXE e no caso do .RES vem dentro tudo do EXE "inchando" também o mesmo.
  20. Copia da RES a dialog e depois cola na outra RES, a dialog copiada fica como nome tipo #1001, botão direito em cima dela e em "propriedades" renomear a mesma colocando entre parênteses o novo nome, fácil. Atualize o PELLES que já esta na versão 9.00.9
  21. A Restauração do Windows não incluem arquivos externos a somente esta operação é feito no sistema operacional. Sim é automático em um robozinho colocado para fazer 2 vezes por dia por isso parou por horas o atendimento mas consegui restaurar tudo
  22. Foi o próprio Windows que fez isso amigo
  23. Boa tarde pessoal, Vim aqui para relatar um erro que aconteceu segunda vez com o windows 7. No relato desses dois clientes, falaram que ele travou e quando voltou alguns arquivos sumiram ou ficaram como antes e no meu programa, estava o de setembro pois já tinha atualizado em dezembro com mudanças feitas por causa da SEFA. Os preços dos produtos, ficaram desatualizados (anteriores) e com isso o supermercado quiz meu fígado sem sequer dar questão quando relatei este problema, acharam que estava enrolando e até o TI ficou desconfiado de mim e mesmo mostrando a ele o corrido, o safado colocou o meu na reta. Alguns de voces já presenciaram isso? Algum link ou matéria sobre este mistério? Obrigado Ladinilson Sousa
  24. Que Deus conforte sua família neste difícil momento e que sentiremos falta de um colega a mais em nossos grupos de discussões. O fato meus caros é que nossa profissão tem um risco muito grande de certas doenças principalmente as vasculares e cardíacas. Alguns conhecidos meus e acredito de vocês já foram acometidos por doenças que surgem devido a falta de exercícios, estres e muitas noites não dormidas. Eu mesmo fui um tempo atrás vítima de pressão alta e um conhecido meu adquiriu até síndrome do pânico. Por estarmos horas sentados, a obesidade e o sedentarismo é muito comum entre a gente e espero de alguma forma, ter alertado desses riscos que ocorremos.
×
×
  • Create New...