Jump to content
Fivewin Brasil

kapiaba

Membros
  • Posts

    24,540
  • Joined

  • Last visited

  • Days Won

    282

Posts posted by kapiaba

  1. #include "FiveWin.ch"
    
    FUNCTION Main()
    
       LOCAL cCodBar
    
       cCodBar := '07033071756'
       // cCodBar := '78900073' // MARLBORO MACO BRANCO
    
       IF .NOT. ValidaEAN( @cCodbar )
    
          MsgStop( "Código de Barras Invalidado!", "Erro Fatal" )
    
       ELSE
    
          MsgStop( "Código de Barras Validado!", "Sucesso!" )
    
       ENDIF
    
    RETURN NIL
    
    Function ValidaEAN(cCodigoBarras)
    
       LOCAL nInd     := 0
       LOCAL nUnidade := 0
       LOCAL nDigito  := 0
       LOCAL lRet     := .F.
       LOCAL aPosicao[12]
    
       If StrZero(Len(Trim(cCodigoBarras)), 2,0) $ "13"
    
          For nInd := 1 to 12
    
             aPosicao[nInd] := Val(SubStr(cCodigoBarras, nInd, 1))
    
          Next
    
          nUnidade := Val(Right(Str(((aPosicao[2]+aPosicao[4]+aPosicao[6]+aPosicao[8]+aPosicao[10]+aPosicao[12])*3) + ( aPosicao[1]+aPosicao[3]+aPosicao[5]+aPosicao[7]+aPosicao[9]+aPosicao[11])), 1))
    
          nDigito  := If((10-nUnidade ) > 9, 0, 10-nUnidade)
    
          lRet     := nDigito = Val(Right(AllTrim(cCodigoBarras), 1))
    
          IF( .NOT. lRet, Alert("Exigencia NF-e * O digito verificador esta incorreto !; Digito Verificador Correto:" + STR(nDigito,2)),)
    
       Else
    
          RETURN( .T. )
    
       EndIf
    
    Return( lRet )
    
    /* // OU:
    FUNCTION ValidaEAN( cCodBar )
    
       LOCAL nInd     := 0
       LOCAL nUnidade := 0
       LOCAL nDigito  := 0
       LOCAL lRet     := .T.
       LOCAL aPosicao[ 12 ]
    
       IF Empty( cCODBAR )
    
          MsgStop( "Código de Barras está Vazio, Verifique!", "Error" )
    
          lRet := .F.
    
          RETURN( lRet )
    
       ENDIF
    
       cCodbar := StrZero( Val( AllTrim( cCodbar ) ), 13, 0 )
    
       FOR nInd := 1 TO 12
    
          aPosicao[ nInd ] := Val( SubStr( cCodbar, nInd, 1 ) )
    
       NEXT
    
       nUnidade := Val( Right( Str( ( ( aPosicao[ 2 ] + aPosicao[ 4 ] + aPosicao[ 6 ] + aPosicao[ 8 ] + aPosicao[ 10 ] + aPosicao[ 12 ] ) * 3 ) + ( aPosicao[ 1 ] + aPosicao[ 3 ] + aPosicao[ 5 ] + aPosicao[ 7 ] + aPosicao[ 9 ] + aPosicao[ 11 ] ) ), 1 ) )
    
       nDigito  := If( ( 10 - nUnidade ) > 9, 0, 10 - nUnidade )
    
       lRet := nDigito = Val( Right( AllTrim( cCodbar ), 1 ) )
    
    RETURN( lRet )
    */
    
    // FIN / END

     

  2. 18 horas atrás, joaosolution disse:

    Muito obrigado pelas dicas.

    João ainda bem que vc está longe se estivesse perto te dava um beijo. Procurei muito a pdflib e não encontrei

    Emotta obrigado pelas dicas.

    Abraços

     

     

    KKKKKKKKKKKKKK, é só mandar as passagens de AVIÃO, que eu vou com o Emotta. kkkkkkkkkkkkkkkkkkkkkk

  3. A única forma que funciona corretamente, é usando BUTTONBAR com esta versão velha sem modificar a classe.
    
    #include "FiveWin.ch"  // TIM.PRG modificado.
    
    FUNCTION Main()
    
       LOCAL oDlg, oFld
       LOCAL oGet, oCbx
       LOCAL nVar  := 900
       LOCAL cVar  := "Three"
    
       DEFINE DIALOG oDlg SIZE 500, 300
    
       // @ 2, 1 FOLDER oFld ITEMS "One", "Two", "Three" SIZE 240, 95
    
       // @ 10,160 GET oGet VAR nVar PICTURE "999" SIZE 50,20 PIXEL RIGHT OF oBar ;
       // VALID ( MsgInfo( nVar ), .t. )
    
       @ 30, 40 COMBOBOX oCbx VAR cVar ITEMS { "One", "Two", "Three" } ;
          SIZE 90, 200 PIXEL OF oDlg                                  ;
          ON CHANGE( MsgInfo( cVar ), .T. ) UPDATE
    
       @ 7.3, 17 BUTTON "Ok" ACTION oDlg:End()
    
       ACTIVATE DIALOG oDlg CENTERED ;
          ON INIT ( BuildBar( oDlg ) )
    
    // ON INIT ( BuildBar( oDlg ), AEval( oFld:aDialogs, { | oDlg | BuildBar( oDlg ) } ) )
    
    RETURN NIL
    
    FUNCTION BuildBar( oDlg )
    
       LOCAL oBar
    
       DEFINE BUTTONBAR oBar OF oDlg SIZE 40, 40 2007
    
       DEFINE BUTTON OF oBar
    
       DEFINE BUTTON OF oBar
    
       DEFINE BUTTON OF oBar
    
    RETURN NIL
    
    Regards, saludos.

     

  4. Mistério do kralho.... kkkkkkkkkkkkkkk
    
    O estranho, é que se eu parto de um botão, funciona em FWH1307 sem problemas.
    
    // C:\FWH\SAMPLES\TESTECMB.PRG
    
    #include "FiveWin.ch"
    #include "DbCombo.Ch"
    
    FUNCTION TESTECOMBO()
    
       LOCAL oDlg,  cOrder := "", oCbx, cTitle, oButton
    
       cTitle := "COMBOBOX MODIFICADO by kapiabafwh@gmail.com"
    
       DEFINE DIALOG oDlg SIZE 600, 400 TITLE cTitle
    
       oDlg:lHelpIcon := .F.
    
       @ 15, 20 COMBOBOX oCbx VAR cOrder SIZE 100, 400 PIXEL OF oDlg ;
          ITEMS { "item1", "item2", "item3" }                        ;
          ON CHANGE msgalert( "combobox mudou: " )                   ;
          STYLE CBS_DROPDOWN UPDATE
    
       @ 5, 5 BUTTON oButton PROMPT "Test Character type ItemCode DbCombo" ;
          ACTION Dialog2()
    
       ACTIVATE DIALOG oDlg CENTERED ;
          ON INIT( oDlg:SetMenu( Monta_Menu( oDlg ) ) )
    
    RETURN NIL
    
    // Dialog2 is exaclly the same copy of the above, instead of Numeric Type data in aItems
    // character Type data is used in aItems
    FUNCTION Dialog2()
    
       LOCAL oDlg2, oCmbCommodity, oCmbItems, oSayCommodityCode, oSayItemCode
       LOCAL aLstOfCommodities := {}, aCodeOfCommodities := {}
       LOCAL aLstOfItems := {}, aCodeOfItems := {}
       LOCAL cCommodityCode, cItemCode
    
       // Character data type ItemCode
       aLstOfCommodities := { "Fruits", "Vegetables" }
       aCodeOfCommodities := { "25", "35" }  // Character type aItem values
    
       cCommodityCode := "35"
       cItemCode := Space( 2 )
    
       DEFINE DIALOG oDlg2 TITLE "Test DBCombo with Character type aItems" FROM 10, 30 TO 30, 100
    
       @1, 25 SAY oSayCommodityCode PROMPT cCommodityCode OF oDLG2
    
       @1, 1 DBCOMBO oCmbCommodity VAR cCommodityCode;
          ITEMS aCodeOfCommodities ;
          SIZE 120, 200 ;
          LIST aLstOfCommodities ;
          OF oDlg2;
          ON CHANGE ( SetDbCombo2( cCommodityCode, oCmbItems, @aLstOfItems, @aCodeOfItems, @cItemCode ), ;
          oSayCommodityCode:SetText( cCommodityCode ), ;
          oSayItemCode:SetText( cItemCode ) ) ;
          VALID ( SetDbCombo2( cCommodityCode, oCmbItems, @aLstOfItems, @aCodeOfItems, @cItemCode ), ;
          oSayCommodityCode:SetText( cCommodityCode ), ;
          oSayItemCode:SetText( cItemCode ), .T. ) ;
          UPDATE
    
       @3, 25 SAY oSayItemCode PROMPT cItemCode OF oDlg2
    
       @3, 1 DBCOMBO oCmbItems VAR cItemCode;
          ITEMS aCodeOfItems ;
          SIZE 120, 200 ;
          LIST aLstOfItems;
          OF oDlg2;
          ON CHANGE( msgalert( "combobox mudou: " ) )                  ;
          UPDATE
    
       // ON CHANGE ( oSayItemCode:SetText( cItemCode ) ) ;
       // UPDATE
    
       ACTIVATE DIALOG oDlg2 ;
          ON INIT Eval( oCmbCommodity:bChange )
    
    RETURN NIL
    
    FUNCTION SetDbCombo2( cCommodityCode, oCmbItems, aLstOfItems, aCodeOfItems, cItemCode )
    
       aLstOfItems := {};aCodeOfItems := {}
    
       IF cCommodityCode == "25" // Fruits
          aLstOfItems := { "Apple", "Grapes", "Mango" }
          aCodeOfItems := { "21", "31", "41" }  // Character type aItem values
       ELSEIF cCommodityCode == "35" // Vegetables
          aLstOfItems := { "Cucumber", "Potato", "Tomato" }
          aCodeOfItems := { "51", "61", "71" }  // Character type aItem values
       ENDIF
    
       // The sequence of commads are important here. ie The default ItemCode should be assigned only
       // after calling oCmbItems:SetItems() and then followed by a oCmbItems:refresh()
       oCmbItems:SetItems( aCodeOfItems, aLstOfItems )
    
       IF cCommodityCode == "25" // Fruits
          cItemCode := "41"  // 3rd Item ie Mango should be the default one on DbCombo
       ELSEIF cCommodityCode == "35" // Vegetables
          cItemCode := "61" // 2nd Item ie Potato should be the default one on DbCombo
       ENDIF
    
       oCmbItems:Refresh()
    
    RETURN NIL
    
    FUNCTION Monta_Menu( oDlg )
    
       LOCAL oMenu
    
       // monta o menu no dialogo
       MENU oMenu
       MENUITEM " &INSERE AQUI" OF oMenu ;
          ACTION msgalert( "insere" )
    
       MENUITEM " &APAGA AQUI " OF oMenu ;
          ACTION msgalert( "apaga" )
    
       MENUITEM "&SAIDA AQUI  " OF oMenu ;
          ACTION( oDlg:End() )
    
       ENDMENU
    
    RETURN( oMenu )
    
    // FIN / END - kapiabafwh@gmail.com

     

  5. HB_GCALL( .T. ) não vai ajudar muito neste caso. Tente salvar direto VIA PRINTER Não use este comando: FWSavePreviewToPDF( oPreview,cDestino,.F. ). Você não respondeu: SE WINDOWS 10, QUAL O PENTE DE MEMÓRIA? VERSÃO DO FIVEWIN?

    #Include "FiveWin.ch"
    
    FUNCTION Main()
    
       LOCAL WNOMBREARQPDF
    
       IF FILE( "ARCHIVO.PDF" )
    
          ERASE( "ARCHIVO.PDF" )
    
       ENDIF
    
       MsgRun( "GENERANDO ARCHIVO *.PDF...", ;
               "Por Favor, Aguarde...      ", ;
               { || WinExec( Generar_PDF() ), 3 } )
    
       // Perfect, mister Nages, Thank You
       IF FILE( "ARCHIVO.PDF" )
    
          WNOMBREARQPDF := "c:\FWH1905\SAMPLES\archivo.pdf"
    
          // ShellExecute( 0, "Print", WNOMBREARQPDF,,, 3 )
    
       ENDIF
    
    RETURN NIL
    
    FUNCTION Generar_PDF()
    
       LOCAL cText := MEMOREAD( "c:\fwh1905\samples\arq.txt" )
       LOCAL oPrn, oFont, nLinha, nPage := 1
    
       nLinha := 0
    
       PRINT oPrn FILE "archivo.pdf"  // em silencio sem preview
    
          DEFINE FONT oFont NAME "COURIER NEW" SIZE 0,-10 OF oPrn
    
          WHILE .NOT. EMPTY( cText )
    
             SYSREFRESH()
    
             CURSORWAIT()
    
             PAGE
    
                @ nLinha, 1 PRINT TO oPrn TEXT @cText SIZE 7,10 INCHES FONT oFont
    
                IF nLinha >= 25
    
                   quit
    
                   ENDPAGE
    
                   nPage := nPage + 1 // Number pages
    
                   PAGE
    
                ENDIF
       
             ENDPAGE
    
             nLinha := nLinha + 1
       
          ENDDO
    
       ENDPRINT
    
       // ? nLinha, nPage
    
       RELEASE FONT oFont
    
       CURSORARROW()
    
    RETURN NIL

     

     

  6. Não funciona com FWH1307, melhor é você atualizar sua versão junto ao Gilmer: gilmer@fivewin.com.br
    
    // DropDown ComboBoxes
    
    #include "FiveWin.ch"
    
    STATIC oDlg
    
    function Main()
    
       local oCbx
       local cText := "     "
    
       DEFINE DIALOG oDlg FROM 10, 10 TO 20, 50 ;
          TITLE "DropDown ComboBox Test"
    
       // NAO FUNCIONA COM FWH1307 - MELHOR ATUALIZAR VERSÃO.
       @ 3.5, 1 COMBOBOX oCbx VAR cText STYLE CBS_DROPDOWN ;
          ITEMS { "One", "Two", "Three" } ;
          ON CHANGE oDlg:SetText( cText )
    
       ACTIVATE DIALOG oDlg CENTERED ON INIT( _SetMenu() )
    
    return nil
    
    function _SetMenu()
    
       local oMenu
    
       MENU oMenu
          MENUITEM "&One"  ACTION MsgInfo( "One" )
          MENUITEM "&Two"  ACTION MsgInfo( "Two" )
       ENDMENU
    
       oDlg:SetMenu( oMenu )
    
    return nil
    
    procedure AppSys  // Xbase++ requirement
    
    return
    
    Abs.
    
    Regards, saludos.

     

  7. Seu COMBOBOX funcionando perfeito.
    
    // C:\FWH\SAMPLES\TESTECMB.PRG
    
    #Include "FiveWin.ch"
    
    FUNCTION TESTECOMBO()
    
       LOCAL oDlg,  cOrder := "", oCbx, cTitle
    
       cTitle := "COMBOBOX MODIFICADO by kapiabafwh@gmail.com"
    
       DEFINE DIALOG oDlg SIZE 600, 400 TITLE cTitle
    
       oDlg:lHelpIcon := .F.
    
       @ 15, 20 COMBOBOX oCbx VAR cOrder SIZE 100, 400 PIXEL OF oDlg ;
          ITEMS { "item1", "item2", "item3" }                        ;
          ON CHANGE  msgalert( "combobox mudou: " )                  ;
          HEIGHTGET 20 STYLE CBS_DROPDOWNLIST
    
       ACTIVATE DIALOG oDlg CENTERED ;
          ON INIT( oDlg:SetMenu( Monta_Menu( oDlg ) ) )
    
    RETURN NIL
    
    FUNCTION Monta_Menu( oDlg )
    
       LOCAL oMenu
    
       // monta o menu no dialogo
       MENU oMenu
          MENUITEM " &INSERE AQUI" OF oMenu ;
             ACTION msgalert( "insere" )
    
          MENUITEM " &APAGA AQUI " OF oMenu ;
             ACTION msgalert( "apaga" )
    
          MENUITEM "&SAIDA AQUI  " OF oMenu ;
             ACTION( oDlg:End() )
    
       ENDMENU
    
    RETURN( oMenu )
    
    // FIN / END - kapiabafwh@gmail.com

     

  8. Mesma lógica, vista por outro prisma.
    
    [code]
    // C:\FWH\SAMPLES\TESTCMB3.PRG
    
    #Include 'FiveWin.ch'
    #Include "Constant.ch"
    
    STATIC oBar
    
    FUNCTION Main()
    
       LOCAL oDlg, oDbf, oFont, oBold
       LOCAL cOrder  := "", oCbx, cTitle
       LOCAL nBottom := 27.2
       LOCAL nRight  := 89
       LOCAL nWd     := Max( nRight * DLG_CHARPIX_W, 180 )
       LOCAL nHt     := nBottom * DLG_CHARPIX_H
    
       cTitle := "COMBOBOX by kapiabafwh@gmail.com"
    
       oFont := TFont():New( "Tahoma", 0, 14,, )
       oBold := TFont():New( "Tahoma", 0, 14,, .T. )
    
       // DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL TITLE cTitle
    
       DEFINE DIALOG oDlg SIZE 350, 400 PIXEL TRUEPIXEL FONT oFont    ;
          COLOR CLR_BLACK, RGB( 245, 245, 235 ) TITLE cTitle          ;
          STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
                     WS_MINIMIZEBOX)
    
       oDlg:lHelpIcon := .F.
    
       @ 120, 50 COMBOBOX oCbx VAR cOrder SIZE 100, 400 PIXEL OF oDlg ;
          ITEMS { "item1", "item2", "item3" }                         ;
          ON CHANGE  msgalert( "combobox mudou: " )                   ;
          HEIGHTGET 20 STYLE CBS_DROPDOWN
    
       ACTIVATE DIALOG oDlg CENTER                 ;
          ON INIT ( Btnbar( oBar, oDlg ) )
    
       oFont:End()
       oBold:End()
    
    RETURN NIL
    
    FUNCTION Btnbar( oBar, oDlg )
    
       LOCAL aBtnBar
    
       aBtnBar := Array( 6 )
    
       DEFINE BUTTONBAR oBar OF oDlg  SIZE 50, 50 TOP NOBORDER  2007
    
       DEFINE BUTTON aBtnBar[ 1 ] OF oBar PROMPT "New"       ACTION MsgInfo()
    
       DEFINE BUTTON aBtnBar[ 2 ] OF oBar PROMPT "Modify"    ACTION MsgInfo()
    
       DEFINE BUTTON aBtnBar[ 3 ] OF oBar PROMPT "Duplicate" ACTION MsgInfo()
    
       DEFINE BUTTON aBtnBar[ 4 ] OF oBar PROMPT "Del"       ACTION MsgInfo()
    
       DEFINE BUTTON aBtnBar[ 5 ] OF oBar PROMPT "Print"     ACTION MsgInfo()
    
       DEFINE BUTTON aBtnBar[ 6 ] OF oBar PROMPT "Exit"      ACTION( oDlg:End() )
    
    RETURN( oBar )
    
    // FIN / END - kapiabafwg@gmail.com
    [/code]
    
    Regards, saludos.

     

×
×
  • Create New...