Jump to content
Fivewin Brasil

giovanyvecchi

Membros
  • Posts

    793
  • Joined

  • Last visited

  • Days Won

    13

Posts posted by giovanyvecchi

  1. Faço assim hoje

     

    Class P_PortalCartasAnuPdfImp
    
       Data oDb_Protesto
       Data oDb_ProtestoAcervos
    
       Data oSf_MyEdgeWeb                        //Objeto MyEdgeWeb com a pagina da Cenprot apresentada atualmente em focus
       
       Data oXmlToDbf                            As Object 					//Objeto de XmlToDbf
       Data aPdfsFoundsUrlsAndChaveUnica         As Array    Init {}     //{Url DownLoad, Chave Unica, RotaArquivo, nApontamento, lBaixado } Pdfs das cartas de anuencias encontradas
                                                                         //Par 1-Url do pdf para ser baixado
                                                                         //Par 2-Chave unica referente o pdf encontrado
                                                                         //Par 3-Caminho completo e nome do pdf a ser baixado em Downloads
                                                                         //Par 4-Numero do apontamento
                                                                         //Par 5-Se foi baixado
    
       Data nPdfsEncontrados                     As Integer  Init 0      //Quantos arquivos foram encontrados
       Data nPdfsJaIncluidos                     As Integer  Init 0      //Quantos arquivos ja foram incluidos (repetidos)
       Data nPdfsNovos                           As Integer  Init 0      //Quantos arquivos novos incluidos
       Data nPdfsErros                           As Integer  Init 0      //Quantos arquivos com erros  
    
       Data cUrlFileDownBase64Decode             As String   Init ""     //Url do arquivo a ser baixado decodificado 
       Data eFlagUrlExtractInfo                  As CodeBlock Init    {|_cHtmlBlock|TXT_StrExtractTxt(_cHtmlBlock,;
                                                                                     "window.open('",;
                                                                                     "', '_self",;
                                                                                     190,;
                                                                                     {" "})}
    
    
       Method New() Constructor
       Method End()
    
       Method P_PortalCartasAnuPdfImp_Start()
       Method P_PortalCartasAnuPdfImp_DadosExtract()
       Method P_PortalCartasAnuPdfImp_DadosDownLoad()
       Method P_PortalCartasAnuPdfImp_DadosGravar()
    
    EndClass

     

  2. Se quer o nome da variavel Get que esta em focus é assim

     

    define dialog memvar->dl_det_nf3 from 00,01 TO 37,120 ;
      title memvar->te_cab2 ;
      font memvar->rec_for
    
      @ linha,00 say "it " of dl_det_nf3 pixel
      @ linha,coluna+(sal_col*3) say "Descricao" of dl_det_nf3 pixel
      @ linha,coluna+(sal_col*45) say "Largura" of dl_det_nf3 pixel
      @ linha,coluna+(sal_col*55) say "Comprim" of dl_det_nf3 pixel
      @ linha,coluna+(sal_col*65) say "altura." of dl_det_nf3 pixel
      @ linha,coluna+(sal_col*75) say "Peso   " of dl_det_nf3 pixel
      @ linha,coluna+(sal_col*85) say "Sem Peso" of dl_det_nf3 pixel
      linha += sal_lin
      coluna = sal_col
    
      for i = 1 to 10
        te_desc  := "desc_"+strzero(i,2)
        te_larg  := "larg_"+strzero(i,2)
        te_comp  := "comp_"+strzero(i,2)
        te_altu  := "altu_"+strzero(i,2)
        te_peso  := "peso_"+strzero(i,2)
        te_tem   := "tem_"+strzero(i,2)
        te_l_tl  := "lintel_"+strzero(i,2)
        te_c_tl  := "lintel_"+strzero(i,2)
        &te_desc := space(50)
        &te_larg := 0
        &te_comp := 0
        &te_altu := 0
        &te_peso := i
        &te_tem  := .f.
        &te_l_tl := "oget"+strzero(i,2)
        @ linha,00 say strzero(i,2) size sal_col*03,10 of dl_det_nf3 pixel
        @ linha,coluna+(sal_col*03) get &te_desc picture "@!" size sal_col*40,10 of dl_det_nf3 pixel
        @ linha,coluna+(sal_col*45) get &te_larg picture "@E 9999.999" size sal_col*09,10 of dl_det_nf3 pixel
        @ linha,coluna+(sal_col*55) get &te_comp picture "@E 9999.999" size sal_col*09,10 of dl_det_nf3 pixel
        @ linha,coluna+(sal_col*65) get &te_altu picture "@E 9999.999" size sal_col*09,10 of dl_det_nf3 pixel
        @ linha,coluna+(sal_col*75) get &te_l_tl var &te_peso picture "@E 9999.999" size sal_col*09,10 of dl_det_nf3 pixel
        @ linha,coluna+(sal_col*85) checkbox &te_tem prompt "Sem Peso" size sal_col*10,sal_lin of dl_det_nf3 pixel
        
        linha += sal_lin*2
    
      next
    
      memvar->lin_mar = linha+sal_lin*23
      memvar->col_mar = coluna*155
    
      @ linha,coluna+(sal_col*15) button "&Finaliza"  of dl_det_nf3 pixel size sal_col*10,10 action grav_ped()
    
       dl_det_nf3:bkeydown := <|nkey|
          Local _cNameVarRet := ""
    
          if nkey == VK_F5
             AEval(dl_det_nf3:aControls,<|_aCtrl|
                If _aCtrl:ClassName() == "TGET"            
                   If _aCtrl:lFocused
                      _cNameVarRet := _aCtrl:oGet:nAme
                   EndIf
                EndIf  
                Return Nil
             >)
             ? _cNameVarRet          
     	  EndIf
          Return Nil
       > //cEnd
    
    activate dialog dl_det_nf3 centered
    
    Return nil

     

  3. Ola, se quiser colocar em uma coluna do xBrowse com botão do lado faz assim

     

    		lc_aColunaDtImagem := ::oBrw3161_AgentesDocImgs:AddCol()
    			With Object lc_aColunaDtImagem
    				:bStrData         := {||::oDsTmp_AgenteCNHImgs:N_AGE_CNHIMGS_dImagemData}
    				:cHeader          := "Dt. Foto "
    				//:cToolTip         := ""
    				:nWidth           := 118
    				:nDataStrAlign    := AL_RIGHT
    				:nHeadStrAlign    := AL_RIGHT
    				// Propriedades Inicio
    
    				:nEditType        := EDIT_BUTTON 
    				:AddResource("B16_NADA") // Bitmaps
    				:AddResource("B16_NOVO") // Bitmaps
    				:AddResource("B16X_AGENTEFOTOUP") // Bitmaps
    				:AddResource("B16_BORRACHA") // Bitmaps
    				:AddResource("B16_NADA") // Bitmaps
    				:AddResource("B16_NADA") // Bitmaps
    				:AddResource("B16_SETABAIXO") 
    				:nBtnBmp          := 7
    				:nBtnWidth        := 20
    				:bEditBlock       := <|nHandle,nHWnd,oSelfBtn|
    					Local _oMenuFotos, _aCursorPosicao := {20,12} //Linha, Coluna
    					Local _lTmp := .F., _aMenuItem := Array(4)
    				  
    					MENU _oMenuFotos POPUP 2015 
    				  
    						If ::oDsTmp_AgenteCNHImgs:N_AGE_CNHIMGS_nSeqAuto > 0
    							MENUITEM _aMenuItem[1] Prompt "Marcar imagem do documento para exclusão" OF _oMenuFotos Resource "B16M_DELETE"  
    								_aMenuItem[1]:bAction := <||
    									If MsgNoYes("O registro da imagem da CNH será marcada para exclusão após "+;
    													"a confirmação do procedimento."+CRLF+CRLF+;
    													"Deseja marcar a imagem da CNH para exclusão ?",;
    													"Atenção, Responda.")
    										::oDsTmp_AgenteCNHImgs:VarPut("nFlagProcess",4)
    									EndIf
    									::oBrw3161_AgentesDocImgs:Refresh()
    									::oBrw3161_AgentesDocImgs:SetFocus()
    									Return Nil  
    								> //cEnd
    							
    							If !::oDsTmp_AgenteCNHImgs:N_AGE_CNHIMGS_lCCN_Enviar
    								MENUITEM _aMenuItem[2] Prompt "Colocar na fila para envio ao CCN" OF _oMenuFotos Resource "B16M_AgenteFotoUp"
    									_aMenuItem[2]:bAction := <||
    										If MsgYesNo("Deseja incluir na fila para a imagem da CNH ser enviada para o CCN ?",;
    														"Atenção, Responda.")
    											::oDsTmp_AgenteCNHImgs:VarPut("N_AGE_CNHIMGS_lCCN_Enviar",.T.)
    										EndIf
    										::oBrw3161_AgentesDocImgs:Refresh()
    										::oBrw3161_AgentesDocImgs:SetFocus()
    										Return Nil  
    									> //cEnd
    							else
    								MENUITEM _aMenuItem[3] Prompt "Tirar da fila de envio ao CCN" OF _oMenuFotos Resource "B16M_BORRACHAREMOVE"   
    									_aMenuItem[3]:bAction := <||
    										If MsgYesNo("Deseja desmarcar o envio da imagem da CNH para o CCN ?",;
    														"Atenção, Responda.")
    											::oDsTmp_AgenteCNHImgs:VarPut("N_AGE_CNHIMGS_lCCN_Enviar",.F.)
    										EndIf
    										::oBrw3161_AgentesDocImgs:Refresh()
    										::oBrw3161_AgentesDocImgs:SetFocus()
    										Return Nil  
    									> //cEnd
    
    							EndIf
    								
    						EndIf
    
    						If ::oDsTmp_AgenteCNHImgs:N_AGE_CNHIMGS_nSeqAuto == -1
    							MENUITEM _aMenuItem[2] Prompt "Excluir a imagem recém incluída" OF _oMenuFotos Resource "B16M_BORRACHA"
    								_aMenuItem[2]:bAction := <||
    									If MsgYesNo("Deseja excluir a imagem recém incluída ?",;
    													"Atenção, Responda.")
    										::oDsTmp_AgenteCNHImgs:Delete()
    										::oBrw3161_AgentesDocImgs:GoUp()
    									EndIf
    									::oBrw3161_AgentesDocImgs:Refresh()
    									Eval(::oBrw3161_AgentesDocImgs:bChange)
    									::oBrw3161_AgentesDocImgs:SetFocus()
    									Return Nil  
    								> //cEnd
    						EndIf
    
    					ENDMENU  
    					ACTIVATE POPUP _oMenuFotos AT _aCursorPosicao[1], _aCursorPosicao[2] ;
    						OF oSelfBtn:oBtnElip 
    				
    					Return Nil
    				> //cEnd
    				:bBmpData         := <||
    					Local nLedBmp := 1
    					If ::oDsTmp_AgenteCNHImgs:nFlagProcess == 2 // Inclusão
    						nLedBmp := 2 
    					ElseIf ::oDsTmp_AgenteCNHImgs:nFlagProcess == 4 // Exclusão
    						nLedBmp := 4 
    					EndIf
    					Return nLedBmp
    				> //cEnd
    				// Propriedades Final  
    			End With 		

     

    ExemploMenuXbrw.png

  4. Como trabalho com sistemas para Cartórios as informações exigidas foram as seguintes.

    1-Tipo do servidor de rede (dedicado ou não) com acesso restrico com senha por um funcionário da própria empresa que tem que ter certificado emitido pela Sebrae

    https://sebrae.com.br/sites/PortalSebrae/cursosonline/lgpd-a-sua-empresa-esta-preparada,368d00cac30a5710VgnVCM1000004c00210aRCRD

    2-Exigencia de backup em mídia externa (hd externo) com frequencia de pelo menos 24 horas

    3-Exigencia de backup nuvem com frequencia de pelo menos 24 horas

    4-Servidor reserva caso o primeiro falhe.

    Até ai é facil. conforme o ramo não sei se é nescessário outras exigencias tipo banco de dados com auditoria

    Os relatórios e documentos que não pertencem exclusivamente ao portador das informações pessoais contidas nestes documentos, relatórios, rascunhos etc não podem ser apresentados de forma integra (cpf completo, endereço, e-mail etc). Somente documentos de importancia financeira e juridica onde o portador adquire para validade exclusiva à sua necessidade.

    Quem monta o documento de regularização é o contador da empresa que pede as informações do sistema para a softhouse.

    A softhouse apenas tem que adaptar o sistema para efetuar as restrições da LGPD. 

  5.  

    4 minutos atrás, sunset disse:

    Entendi, mas isso causaria o erro intermitente numa maquina ok e em outra com problema?

    Não tenho problemas com recursos em nenhuma ocasião. Os erros podem aparecer se você não chamar algum controle não registrado dentro do dialogo. 

  6. 1 hora atrás, sunset disse:

    Eu uso o arquivo.RES dentro do xDev então ele gera o arquivo.bat e nele, o bat usa o BCC32 e o harbour

    link do bat https://1drv.ms/u/s!As_iw5bOyRLkkJkrmu-BQf8_xLUcUA?e=u89rcp

     

    Se você contruir um arquivo .rc que é texto e não é compilado para .RES no PellesC, você tem que gerar o .RES por ele mesmo porque as definições das variaveis são diferentes do BCC que usa o BRC32 para gerar o .RES do arquivo .RC.

    Ou você usa o PellesC e edita o arquivo .RES diretamente e ja compilado, ou edita em .RC e na compilação usa o comando que citei acima.

    A vantagem de usar .RC é que voce terá controle de versão caso use Github. Eu faço desta maneira.

    O padrão de definições das variaveis do PellesC são as mesmas da Microsoft Visual C (MSVC) para quem usa Visual Studio para gerar o programa como eu. Neste caso você pode contruir os arquivos .RC no pellesC que o CVTRES.EXE é chamado automaticament pelo CL.EXE gerando os arquivos .RES compativeis ao MSVC para geração do seu executavel.

    Os arquivos .RES já compilados pelo Workshop ou outro editor de recursos do padrã Borland não são incorporados no executavel gerado pelo MSVC. O mesmo causa um erro no Link. 

    Baixe um demonstrativo que postei no forum internacional que no programinha que fiz tem um arquivo .RC feito no PellesC e compilado com MSVC.

    https://github.com/FiveTechSoft/FWH_tools/blob/master/giovany_tsttheme.zip

  7. Eu que tenho sistemas para cartórios a responsabilidade dos usuários é bem complicada.

    Tenho 4 métodos para gerenciar senhas

    1-O usuário loga com a senha no sistema e tudo fica registrado no seu login. Porem se ele deixar o programa aberto outro pode fazer qualquer coisa em nome dele.

    2-Todos os procedimentos de lançamentos, inclusões, alterações etc pede a senha novamente. Isto serve para os computadores onde varios usuarios acessam.

    3-Todos os procedimentos nescessitam que passe o cartão RFid registrado para cada usuário.

    4-Logon e reconhecimento do serial de um pendrive pessoal do usuario. O programa funcionara somente se o PenDrive estiver conectado no micro. (Veja em \Samples protect.prg)

     

    Na minha opnião o melhor método é o cartão RFid quando varias pessoas acessam o mesmo micro.

  8. Ola. Testa estas funções aqui

    #define LEVEL_L 0 // 7%
    #define LEVEL_M 1 // 15%
    #define LEVEL_Q 2 // 25%
    #define LEVEL_H 3 // 30%
    
    #define ENC_ALPHA 0 // encodes alphanumeric characters (digits 0 - 9; upper case letters A -Z; nine other characters: space, $ % * + - . / : ); )
    #define ENC_BYTE 1    // encodes binary values ( 8-bit data)
    #define ENC_NUMERIC 2 // encodes numeric values only (digits 0-9)
    #define ENC_KANJI 3   // encodes Kanji characters. Kanji characters in QR Code can have values 8140 -9FFC and E040 - EBBF
    #define ENC_AUTO 4    // automatic seleccion of the encoding algorithm
    
    ///////////////////////////////////////////////////////////////////////////////
    FUNCTION QR_CODE_FULL_PNG(f_cString, f_cFileRoot, f_nSizePixel, f_nLevel)
       Local lc_cFileOut := "", lc_oImage
       
       Default f_nSizePixel := 180, f_nLevel := 0
       
       if File(f_cFileRoot)
          fErase(f_cFileRoot)
       EndIf
    
       lc_cFileOut := TXT_CHAR_CLEAN(f_cFileRoot,{".bmp",".BMP","Bmp"})+".png"
    
       FullQRCodeMy(.T.,;
                       .f.,;
                       CLR_WHITE,;  // backColor
                       CLR_BLACK,;        // barColor
                       f_cString,; // Texto
                       f_nLevel,;   // correctionLevel
                       ENC_AUTO,;  // encoding
                       2,;   // marginpixels
                       2,;   // moduleWidth
                       f_nSizePixel ,; // Height
                       f_nSizePixel ,; // Witdh
                       f_cFileRoot) 
    
       lc_oImage := tImage():Define(,f_cFileRoot) 
       lc_oImage:SaveImage( lc_cFileOut, 13,0 )
       lc_oImage:End()
    
       fErase(f_cFileRoot)
    
    RETURN lc_cFileOut
    ///////////////////////////////////////////////////////////////////////////////
    DLL32 Function FullQRCodeMy(autoConfigurate AS BOOL,;
                                  AutoFit AS BOOL ,;
                                  backColor AS _INT ,;
                                  barColor AS _INT ,;
                                  Texto AS LPSTR ,;
                                  correctionLevel AS _INT,; // Pode ser Low, Medium, High e VeryHigh
                                  encoding AS _INT, ;
                                  marginpixels AS _INT,;
                                  moduleWidth AS _INT,;
                                  Height AS _INT,;
                                  Width AS _INT,;
                                  FileName AS LPSTR ) AS LONG PASCAL FROM "FullQRCode" LIB "QRCodelib.dll"
    
    ///////////////////////////////////////////////////////////////////////////////
    FUNCTION TXT_CHAR_CLEAN(f_cTxt,f_aCaracteresRetira)
    	Local cTxtRetorno := f_cTxt, iFor := 0
    	
    	For iFor := 1 To Len(f_aCaracteresRetira)
    		 cTxtRetorno := StrTran(cTxtRetorno,f_aCaracteresRetira[iFor],"")
    	Next
    	 
    RETURN cTxtRetorno

     

  9. Kapi, usa a classe tMail do Fivewin

             _oMailMapi := tMail():New(/*cSubject*/,;
                                        ::cTxtPassWord,;
                                        /*cMsgType*/,;
                                        /*cConversationID*/,;
                                        Date(),;
                                        Time(),;
                                        /*lReceipt*/,;
                                        .T./*lFromUser*/,;
                                        /*aOrigin*/,;
                                        /*aRecipients*/,;
                                        ::aFilesAnexoOutlook /*aFiles*/)
             
             _oMailMapi:Activate()
    
             _oMailMapi:End()

     

  10. Ola. Primeiramente vc tem que gerar os arquivos binários do recurso. De RC para RES

    Use este comando:

    C:\PELLESC\BIN\PORC.EXE -r -iC:\PELLESC\INCLUDE\WIN -iC:\PELLESC\INCLUDE SeuArquivo.rc

    e no arquivo make aponte o arquivo binário .RES

    Caso você use HbMake você terá que usar 2 arquivos .HBP. Um para recursos e outro para PRGS e arquivos RES

  11. Estes problemas de e-mail sempre acontecem.

    Ja faz 4 anos que uso o thunderbird. É só configurar ele e depois usar o MAPI do Fivewin

    Ex:

        _oMailMapi := tMail():New(/*cSubject*/,;
                                  ::cTxtPassWordsPdfs,;
                                  /*cMsgType*/,;
                                  /*cConversationID*/,;
                                  Date(),;
                                  Time(),;
                                  /*lReceipt*/,;
                                  .T./*lFromUser*/,;
                                  /*aOrigin*/,;
                                  /*aRecipients*/,;
                                  ::aFilesAnexoOutlook /*aFiles*/)
    			
    	_oMailMapi:Activate()
    
    	_oMailMapi:End()

    O chato é ficar instalando no cliente, mais depois de configurar nunca mais vão encher o saco dnovo.

    Para baixar o ThunderBird é aqui: https://www.thunderbird.net/pt-BR/

×
×
  • Create New...