Jump to content
Fivewin Brasil

jfaguiar

Membros
  • Posts

    1,287
  • Joined

  • Last visited

  • Days Won

    21

Everything posted by jfaguiar

  1. zoa não vai kkk Você pode me passar o lick para download bcc7 pf? Você pode me passar o link para download do bcc7 amigão. Vlw
  2. Desculpem-me por favor por demorar tando. Segue o fonte e projeto: #INCLUDE "Fivewin.ch" // BitDeph #define TWPT_BW 0 /* Black and White */ #define TWPT_GRAY 1 #define TWPT_RGB 2 #define TWPT_PALETTE 3 //----- Unit of Measure #define TWUN_INCHES 0 #define TWUN_CENTIMETERS 1 #define TWUN_PICAS 2 #define TWUN_POINTS 3 #define TWUN_TWIPS 4 #define TWUN_PIXELS 5 /* ---------------------------------------------------------------- Control de Pruebas de la Clase TSCAN32, Wrappers para Scanners y WebCams. - Soporta scanners Paralelo, USB y SCSI. - WebCams (c)2003.- by Rafa Carmona( TheFull ) Compiler & Libraries - Harbour and Fivewin For Harbour v2.3 --------------------------------------------------------------- */ Static oScan, oWnd Static X := 0 Static Y := 0 Static lChangeUnit := .F. **************************************************************** FUNCTION Main() LOCAL oDlg,oLbx,oIco,nQTDIMG := 0 cLastFile := "aaaaaaaaa" PUBLIC ERRORED := .F.,cDRIVE := CurDrive()+":",cTIPODB := NIL PUBLIC CLR_FUNGET,CLR_FONGET,CLR_FUNLBX,CLR_FONLBX,CLR_FUNLBX2,CLRFUGETNE // CLR_FUNLBX := nRGB( 202,255,202) CLR_FUNLBX2 := nRGB( 255,255,255) CLR_FONLBX := nRGB( 0,0,0) CLR_FUNGET := nRGB( 255,255,174) CLR_FONGET := nRGB( 0,0,0) CLRFUGETNE := nRGB( 235,255,174) // nHeightScr:= 30 nWidthScr := 100 // REQUEST HB_LANG_PT HB_LANGSELECT( 'PT' ) REQUEST DBFCDX // Sem ads RddSetDefault("DBFCDX") // Sem ads SetHandleCount(40) // Define quantidade máxima de arquivos para aplicação // SET DELETED ON SET 3DLOOK ON SET DATE BRITISH SET EPOCH TO 1980 // // // IF !FILE("TBPSCAN.DBF") aSTRUCT := { } AADD(aSTRUCT,{'NOMEPAS','C',6,0 } ) AADD(aSTRUCT,{'DATA','D',8,0 } ) AADD(aSTRUCT,{'HORA','C',5,0 } ) DBCREATE("TBPSCAN", aSTRUCT) ENDIF IF !FILE("TBPSCAN.CDX") IF NETUSE("TBPSCAN","TBPSCAN",.F.,.F.,5) INDEX ON DESCEND(DTOS(DATA)+HORA) TAG DATA TO TBPSCAN INDEX ON NOMEPAS TAG NOMEPAS TO TBPSCAN DbCloseArea() ENDIF ENDIF IF NETUSE("TBPSCAN","TBPSCAN",.T.,.F.,5) SET INDEX TO TBPSCAN IF RECCOUNT() = 0 REGLOCK(10,.T.) DbUnlock() ENDIF ENDIF IF ERRORED CLOSE DATABASE RETURN Nil ENDIF nNUMDOC := 0 // 0042707201.tif //DEFINE FONT oFontLbl NAME "Ms Sans Serif" SIZE 10,10 // DEFINE FONT oFontLbl NAME "Ms Sans Serif" SIZE 0, -8 BOLD DEFINE FONT oFontLbl NAME "Arial" SIZE 0, -12 BOLD WHILE .T. DbSelectArea("TBPSCAN") DEFINE DIALOG oDlg FROM 01,01 TO 28,35 TITLE "Siscom Multi" COLOR "N/B" oDlg:Cargo := .F. nWidthLb := oDlg:nWidth() * IF(oDlg:nWidth() < 411, 0.480009,0.489900) // 0.476190476 nHeightLb := HeightLb( oDlg:nHeight() ) - 10 @ LINS(0.5),COLS(01) SAY "Selecione a Pasta - Click Duplo Edita" COLOR "W+/B" FONT oFontlbl @ 1.3,0.700 LISTBOX oLbx; FIELDS TBPSCAN->NOMEPAS,DTOC(TBPSCAN->DATA)+" - "+TBPSCAN->HORA; SIZE nWidthLb,nHeightLb; // Comprimento,Altura HEADERS "Nome Pasta","Data Criação" OF oDlg COLORS CLR_FONLBX,CLR_FUNLBX @ oDlg:nHeight()/2-19,oDlg:nWidth()/2-70 BTNBMP SIZE 30,15 Pixel; FILENAME "&cDRIVE\SISCOM\bitmaps\BTNOK.bmp"; ACTION (oDlg:Cargo := .T.,oDlg:End() ) @ oDlg:nHeight()/2-19,oDlg:nWidth()/2-35 BTNBMP SIZE 35,15 Pixel; FILENAME "&cDRIVE\SISCOM\bitmaps\BTNCANC.bmp"; ACTION oDlg:End() oLbx:bLDblClick:= { | nKEY,nRow, nCol | EditListBox( nKEY, nRow , nCol,oLbx) } ACTIVATE DIALOG oDlg CENTERED IF !oDlg:Cargo EXIT ENDIF // cPASTA := CurDrive() + ":\MsScan\" + TRIM(TBPSCAN->NOMEPAS) IF !lISDIR(cPASTA) lMkDir(cPASTA) ENDIF lChDir(cPASTA) //SET PATH TO cPASTA IF !FILE("TBASCAN.DBF") aSTRUCT := { } AADD(aSTRUCT,{'NOMEARQ','C',14,0 } ) AADD(aSTRUCT,{'DATA','D',8,0 } ) AADD(aSTRUCT,{'HORA','C',5,0 } ) AADD(aSTRUCT,{'STATUS','N',1,0 } ) DBCREATE("TBASCAN", aSTRUCT) ENDIF IF !FILE("TBASCAN.CDX") IF NETUSE("TBASCAN","TBASCAN",.F.,.F.,5) INDEX ON NOMEARQ TAG NOMEPAS TO TBASCAN DbCloseArea() ENDIF ENDIF IF NETUSE("TBASCAN","TBASCAN",.T.,.F.,5) SET INDEX TO TBASCAN ENDIF aBITMAP := { ReadBitmap( 0, "&cDRIVE\SISCOM\bitmaps\LevelX.bmp" ),; // Sem Led ReadBitmap( 0, "&cDRIVE\SISCOM\bitmaps\Level2.bmp" )} // Verde DEFINE DIALOG oDlg FROM 01,01 TO 28,50 TITLE "Siscom Multi - Pasta: "+cPASTA COLOR "N/B" oDlg:Cargo := .F. nWidthLb := oDlg:nWidth() * IF(oDlg:nWidth() < 411, 0.480009,0.489900) nHeightLb := HeightLb( oDlg:nHeight() ) @ 0.5,0.700 LISTBOX oLbx; FIELDS TBASCAN->NOMEARQ,DTOC(TBASCAN->DATA)+" - "+TBASCAN->HORA,aBITMAP[Max(1,TBASCAN->STATUS)]; SIZE nWidthLb,nHeightLb; // Comprimento,Altura HEADERS "Nome Arquivo","Digitalização","Status" OF oDlg COLORS CLR_FONLBX,CLR_FUNLBX @ LINS(15.0),COLS(01) SAY "Informe o nome do arquivo" COLOR "W+/B" FONT oFontlbl @ LING(15.8),COLG(01) GET nNUMDOC PICT "99999999" @ oDlg:nHeight()/2-22,oDlg:nWidth()/2-105 BtnBmp oBt1 File "Scanner.bmp" size 60,20 Pixel Prompt "Digitalizar" 2007 Left; ACTION Digitaliza(oLbx,oDlg) Of oDlg @ oDlg:nHeight()/2-22,oDlg:nWidth()/2-40 BTNBMP SIZE 40,20 Pixel; FILENAME "&cDRIVE\SISCOM\bitmaps\BTNCANC.bmp"; ACTION oDlg:End() OF oDlg ACTIVATE DIALOG oDlg CENTERED TBASCAN->( DbCloseArea() ) cPASTA := CurDrive() + ":\MsScan" lChDir(cPASTA) IF !oDlg:Cargo LOOP ENDIF ENDDO RETURN Nil **************************************************************** STATIC FUNCTION Digitaliza(oLbxr,oDlgr) IF nNUMDOC = 0 MsgAlert("O número do documento deverá ser informado !") RETURN Nil ENDIF // nQTDSCAN := 0 WHILE .T. // nQTDSCAN < 3 ++ nQTDSCAN cFilescan := STRZERO(nNUMDOC,8) + STRZERO(nQTDSCAN,2)+ ".Jpg" IF !MsScan( cFilescan ) oLbxr:Refresh() oDlgr:SetFocus() // xSetFocus(oDlgr) EXIT ENDIF SEEK cFilescan IF REGLOCK(10,(EOF()) ) REPLACE NOMEARQ WITH cFilescan,DATA WITH DATE(),HORA WITH TIME() REPLACE STATUS WITH 1 DbUnlock() DbSkip(-5) oLbxr:Refresh() ENDIF ENDDO RETURN Nil **************************************************************** STATIC FUNCTION EditListBox( nKEY, nRow, nCol,oLbx) LOCAL u,nREGANT := 0 IF nCol > 0 nCOL := oLbx:nAtCol( ncol ) IF nCOL # 1 nCOL := 1 ENDIF ENDIF // IF REGLOCK(10,.F.) u := ( oLbx:cAlias )->( FieldGet(1) ) if oLbx:lEditCol( nCOL , @u ) FieldPut(1,u ) IF !EMPTY(u) .AND. EMPTY(DATA) REPLACE DATA WITH DATE(),HORA WITH TIME() nREGANT := RECNO() ENDIF ENDIF DbUnlock() ENDIF IF nREGANT > 0 IF REGLOCK(10,.T.) DbUnlock() DbGoto(nREGANT) ENDIF ENDIF oLbx:Refresh() RETURN Nil *********************************************************************************** Function MsScan( cFile, nType, nRes, lHide, lInterface, nPaper ) Local hDib := 0 Local oImage, oBar, oBtn, oFont, oCbx, oCbxU, oCbxR, oGet, oCheck Local lSave := .F. Local cType Local aTypes := { "1-Scale Gray","2-Real Color","3-Palette Color" } Local aResolutions := { "0","75","100","150","200","300" } Local aUnits := { "0-Dpi","1-Cms","2-Picas","3-Points","4-Twips","6-Pixels"} Local cUnit := aUnits[1] Local nUnit := 0 Local cFormat IF cFile = "/?" .OR. Empty(cFile) .OR. cFile = "?" ? "(c)2003 ScanFive For [x]Harbour by Rafa Carmoma(TheFull)"+CRLF+; "Parameters:" + CRLF +; "[File] [Type] [nResolution] [lHide] [lInterFace]" + CRLF+; "Example: ScanFive .\test.jpg 1 75 .T." quit ENDIF IF lInterFace = ".F." .OR. lInterFace = NIL lInterface := .F. ELSEIF lInterFace = ".T." lInterface := .T. ENDIF IF nRes = NIL nRes := "0" ENDIF IF lHide = ".T." .OR. lHide = NIL lHide := .T. ELSEIF lHide = ".F." lHide := .F. ENDIF // Default RGB IF nType == NIL nType := TWPT_GRAY ELSEIF Val( nType ) <= 3 nType := Val( nType ) ELSEIF Val( nType ) > 3 MsgStop( "Not exist type." + CRLF+; "Real Color by Default", "Atention" ) nType := TWPT_RGB ENDIF cType := aTypes[ nType ] IF cFile = NIL cFile := ".\TestScan" + cFormat ENDIF oScan := TScan32():New( cFile ) IF lInterFace DEFINE FONT oFont NAME"Tahoma" SIZE 0,-10 DEFINE WINDOW oWnd TITLE "Fichero: "+ oScan:cFile FROM 1,1 TO 500,650 PIXEL DEFINE BUTTONBAR oBar SIZE 50,32 3D OF oWnd DEFINE BUTTON oBtn PROMPT "Exit" FONT oFont ; ACTION oWnd:End() OF oBar DEFINE BUTTON oBtn PROMPT "Grabar" FONT oFont ; ACTION ( oScan:ClipBoardToFile( cFile ),; SysRefresh() ) OF oBar DEFINE BUTTON oBtn PROMPT "Scan" FONT oFont ; ACTION IF( ScanFive( nType , nRes, nUnit, lHide ),; ( oImage:LoadFromClipboard(), oImage:Refresh()) ,) OF oBar @5,175 CHECKBOX oCheck VAR lChangeUnit PROMPT "SetUnit" SIZE 70,20 OF oBar PIXEL @3,250 COMBOBOX oCbxR VAR nRes SIZE 100,130 ; ITEMS aResolutions OF oBar PIXEL ; WHEN nUnit = 0 UPDATE @3,350 COMBOBOX oCbx VAR cType SIZE 120,130 ; ITEMS aTypes OF oBar PIXEL ; ON CHANGE nType := Val( SubStr( cType,1,1 ) ) @3,470 COMBOBOX oCbxU VAR cUnit SIZE 100,130 ; ITEMS aUnits OF oBar PIXEL ; ON CHANGE nUnit := Val( SubStr( cUnit,1,1 ) ) ; UPDATE @7,570 GET oGet VAR X PICTURE "9999.99" SIZE 60,20 OF oBar ; UPDATE PIXEL @7,630 GET oGet VAR Y PICTURE "9999.99" SIZE 60,20 OF oBar ; UPDATE PIXEL @0,0 BITMAP oImage SCROLL OF oWnd oWnd:oClient := oImage oWnd:Center() SET MESSAGE TO "(c)2003-Scan ClipBoard Beta 4 by Rafa Carmona" OF oWnd CENTER // Vaciamos el Clipboard a la salida de la Aplicacion. // Empty Clipboard to Exit aplicattion. ACTIVATE WINDOW oWnd VALID( oFont:End(), oScan:End(),; OpenClipBoard( oWnd:hWnd ),; EmptyClipboard(),; CloseClipBoard(),.T. ) ELSE // Line Command 'a traves' of ClipBoard IF ScanFive( nType, nRes, 0 ,lHide ) oScan:ClipBoardToFile( cFile ) Return .T. // Scan ELSE Return .F. // Not Scan ENDIF ENDIF Return NIL // Scanner al Clipboard // nType -> Tipo de Salida // nRes -> Resolucion de salida // nUnit -> Sistema de Medida Static Func ScanFive( nType, nRes , nUnit, lHide ) if oScan:State() < 4 oScan:OpenDefault() endif if nUnit = 0 .AND. nRes != "0" oScan:SetRes( Val( nRes ) ) endif IF nUnit > 0 if lChangeUnit oScan:SetUnits( nUnit ) // Sistema de Medida .Esto puede causar problema endif // Expresado en Dpi. Habria que convertir pero no tengo ni idea de como. oScan:SetXRes( X ) oScan:SetYRes( Y ) ENDIF oScan:SetHide( lHide ) // Oculto DS oScan:PixelType( nType ) // Quando executa este metodo para no delay se não houver papel Return oScan:AcquireClipBoard() ************************************************************************** FUNCTION Netuse(ctabe, capelid,lcompart,lLeitura,tempo,cIndOpen) LOCAL sempre // ,lLeitura := lcompart LOCAL oText IF SELECT(capelid) > 0 RETURN(.T.) ENDIF sempre := (tempo = 0) WHILE (sempre .OR. tempo > 0) .AND. INKEY()<>27 MsgRun( "Abrindo tabela "+cTabe, "Aguarde...",; { || DbUseArea(.T.,cTIPODB,ctabe,capelid,lcompart,lLeitura) } ) //DbUseArea(.T.,cTIPODB,ctabe,capelid,lcompart,lLeitura) // 1 = Novaarea // 2 = Drive (dbfcdx,topconec... // 3 = Tabela // 4 = Alias // 5 = Compartilhado ou nao .T. .F. // 6 = Leitura .t. .f. IF !NetErr() IF !cIndOpen == Nil IF !"CDX" $ UPPER(cIndOpen) cIndOpen += ".CDX" ENDIF IF FILE(cIndOpen) SET INDEX TO (cIndOpen) ELSE MsgAlert("Prezado usuário,"+CRLF+; "Um arquivo de índice denominado "+cIndOpen+" não foi encontrado."+CRLF+; "Causa provável: Alguém solicitou uma reorganização da base de dados"+CRLF+; "e não lhe avisou para sair do sistema.") ERRORED := .T. ENDIF ENDIF RETURN(.T.) ENDIF INKEY(1) -- Tempo ENDDO ERRORED := .T. IF INKEY() # 27 MsgStop("A tabela "+ cTABE +" não está disponível. - Origem: "+ProcName(1) ) ENDIF RETURN(.F.) ************************************************************************** FUNCTION LINS( __NR_ROW ) && linha say RETURN( __NR_ROW*0.795 ) //--------------------------------------------------------------------------- FUNCTION COLS( __NR_COL ) && coluna say RETURN( __NR_COL/1.5 ) ****************************************************************************** FUNCTION LING( __NR_ROW ) && linha get RETURN( ((__NR_ROW*0.92)-0.02)+ IF(__NR_ROW>18,0.05,0) ) //---------------------------------------------------------------------------- FUNCTION COLG( __NR_COL ) && coluna do get RETURN( __NR_COL/2.00 ) ****************************************************************************** FUNCTION LINR( __NR_ROW ) && linha radio RETURN( (__NR_ROW*0.96) - 0.02 ) //---------------------------------------------------------------------------- FUNCTION COLR( __NR_COL ) && coluna radio RETURN(__NR_COL/1.8) ****************************************************************************** FUNCTION LINB( __NR_ROW ) && linha buttom RETURN((__NR_ROW*0.67)+0.10) //---------------------------------------------------------------------------- FUNCTION COLB( __NR_COL ) && coluna button RETURN( __NR_COL/1.5 ) ****************************************************************************** FUNCTION LIND( __NR_ROW ) && linha dbcombo RETURN( (__NR_ROW*0.85) + IF(__NR_ROW>10,0.05,0) + IF(__NR_ROW>17,0.05,0) ) //---------------------------------------------------------------------------- FUNCTION COLD( __NR_COL ) && coluna dbcombo RETURN((__NR_COL/2)+0.20) ****************************************************************************** FUNCTION COLC( __NR_COL ) && coluna checkbox RETURN(__NR_COL/1.75) ****************************************************************************** ****************************************************************************** FUNCTION Reglock(tempo,lAppend,cAREA) * Objetivo..: Tenta travar o registro atual *************************************************************************** LOCAL sempre //IF !cAREA == Nil // DbSelectArea(cAREA) //ENDIF sempre := (tempo = 0) cursorwait() DO WHILE (sempre .OR. tempo > 0) .AND. INKEY()<>27 IF !lAppend IF RLOCK() CursorArrow() RETURN(.T.) // bloqueado ENDIF ELSE DbAppend() // APPEND BLANK IF .NOT. NETERR() CursorArrow() RETURN(.T.) ENDIF ENDIF INKEY(.5) && espera 1/2 segundo tempo := tempo - .5 ENDDO CursorArrow() MsgAlert("O Arquivo "+Alias() +" nao está disponível. Operação cancelada !") RETURN(.F.) *************************************************************************** FUNCTION HeightLb( nHeight ) // Controle a altura da listbox // Criada em 25/01/2008 por João Freire IF nHeight <= 350 RETURN( nHeight * 0.391111 ) // 0.369649805 ELSE RETURN( nHeight * 0.418888 ) ENDIF *************************************************************************** FUNCTION xSetFocus( oObj ) // Força o retorno do foco para um determinado objeto, a partir de uma // sub-rotina chamada a partir de um GET; // substitui oLbx:setfocus() que nããããããão funciona. *---------------------------------------------------------------------------- LOCAL oTempo := '' DEFINE TIMER oTempo INTERVAL 10 OF oObj:oWnd; ACTION ( oObj:SetFocus(), oTempo:Deactivate() ) // ACTION ( oObj:SetFocus(), oObj:SetPos(0), oTempo:Deactivate() ) ACTIVATE TIMER oTempo Return( Nil ) ***************************************************************************** o bat: IF EXIST TESTSCAN.EXE DEL TESTSCAN.EXE set fwdir=c:\fwh1307 set hdir=c:\xharbour1307 set bcdir=c:\bcc582 %hdir%\bin\harbour testscan /n /i%fwdir%\include;%hdir%\include %2 %3 > testscan.log %hdir%\bin\harbour tscan /n /i%fwdir%\include;%hdir%\include %2 %3 > tscan.log %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include testscan.c > b32.bc %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include tscan.c > b32.bc Rem gerando .res sobre o arquivo .rc IF EXIST TESTSCAN.rc c:\bcc582\bin\brc32 -r TESTSCAN c:\bcc582\bin\ilink32 -Gn -aa -Tpe -s @Buildxgp.Lnk Echo . pause IF ERRORLEVEL 1 GOTO LINKERROR Cls Echo . Echo * Aplicacao Foi Desenvolvida Com Sucesso Echo . rem Echo * Aguarde um Momento, Compactando Aplicacao, Usando o UPX.EXE Echo . REM \PDVXB\UPX\UPX.EXE -9 CTB.EXE Echo . Echo * Aplicativo Foi Compactado Com Sucesso - Aguarde Execucao. Echo . Echo * Aguarde, Executando o Aplicativo, Gerado Com Sucesso Absoluto * GOTO EXIT :LINKERROR PAUSE * Applicacao Nao Foi Desenvolvida Com Sucesso. Veja ERRO.LOG * GOTO EXIT Echo. cls :EXIT o lnk: c:\bcc582\lib\c0w32.obj + testscan.obj + tscan.obj, + testscan.Exe, + testscan.Map, + c:\fwh1307\lib\fivehx.lib + c:\fwh1307\lib\fivehc.lib + twain.lib + c:\xharbour1307\lib\hbzip.lib + c:\xharbour1307\lib\zlib.lib + c:\xharbour1307\lib\rtl.lib + c:\xharbour1307\lib\vm.lib + c:\xharbour1307\lib\gtgui.lib + c:\xharbour1307\lib\lang.lib + c:\xharbour1307\lib\macro.lib + c:\xharbour1307\lib\rdd.lib + c:\xharbour1307\lib\dbfntx.lib + c:\xharbour1307\lib\dbfcdx.lib + c:\xharbour1307\lib\debug.lib + c:\xharbour1307\lib\common.lib + c:\xharbour1307\lib\tip.lib + c:\xharbour1307\lib\pp.lib + c:\xharbour1307\lib\dbffpt.lib + c:\xharbour1307\lib\codepage.lib + c:\xharbour1307\lib\hbsix.lib + c:\xharbour1307\lib\pcrepos.lib + c:\xharbour1307\lib\ct.lib + c:\xharbour1307\lib\png.lib + c:\bcc582\lib\cw32.lib + c:\bcc582\lib\psdk\msimg32.lib + c:\bcc582\lib\psdk\odbc32.lib + c:\bcc582\lib\psdk\rasapi32.lib + c:\bcc582\lib\psdk\nddeapi.lib + c:\bcc582\lib\psdk\psapi.lib + c:\bcc582\lib\psdk\iphlpapi.lib + c:\bcc582\lib\import32.lib,
  3. Boa tarde amigos. Estou chamando a função abaixo a partir de um BtnBmp numa dialog e quando acaba o lote de papel e retorna falso, o aplicativo volta minimizado. Alguém pode me informar como resolver isso? Obrigado STATIC FUNCTION Digitaliza(oLbxr,oDlgr) IF nNUMDOC = 0 MsgAlert("O número do documento deverá ser informado !") RETURN Nil ENDIF // nQTDSCAN := 0 WHILE .T. ++ nQTDSCAN cFilescan := STRZERO(nNUMDOC,8) + STRZERO(nQTDSCAN,2)+ ".Jpg" IF !MsScan( cFilescan ) // Esta chama a Tscan oLbxr:Refresh() oDlgr:SetFocus() // xSetFocus(oDlgr) EXIT ENDIF SEEK cFilescan IF REGLOCK(10,(EOF()) ) REPLACE NOMEARQ WITH cFilescan,DATA WITH DATE(),HORA WITH TIME() REPLACE STATUS WITH 1 DbUnlock() DbSkip(-5) oLbxr:Refresh() ENDIF ENDDO RETURN Nil
  4. rsrs eu entendi, vou fazer assim. Mas estava pensando na possibilidade de adicionar tudo em uma única página , pois entendo que se eu digitalizar um RG num A4, vai tomar o mesmo espaço de um documento A4 totalmente preenchido. Estou criando um aplicativo de controle de imagens digitalizadas, utilizando a tscan , onde o sistema gera um jpg para cada documento digitalizado e antes de enviar para web, gera um único pdf de um ou mais jpg, salvos pelo scanner. Ou seja, em alguns casos será apenas um documento, mas haverão casos em que poderão ser 5, 6, 7 documentos.
  5. Bom dia amigos. Será que é possível armazenar em um único oImg mais de uma arquivo jpg a serem impressos pela Tprint? Exemplo: Function Main() local oPrn, oImg1 DEFINE IMAGE oImg1 FILENAME "E:\Dicasfw\tscan32\Meustestes\Contratosocial.Jpg" + "E:\Dicasfw\tscan32\Meustestes\Test3.Jpg" PRINT oPrn NAME "Test" PREVIEW PAGE oPrn:SayImage( 0,0, oImg1, oImg1:nWidth * 2, oImg1:nHeight * 2 ) ENDPAGE ENDPRINT return nil
  6. Ops boa ideia. Pensei em oPrn:SayImage( ), mas como colocaria mais de um arquivo em um unico oImg?
  7. Boa tarde Developers. Alguém sabe me dizer se é possível capturar o conteúdo de mais de uma imagem e salvar em um único pdf? Exemplo: tenho um documento de uma coleta com 3 anexos e gostaria de salvá-los em um único pdf. Obrigado
  8. Venho aqui expressar os meus mais sinceros agradecimentos a sua grande ajuda. Já compilei e já fiz cuspir documentos digitalizados na hd. Todavia, jamais me esquecerei de todas as ajudas recebidas de tantos outros amigos aqui do forum, que foram importantíssimas para a minha migração do Clipper para o Five Win em 2007 e ao longo dessa estrada de muitos códigos fontes rsrsrs. Muito obrigado.
  9. Bom dia amigos. Alguém pode me passar o link de alguma classe em fw para scanners? Verifiquei em dicas a tscan, mas deu não encontrada. Tudo que eu preciso é algo que a partir do computador eu acione o scanner...exemplo, o usuário digita um número que seria o número do documento, coloca um ou mais documentos no scanner e aciona o escaneamento. Quanto ao controle dos documentos digitalizados, como renomear conforme o número do documento digitado pelo usuário eu farei via código. Toda ajuda será bem vinda. Obrigado
  10. Veja essas minhas funções que capturam blocos ou somente uma string do xml: #INCLUDE "FiveWin.ch" #define PAD_LEFT 0 #define PAD_RIGHT 1 #define PAD_CENTER 2 FUNCTION ImprimeXmlDanfe() cARQXML := " " cARQXML := cGetFile( "*.XML", "Selecione o arquivo" ) IF EMPTY(cARQXML) RETURN Nil ENDIF cTEXTXML:= MEMOREAD(cARQXML) PRINT oPrn NAME "Imprime Espelho da NF-e " PREVIEW MODAL oPrn:SetPage(9) // 1=Carta 9=A4 oPrn:SetLandscape() // Paisagem DEFINE FONT oFont NAME "ARIAL" SIZE 27,10 OF OPRN DEFINE FONT oFont12N NAME "ARIAL" SIZE 36,12 BOLD OF OPRN DEFINE FONT oFont10N NAME "ARIAL" SIZE 27,10 BOLD OF OPRN DEFINE FONT oFont10 NAME "ARIAL" SIZE 27,10 OF OPRN DEFINE PEN oPen WIDTH 2 OF oPrn Define Pen oPen1 style PS_DOT Width 1 Color CLR_HGRAY Of oPrn ResLinha := oPrn:nLogPixely()/2.54 ResColuna := oPrn:nLogPixelx()/2.54 oPrn:SetFont(oFont10N) nCOLE := 6 nITEM := 0 lEND := .F. WHILE !lEND PAGE nPROW := 0 // En MyBox(1.00,1.00,02.7,28) oPrn:CmSay(1.5,1.3,VEMPRES,oFont12N) oPrn:CmSay(1.5,14,"Data Impressão "+NOVADATA(DATE())) VARAUX1 := CaptBlocoXml( "<ide>","</ide>") oPrn:CmSay(2.0,1.3,"Espelho NF-e " +CaptBlocoStr("<cNF>","</cNF>")) oPrn:CmSay(2.0,14,"Emissão: " +CaptBlocoStr("<dhEmi>","</dhEmi>")) // MyBox(2.70,1.00,04.7,28) VARAUX1 := CaptBlocoXml( "<emit>","</emit>") oPrn:CmSay(3.0,1.3,"Emitente "+CaptBlocoStr("<xNome>","</xNome>")) oPrn:CmSay(3.5,1.3,"Endereço "+CaptBlocoStr("<xLgr>","</xLgr>")+" - "+; CaptBlocoStr("<nro>","</nro>") ) oPrn:CmSay(4.0,1.3,"Bairro "+CaptBlocoStr("<xBairro>","</xBairro>")+" - "+; CaptBlocoStr("<xMun>","</xMun>")+" - "+; CaptBlocoStr("<UF>","</UF>") ) // // Itens // nPROW := 04.5 MyBox(nPROW,01.00,nPROW+0.6,03.00," Quant",oFont10N,PAD_RIGHT) MyBox(nPROW,03.00,nPROW+0.6,04.00,"Unid",oFont10N,PAD_LEFT) MyBox(nPROW,04.00,nPROW+0.6,11.50,"Descrição dos Produtos",oFont10N,PAD_LEFT) MyBox(nPROW,11.50,nPROW+0.6,14.00,"Código",oFont10N,PAD_LEFT) MyBox(nPROW,14.00,nPROW+0.6,16.00,"Preço Unit",oFont10N,PAD_RIGHT) MyBox(nPROW,16.00,nPROW+0.6,18.00," Total Item",oFont10N,PAD_RIGHT) MyBox(nPROW,18.00,nPROW+0.6,19.00,"CST",oFont10N,PAD_RIGHT) MyBox(nPROW,19.00,nPROW+0.6,20.50,"Ncm",oFont10N,PAD_RIGHT) MyBox(nPROW,20.50,nPROW+0.6,21.50,"Icms",oFont10N,PAD_RIGHT) MyBox(nPROW,21.50,nPROW+0.6,23.00,"Red Icm",oFont10N,PAD_RIGHT) MyBox(nPROW,23.00,nPROW+0.6,24.50,"Alq Pis",oFont10N,PAD_RIGHT) MyBox(nPROW,24.50,nPROW+0.6,28.00,"Alq Cofins",oFont10N,PAD_RIGHT) // nPROW += 0.6 MyBox(nPROW,1.00,20.0,28) nPROW += 0.2 nITEMPAG := 0 WHILE !lEND .AND. nITEMPAG < 29 // <det nItem="1"> ++ nITEM ++ nITEMPAG cITEMI := '<det nItem="' + LTRIM(STR(nITEM,3)) + '">' cITEMF := '<det nItem="' + LTRIM(STR(nITEM+1,3)) + '">' IF AT(cITEMF,cTEXTXML) = 0 // <transp> cITEMF := "<transp>" lEND := .T. ENDIF VARAUX1 := CaptBlocoXml( cITEMI,cITEMF) oPrn:CmSay(nPROW,02.8,CaptBlocoStr("<qTrib>","</qTrib>"),oFont,,,,PAD_RIGHT) oPrn:CmSay(nPROW,03.2,CaptBlocoStr("<uCom>","</uCom>"),oFont ) oPrn:CmSay(nPROW,04.1,CaptBlocoStr("<xProd>","</xProd>"),oFont) oPrn:CmSay(nPROW,11.55,CaptBlocoStr("<cProd>","</cProd>",9),oFont ) oPrn:CmSay(nPROW,15.98,CaptBlocoStr("<vUnCom>","</vUnCom>"),oFont,,,,PAD_RIGHT ) oPrn:CmSay(nPROW,17.98, CaptBlocoStr("<vProd>","</vProd>"),oFont,,,,PAD_RIGHT ) oPrn:CmSay(nPROW,18.96, CaptBlocoStr("<CST>","</CST>"),oFont,,,,PAD_RIGHT ) oPrn:CmSay(nPROW,19.07, CaptBlocoStr("<NCM>","</NCM>"),oFont ) oPrn:CmSay(nPROW,20.56, CaptBlocoStr("<pICMS>","</pICMS>"),oFont ) oPrn:CmSay(nPROW,22.97, CaptBlocoStr("<pRedBC>","</pRedBC>"),oFont,,,,PAD_RIGHT ) oPrn:CmSay(nPROW,24.47, CaptBlocoStr("<pPIS>","</pPIS>"),oFont,,,,PAD_RIGHT ) oPrn:CmSay(nPROW,27.40, CaptBlocoStr("<pCOFINS>","</pCOFINS>"),,,,PAD_RIGHT ) nPROW += 0.5 IF !lEND LH(nPROW-0.1,1.1,27.9,12,oPen1) ENDIF ENDDO ENDPAGE ENDDO ENDPRINT RETURN Nil ***************************************************************************** FUNCTION CaptBlocoXml(cBEGINBL,cENDBL) LOCAL nLENST LOCAL nPOSII := AT(cBEGINBL,cTEXTXML) LOCAL nPOSIF := AT(cENDBL,cTEXTXML) IF nPOSII = 0 .OR. nPOSIF = 0 RETURN(" ") ENDIF nLENST := nPOSIF+1 - nPOSII RETURN( SUBSTR(cTEXTXML,nPOSII,nLENST) ) ***************************************************************************** FUNCTION CaptBlocoStr(cBEGINBL,cENDBL,lLENMAX) LOCAL nLENST LOCAL nPOSII := AT(cBEGINBL,VARAUX1) LOCAL nPOSIF := AT(cENDBL,VARAUX1) IF nPOSII = 0 .OR. nPOSIF = 0 RETURN(" ") ENDIF nPOSII += LEN(cBEGINBL) // Exemplo: <xNome>DEFAL COMERCIO ATACADISTA DE BEBIDAS E ALIMENTOS LTDA</xNome> nLENST := nPOSIF - nPOSII IF !lLENMAX == Nil .AND. nLENST > lLENMAX nLENST := lLENMAX ENDIF RETURN( SUBSTR(VARAUX1,nPOSII,nLENST) ) ***************************************************************************** FUNCTION MyBox(nLinI,nColI,nLinF,nColF,cTITULO,oFONT,PADSEL,cCONTEUDO) // 1º 2º 3º 4º 5º 6º 7º 8º // // Oitavo parâmetro de mybox escrito em 15/06/2011 na techlix as 10:23 // LOCAL nCOL := nColI,nPROWI := nLinI DEFAULT PADSEL := 0 IF PADSEL = 1 // PAD_RIGHT nCOL := nColF - 0.1 ELSE nCOL := nColI + 0.1 ENDIF IF nLinF > 0.00 oPrn:Cmtr2Pix(@nLinI, @nColI) oPrn:cmtr2Pix(@nLinF, @nColF) oPrn:Box(nLinI, nColI, nLinF, nColF, oPen ) ENDIF IF cTITULO # Nil IF VALTYPE(cTITULO) == "C" oPrn:CmSay(nPROWI+0.1,nCOL,cTITULO,oFONT,,,,PADSEL) ELSE // Array oPrn:CmSay(nPROWI-0.1,nCOL,cTITULO[1],oFONT,,,,PADSEL) oPrn:CmSay(nPROWI+0.1,nCOL,cTITULO[2],oFONT,,,,PADSEL) ENDIF ENDIF IF cCONTEUDO # Nil oPrn:CmSay(nPROW+0.5,nCOL,cCONTEUDO,oFONT,,,,PADSEL) ENDIF RETURN Nil *************************************************************************** FUNCTION Lh(nLinI,nColI,nColF,LenFnt,oPensel) // Logica Quanto maior o divisor menor é a linha LOCAL nLinF DEFAULT LenFnt := 10 IF LenFnt = 12 nLinI := nLinI // / 2.355 // VARAUX2 // em PDF muda. Verificar ELSEIF LenFnt = 10 nLinI := nLinI / 2.820 // VARAUX2 // em PDF muda. Verificar ELSE nLinI := nLinI / 2.815 // em PDF muda. Verificar ENDIF nLinF := nLinI + 0.01 oPrn:Cmtr2Pix(@nLinI, @nColI) oPrn:cmtr2Pix(@nLinF, @nColF) oPrn:Box(nLinI, nColI, nLinF, nColF, IF( oPensel == Nil,oPen,oPensel) ) RETURN Nil ***************************************************************************
  11. Entendi, mas não funciona porque o tipo de dado não retorna caractere, retorna um tipo "T".
  12. Boa noite amigos. Estou tentando importar uma planilha de excel gerada por um tal de Totvs rsrs e dar um erro quando chega no campo de formato data 99/99/99 00:00:00. Tentei tratar com CTOD() mas ele não aceita o tipo que aparece como T de time. Existe alguma forma de tratar esse tipo de dados e transformar em data? Obrigado pessoal Boa Noite
  13. Mas João, essa é do ECF e não do Sat.
  14. Valeu Kapiaba. thaks
  15. Boa noite amigos. Alguém tem algum exemplo de cupom fiscal eletrônico na impressora Sweda SI-300S? Obrigado
  16. Pode crer, Muito bom isso. Eu uso a classe do grande Gilmer + Flexdocs para mandar para o Ginfes em dois clientes que emitem muitas nfs-e em Mauá e São Caetano.
  17. Obrigado por enquanto amigos. Vou dar uma olhada e qualquer coisa eu disponibilizo ok.
  18. Bom dia. Temos aqui na empresa um software que aciona o escaneamento num scaner Kodak I900, de modo que a cada digitalização o sistema captura um código de barras etiquetado no documento e salva esse código na base de dados. Alguém tem ideia de como fazer isto?
  19. Isso mesmo. Mas eu tenho que exportar para um tipo p12 com extensão .Pfx.
  20. A Ka Solution e Impacta são boas. Mas também te aconselho a adquirir uns bons livros. No meu caso, como eu vou migrar para mysql, então comprei livros de Mysql com Workbench.
  21. Olá pessoal. Atualmente, para gerar o código de vinculação do Sat, aquele de 344 caractere, gerado a partir do meu cnpj e do cnpj do emitente do CF-e utilizo um software da empresa tanca http://www.tanca.com.br. O problema que que precisa gerar um certificado pfx e não me lembro mais as opção a serem selecionadas lá na I.E. na opção Exportar. Duvidas: 1:Devo exportar chave privada ou não 2:Marco Incluir todos os certificados no caminho de certificação se possível ? 3:Marco Excluir chave privada se a exportação tiver exito ? 4: Marco Exportar todas as propriedades estendidas ? São essas as dúvidas Obrigado
  22. Em caso de tabelas grandes isto acontece mesmo. Resolvi assim: lWHITE := .F. DEFINE DIALOG oDlg RESOURCE "ACERTEST" FONT oFONTSCR OF oWnd REDEFINE LISTBOX oLbx; FIELDS DTOC(ARQACER->VENDAT),ARQACER->VENDOCT,LEFT(ARQACER->VENNPROD,39),STR(ARQACER->VENQTDE,8,1),STR(ARQACER->USUARIO,3),ARQACER->VENPROD,ARQACER->VENMOTIV; SIZES 56, 320; HEADERS "DATA","DOCUMENTO","PRODUTO"," QTDE"," US","CODIGO","MOTIVO"; ID 101 OF oDlg COLORS CLR_FONLBX,CLR_FUNLBX REDEFINE BUTTON ID 102 OF oDlg ACTION SeleOpcAc(0,"I",oLbx,oDlg) // Sua function de inclusao REDEFINE BUTTON ID 103 OF oDlg ACTION ( oDlg:End() ) oLbx:bKeyDown := { | nKey | SeleOpcAc(nKEY," ",oLbx,oDlg) } oLbx:nClrPane := { || IIF( lWHITE,(lWHITE := .F.,CLR_FUNLBX),(lWHITE := .T.,CLR_FUNLBX2)) } ACTIVATE DIALOG oDlg CENTERED // Ativa a janela de dialog
  23. Boa tarde pessoal. Existe alguma rotina para capturar dados cadastrais da receita federal? Desde já agradeço as dicas
×
×
  • Create New...