Estas pruebas (funcion贸 perfectamente tanto en windows como en dialogs) las hice hace unos a帽os, no recuerdo que funciones requer铆an (todo en FW basado en el trabajo de Cayetano si no recuerdo mal).
Es posible que me haya dejado alguna funci贸n, en ese caso lo comentas y te la busco y la publico.
FUNCTION Wcodebar( )
WcodebarA( )
WcodebarB( )
Return Nil
FUNCTION WcodebarA( )
Local oWnd, oAceptar
DEFINE WINDOW oWnd FROM 2.19,37.88 TO 35.50,137.00 //FIVEWIDI
@ 432,581 BUTTON oAceptar PROMPT "&OK" SIZE 152,32 ACTION oWnd:End() OF ownd ;
聽 聽 FONT TFont():New('Arial',0,-11,.F.,.F.,0,0,400,.F.,.F.,.F.,0,3,2,1,nil) PIXEL ;
聽 聽 MESSAGE "Cerrar谩 venana" UPDATE CANCEL //FIVEWIDI
@ 10,10 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 10,60 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1
@ 10,210 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 MODE "A"
@ 10,385 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 MODE "B"
@ 10,560 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 MODE "C"
// =====================================
@ 130,10 CODE3_9W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 50,60 CODE3_9W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 CHECK
@ 50,290 CODE3_9W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 CHECK
// =====================================
@ 330,10 EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_GREEN ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 470,10 EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL BANNER
@ 90,60 EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 BANNER FONT "Courier New"
@ 90,270 EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 BANNER
// =====================================
@ 600,10 UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_GREEN ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 600,100 UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL BANNER
@ 140,60 UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 BANNER FONT "Courier New"
@ 140,270 UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 BANNER
// =====================================
@ 450,100 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_GREEN ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 450,200 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL BANNER
@ 190,60 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 BANNER FONT "Courier New"
@ 190,270 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 BANNER
// =====================================
@ 300,200 CODABARW "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 240,60 CODABARW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1.5
@ 240,270 CODABARW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1.5
ACTIVATE WINDOW oWnd MAXIMIZED
Return Nil
FUNCTION WcodebarB( )
Local oWnd, oAceptar
DEFINE DIALOG oWnd FROM 5,5 TO 50,125 //FIVEWIDI
@ 216,290 BUTTON oAceptar PROMPT "&OK" SIZE 75,16 ACTION oWnd:End() OF ownd ;
聽 聽 FONT TFont():New('Arial',0,-11,.F.,.F.,0,0,400,.F.,.F.,.F.,0,3,2,1,nil) PIXEL ;
聽 聽 MESSAGE "Cerrar谩 venana" UPDATE CANCEL //FIVEWIDI
@ 5,5 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 5,30 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1
@ 5,105 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 MODE "A"
@ 5,192 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 MODE "B"
@ 5,280 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 MODE "C"
// =====================================
@ 65,5 CODE3_9W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 25,30 CODE3_9W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 CHECK
@ 25,145 CODE3_9W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 CHECK
// =====================================
@ 165,5 聽EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_GREEN ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 235,5 聽EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL BANNER
@ 45,30 EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 BANNER FONT "Courier New"
@ 45,135 EAN13W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 BANNER
// =====================================
@ 300,5 聽UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_GREEN ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 300,50 聽UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL BANNER
@ 聽70,30 UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 BANNER FONT "Courier New"
@ 聽70,135 UPCAW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 BANNER
// =====================================
@ 225,50 聽EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_GREEN ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 225,100 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL BANNER
@ 聽95,30 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1 BANNER FONT "Courier New"
@ 聽95,135 EAN8W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1 BANNER
// =====================================
@ 150,100 CODABARW "1111167890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽SIZE 1 VERTICAL
@ 120,30 CODABARW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽SIZE 1.5
@ 120,135 CODABARW "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HBLUE ;
聽 聽 聽 聽SIZE 1.5
//Code128W( 90, 10, "167891", oWnd, NIL, CLR_HRED, .T., Nil, Nil)
//traza( 1, "code128w=", _code128( "1111167890", Nil ) )
//ACTIVATE WINDOW oWnd MAXIMIZED
ACTIVATE DIALOG oWnd
/*
@ 10,30 CODE128W "1234567890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED
聽 聽 聽 聽//WIDTH 0.10 ;
聽 聽 聽 聽//SIZE 50
聽 聽 聽 聽//MODE "A" ;
聽 聽 聽 聽//COLOR RED ;
*/
//Code128W( 90, 10, "167891", oWnd, NIL, CLR_HRED, .T., Nil, Nil)
//Code128W(nRow,nCol,cCode,oWnd,cMode,Color,lHorz,nWidth,nHeigth)
/*
@ 10,30 CODE128W "1111167890" ;
聽 聽 聽 聽OF oWnd COLOR CLR_HRED ;
聽 聽 聽 聽//WIDTH 0.10 ;
聽 聽 聽 聽//SIZE 0.80
聽 聽 聽 聽//MODE "A"
@ 300,300 CODE128W "1234567890" ;
聽 聽 聽 聽OF oWnd ;
聽 聽 聽 聽WIDTH 0.10 ;
聽 聽 聽 聽SIZE 50
聽 聽 聽 聽//MODE "A" ;
聽 聽 聽 聽//COLOR RED ;
*/
Return Nil
// TBarCodeW Class. Mainly used for show Code Bar at screen.
#include "FiveWin.ch"
#include "Constant.ch"
#define COLOR_BTNFACE 聽 聽 15
#ifdef __XPP__
聽 聽#define Super ::TControl
聽 聽#define New _New
#endif
//----------------------------------------------------------------------------//
CLASS TBarCodeW FROM TControl
聽 聽CLASSDATA lRegistered AS LOGICAL
聽 聽DATA 聽 cTipoBar 聽 聽// Tipo de c贸digo de barras.
聽 聽DATA 聽 lBanner 聽 聽 // Indicador de si visualitza codi en alfanum猫ric.
聽 聽DATA 聽 cFont 聽 聽 聽 // Nom del tipu sde lletra.
聽 聽DATA 聽 lHorizontal 聽 // Indicador de horientaci贸.
聽 聽DATA 聽 cMode 聽 聽 聽 // SubTipo del c贸digo de barras.
聽 聽DATA 聽 lCheck 聽 聽 聽// Indicador de chequeo para convertir a ceros y unos.
聽 聽DATA 聽 cCode 聽 聽 聽 // Codigo recibido.
聽 聽DATA 聽 cCodeBar1 聽 // Codigo 1 convertido a ceros y unos.
聽 聽DATA 聽 cCodeBar2 聽 // Codigo 2 convertido a ceros y unos.
聽 聽DATA 聽 nWidthLine 聽// Anchura de la l铆nea del c贸digo de barras.
聽 聽DATA 聽 nHeightLine // Altura de la l铆nea del c贸digo de barras.
聽 聽METHOD New( nTop, nLeft, cCode, oWnd, lcheck, cMode, nColor, lHorizontal, ;
聽 聽 聽 聽 聽 聽 聽 聽nWidthLine, nHeightLine, lBanner, cFont, cTipoBar, lDesign, lPixel ) CONSTRUCTOR
聽 聽METHOD EraseBkGnd( hDC )
聽 聽METHOD Paint()
聽 聽METHOD Display() INLINE ::BeginPaint(), ::Paint(), ::EndPaint(), 0
聽 聽//METHOD Notify( nIdCtrl, nPtrNMHDR ) INLINE ::Notify( nIdCtrl, nPtrNMHDR )
聽 聽METHOD SetCodeBar( cTipoBar, cMode, lCheck, cCode )
ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( nTop, nLeft, cCode, oWnd, lcheck, cMode, nColor, lHorizontal, ;
聽 聽 聽 聽 聽 聽 nWidthLine, nHeightLine, lBanner, cFont, cTipoBar, lDesign, lPixel ) CLASS TBarCodeW
聽 聽DEFAULT nTop 聽 聽 聽 聽:= 0, nLeft := 0
聽 聽DEFAULT cCode 聽 聽 聽 := ""
聽 聽DEFAULT cTipoBar 聽 聽:= "", cMode := "", lCheck := .F.
聽 聽DEFAULT oWnd 聽 聽 聽 聽:= GetWndDefault(), ncolor := oWnd:nClrText, cFont := "Arial"
聽 聽DEFAULT lHorizontal 聽 := .T., lPixel := .T., lDesign := .F., lBanner := .T.
聽 聽DEFAULT nWidthLine 聽:= 0.025 // 1/3 M/mm
聽 聽DEFAULT nHeightLine := 1.5 // Cmm.
聽 聽#ifdef __XPP__
聽 聽 聽 DEFAULT ::lRegistered := .f.
聽 聽#endif
聽 聽::SetCodeBar( cTipoBar, cMode, lcheck, cCode )
聽 聽::nWidthLine 聽:= nWidthLine
聽 聽::nHeightLine := nHeightLine
聽 聽::lHorizontal := lHorizontal
聽 聽::lBanner 聽 聽 := lBanner
聽 聽::cFont 聽 聽 聽 := cFont
聽 聽/*
聽 聽Traza( 1, "cTipoBar 聽 =", ::cTipoBar )
聽 聽Traza( 1, "cMode 聽 聽 聽=", ::cMode )
聽 聽Traza( 1, "lcheck 聽 聽 =", ::lCheck )
聽 聽Traza( 1, "cCode 聽 聽 聽=", ::cCode )
聽 聽Traza( 1, "cCodeBar1 聽=", ::cCodeBar1 )
聽 聽Traza( 1, "cCodeBar2 聽=", ::cCodeBar2 )
聽 聽Traza( 1, "nWidthLine =", ::nWidthLine )
聽 聽Traza( 1, "nHeightLine=", ::nHeightLine )
聽 聽Traza( 1, "lHorizontal=", ::lHorizontal )
聽 聽Traza( 1, "lBanner 聽 聽=", ::lBanner )
聽 聽Traza( 1, "cFont 聽 聽 聽=", ::cFont )
聽 聽*/
聽 聽::oWnd 聽 聽 聽 聽:= oWnd
聽 聽::nTop 聽 聽 聽 聽:= If( lPixel, nTop, nTop * MTR_CHARPIX_H ) 聽//14
聽 聽::nLeft 聽 聽 聽 := If( lPixel, nLeft, nLeft * 聽MTR_CHARPIX_W ) //8
聽 聽::nBottom 聽 聽 := ::nTop 聽+ nCm2Pixels( ::hDC, ::nHeightLine, .T. )
聽 聽::nRight 聽 聽 聽:= ::nLeft + ( nCm2Pixels( ::hDC, ::nWidthLine, .F. ) * Len( ::cCodeBar1 ) )
聽 聽::lDrag 聽 聽 聽 := lDesign
聽 聽::nStyle 聽 聽 聽:= nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 If( ::lDrag, nOr( WS_CLIPSIBLINGS, WS_TABSTOP ), 0 ) )
聽 聽::nId 聽 聽 聽 聽 := ::GetNewId()
聽 聽::lCaptured 聽 := .f.
聽 聽::lUpdate 聽 聽 := .f.
聽 聽::nClrText 聽 聽:= nColor
聽 聽::nClrPane 聽 聽:= iif( Upper( ::oWnd:Classname() ) != "TWINDOW", ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 GetSysColor( COLOR_BTNFACE ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::oWnd:nClrPane )
聽 聽/*
聽 聽Traza( 1, "nTop 聽 聽 聽 =", ::nTop )
聽 聽Traza( 1, "nLeft 聽 聽 聽=", ::nLeft )
聽 聽Traza( 1, "nBottom 聽 聽=", ::nBottom )
聽 聽Traza( 1, "nRight 聽 聽 =", ::nRight )
聽 聽Traza( 1, "nDrag 聽 聽 聽=", ::lDrag )
聽 聽Traza( 1, "nID 聽 聽 聽 聽=", ::nId )
聽 聽Traza( 1, "lCaptured 聽=", ::lCaptured )
聽 聽Traza( 1, "nClrText 聽 =", ::nClrText )
聽 聽Traza( 1, "nClrPane 聽 =", ::nClrPane )
聽 聽*/
聽 聽If ::lDrag
聽 聽 聽 ::CheckDots()
聽 聽endif
聽 聽::Register()
聽 聽if ! Empty( ::oWnd:hWnd )
聽 聽 聽 ::Create()
聽 聽 聽 ::oWnd:AddControl( Self )
聽 聽 聽 if ::oWnd:oBrush != nil
聽 聽 聽 聽 聽::SetBrush( ::oWnd:oBrush )
聽 聽 聽 endif
聽 聽else
聽 聽 聽 ::oWnd:DefControl( Self )
聽 聽endif
return Self
//----------------------------------------------------------------------------//
METHOD SetCodeBar( cTipoBar, cMode, lcheck, cCode ) CLASS TBarCodeW
::cTipoBar 聽:= cTipoBar
::cMode 聽 聽 := cMode
::lCheck 聽 聽:= lCheck
::cCode 聽 聽 := cCode
::cCodeBar1 := ""
::cCodeBar2 := ""
IF ::cTipoBar = "CODE128"
聽 聽 ::cCodeBar1 := _code128( ::cCode, ::cMode )
ElseIf ::cTipoBar = "CODE3_9"
聽 聽 ::cCodeBar1 := _code3_9( ::cCode, ::lCheck )
ElseIf ::cTipoBar = "EAN13"
聽 聽 ::cCodeBar1 := _ean13( ::cCode )
聽 聽 ::cCodeBar2 := _ean13Bl()
ElseIf ::cTipoBar = "UPCA"
聽 聽 ::cCodeBar1 := _upc( ::cCode )
聽 聽 ::cCodeBar2 := _UPCABl( ::cCode )
ElseIf ::cTipoBar = "EAN8"
聽 聽 ::cCodeBar1 := _upc( ::cCode, 7 )
聽 聽 ::cCodeBar2 := _ean13Bl(8)
ElseIf ::cTipoBar = "SUP5"
聽 聽 ::cCodeBar1 := _sup5( ::cCode )
ElseIf ::cTipoBar = "CODABAR"
聽 聽 ::cCodeBar1 := _codabar( ::cCode )
ElseIf ::cTipoBar = "INT25"
聽 聽 ::cCodeBar1 := _int25( ::cCode, ::lCheck )
ElseIf ::cTipoBar = "IND25"
聽 聽 ::cCodeBar1 := _ind25( ::cCode, ::lCheck )
ElseIf ::cTipoBar = "MAT25"
聽 聽 ::cCodeBar1 := _mat25( ::cCode, ::lCheck )
EndIf
Return Nil
//----------------------------------------------------------------------------//
METHOD EraseBkGnd( hDC ) CLASS TBarCodeW
聽 聽if ::oWnd != nil .and. IsAppThemed() .and. ;
聽 聽 聽 Upper( ::oWnd:ClassName() ) $ "TFOLDER,TREBAR,TGROUP,TPANEL"
聽 聽 聽 DrawPBack( ::hWnd, hDC )
聽 聽 聽 return 1
聽 聽endif
return 1 // Super:EraseBkGnd( hDC )
//----------------------------------------------------------------------------//
METHOD Paint() CLASS TBarCodeW
Local nLen := 0
IF ::cTipoBar $ "/CODE128/CODE3_9/SUP5/CODABAR/INT25/IND25/MAT25/"
聽 聽 go_codeW( ::cCodeBar1, ::nTop, ::nLeft, ::oWnd, ::lHorizontal, ::nClrText, ::nWidthLine, ::nHeightLine )
EndIf
If ::cTipoBar $ "/EAN13/UPCA/EAN8/"
聽 聽 If ::lHorizontal
聽 聽 聽 聽 go_codeW( ::cCodeBar1, ::nTop, ::nLeft, ::oWnd, ::lHorizontal, ::nClrText, ::nWidthLine, ::nHeightLine * 0.90 )
聽 聽 Else
聽 聽 聽 聽 // **********************************************
聽 聽 聽 聽 // OJO con nLen, no se est谩 usando correctamente.
聽 聽 聽 聽 // **********************************************
聽 聽 聽 聽 //nLen :=round 聽( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 ) * 0.1
聽 聽 聽 聽 //nLen := round 聽( nCm2Pixels( ::oWndhDC, nLen, .F. ), 0 ) * 0.1
聽 聽 聽 聽 nLen := round 聽( nCm2Pixels( ::hDC, ::nHeightLine, .F. ), 0 ) * 0.1
聽 聽 聽 聽// 10% espacios
聽 聽 聽 聽 go_codeW( ::cCodeBar1, ::nTop, ::nLeft + nLen, ::oWnd, ::lHorizontal, ::nClrText, ::nWidthLine, ::nHeightLine * 0.90 )
聽 聽 End
聽 聽 go_codeW( ::cCodeBar1, ::nTop, ::nLeft, ::oWnd, ::lHorizontal, ::nClrText, ::nWidthLine, ::nHeightLine )
EndIf
If ::cTipoBar = "EAN13"
聽 聽 If ::lBanner
聽 聽 聽 聽 barlen13W( ::cCode, ::oWnd, ::nTop, ::nLeft, ::nClrText, ::lHorizontal, ::nWidthLine, ::nHeightLine, ::cFont )
聽 聽 End
ElseIf ::cTipoBar = "UPCA"
聽 聽 If ::lBanner
聽 聽 聽 聽 UPCA_barlenW( ::cCode, ::oWnd, ::nTop, ::nLeft, ::nClrText, ::lHorizontal, ::nWidthLine, ::nHeightLine, ::cFont )
聽 聽 End
ElseIf ::cTipoBar = "EAN8"
聽 聽 If ::lBanner
聽 聽 聽 聽 barlenW( ::cCode, 7, ::oWnd, ::nTop, ::nLeft, ::nClrText, ::lHorizontal, ::nWidthLine, ::nHeightLine, ::cFont )
聽 聽 End
ElseIf ::cTipoBar = "SUP5"
聽 聽 If ::lBanner
聽 聽 聽 聽 ban5W( ::cCode, ::oWnd, ::nTop, ::nLeft, ::nClrText, ::lHorizontal, ::nWidthLine, ::nHeightLine, ::cFont )
聽 聽 End
EndIf
return nil
//----------------------------------------------------------------------------//
/* 聽Para visualizar los c贸digos de barra por pantalla.
聽 聽 Basado en el desarrollo de Cayetano (Barlib).
聽 聽 C.Gelabert 28/4/09
聽 聽 ============================================== */
// funciones de llamadas de barlib
// chequean las posibles concordancias de datos
// y dan los errores
#include 'fivewin.ch'
// CODE 128
/*
聽 聽 Code 128:
聽 聽 Admite los 128 caracteres 0 - 127
聽 聽 si s垄lo son n拢meros se usa un modelo comprimido, llamado
聽 聽 modo C
聽 聽 Si hay caracteres < 32 se usa el m垄do A
聽 聽 Si hay caracteres en minusculas se usa el modo B ( modo por defecto)
聽 聽 Los modos se mezclan
聽 聽 Sintaxis :
聽 聽 code128W(nRow,nCol,cCode,oWnd,[cMode],[Color],
聽 聽 聽 聽 聽 聽[lOrientacion],[nAncho],[nAlto])
聽 聽 nRow, nCol en Pixels
聽 聽 nAncho,nAlto en Cm
*/
Function Code128W( nRow, nCol, cCode, oWnd, cMode, Color, lHorz, nWidth, nHeigth )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _code128(cCode,cMode), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
return nil
Function c_Code128W( nRow, nCol, cCode, oWnd, cMode, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return Code128W( nRow, nCol, cCode, oWnd, cMode, Color, lHorz, nWidth, nHeigth )
Function Code3_9W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _code3_9(cCode,lCheck), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
return nil
Function c_Code3_9W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth)
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return Code3_9W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
Function ean13W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth, lBanner, cFont )
聽 聽 local nLen
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 default nHeigth := 1.5
聽 聽 default lBanner:=.f.
聽 聽 // desplazamiento...
聽 聽 if lHorz
聽 聽 聽 聽 go_codeW( _ean13(cCode), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth * 0.90 )
聽 聽 else
聽 聽 聽 聽 //nLen :=round 聽( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 ) * 0.1
聽 聽 聽 聽 nLen := round 聽( nCm2Pixels( oWnd:GetDC(), nLen, .F. ), 0 ) * 0.1
聽 聽 聽 聽 oWnd:ReleaseDC()
聽 聽 聽 聽// 10% espacios
聽 聽 聽 聽 聽 聽 go_codeW( _ean13(cCode), nRow, nCol + nLen, oWnd, lHorz, Color, nWidth, nHeigth * 0.90 )
聽 聽 end
聽 聽 go_codeW( _ean13Bl(), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
聽 聽 if lBanner
聽 聽 聽 聽 barlen13W( cCode, oWnd, nRow, nCol, Color, lHorz, nWidth, nHeigth, cFont )
聽 聽 end
return nil
Function c_ean13W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return ean13W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
Function UPCAW( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth, lBanner, cFont )
聽 聽 local nLen
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 default nHeigth := 1.5
聽 聽 default lBanner:=.f.
聽 聽 if lHorz
聽 聽 聽 聽 go_codeW( _UPC(cCode), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth * 0.90 )
聽 聽 else
聽 聽 聽 聽 //nLen := round 聽( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 ) * 0.1
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( oWnd:GetDC(), nLen, .F. ), 0 ) * 0.1
聽 聽 聽 聽 oWnd:ReleaseDC()
聽 聽 聽 聽// 10% espacios
聽 聽 聽 聽 聽 聽 go_codeW( _UPC(cCode), nRow, nCol + nLen, oWnd, lHorz, Color, nWidth, nHeigth * 0.90 )
聽 聽 end
聽 聽 go_codeW( _UPCABl(cCode), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
聽 聽 if lBanner
聽 聽 聽 聽 UPCA_barlenW( cCode, oWnd, nRow, nCol, Color, lHorz, nWidth, nHeigth, cFont )
聽 聽 end
return nil
Function c_UPCAW( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return UPCAW( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
Function ean8W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth, lBanner, cFont )
聽 聽 local nLen
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 default nHeigth := 1.5
聽 聽 default lBanner:=.f.
聽 聽 if lHorz
聽 聽 聽 聽 go_codeW( _UPC(cCode,7), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth * 0.90 )
聽 聽 else
聽 聽 聽 聽 //nLen :=round 聽( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 ) * 0.1
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( oWnd:GetDC(), nLen, .F. ), 0 ) * 0.1
聽 聽 聽 聽 oWnd:ReleaseDC()
聽 聽 聽 聽// 10% espacios
聽 聽 聽 聽 聽 聽 go_codeW( _UPC(cCode,7), nRow, nCol + nLen, oWnd, lHorz, Color, nWidth, nHeigth * 0.90 )
聽 聽 end
聽 聽 go_codeW( _ean13Bl(8), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
聽 聽 if lBanner
聽 聽 聽 聽 barlenW( cCode, 7, oWnd, nRow, nCol, Color, lHorz, nWidth, nHeigth, cFont )
聽 聽 end
return nil
Function c_ean8W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return ean8W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
Function sup5W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth, lBanner, cFont )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _sup5(cCode), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
聽 聽 if lBANNER
聽 聽 聽 聽 ban5W( cCode, oWnd, nRow, nCol, Color, lHorz, nWidth, nhEIGTH, cFont )
聽 聽 end
return nil
Function c_Sup5W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth, lBanner, cFont )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return sup5W( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth, lBanner, cFont )
Function CodabarW( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _Codabar(cCode), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
return nil
Function c_CodabarW( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return CodabarW( nRow, nCol, cCode, oWnd, Color, lHorz, nWidth, nHeigth )
Function int25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _int25(cCode,lCheck), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
return nil
Function c_int25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return int25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
Function ind25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _ind25(cCode,lCheck), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
return nil
Function c_ind25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return ind25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
Function mat25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 // test de parametros
聽 聽 // por implementar
聽 聽 go_codeW( _mat25(cCode,lCheck), nRow, nCol, oWnd, lHorz, Color, nWidth, nHeigth )
return nil
Function c_mat25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
聽 聽 uCm2Pixels( oWnd:GetDC(), @nRow, @nCol )
聽 聽 oWnd:ReleaseDC()
return mat25W( nRow, nCol, cCode, oWnd, lCheck, Color, lHorz, nWidth, nHeigth )
// imprime un codigo
#include 'FiveWin.ch'
FUNCTION Go_CodeW( cBarra, nx, ny, oWnd, lHoRz, nColor, nWidth, nLen )
Local n 聽 聽 聽:= 0
Local oBr 聽 聽:= Nil
Local WndhDC := 0
//traza(1, "Inici" )
WndhDc := oWnd:GetDc()
聽 聽 If Empty( nColor )
聽 聽 聽 聽 nColor := CLR_BLACK
聽 聽 EndIf
聽 聽 DEFAULT lHorz 聽:= .t.
聽 聽 DEFAULT nWidth := 0.025 // 1/3 M/mm
聽 聽 DEFAULT nLen 聽 := 1.5 // Cmm.
聽 聽 DEFINE BRUSH oBr COLOR nColor
聽 聽 /*
聽 聽 Traza( 1, "cbarra=", cbarra )
聽 聽 traza( 1, "nx 聽 聽 聽=", nx )
聽 聽 Traza( 1, "ny 聽 聽 聽=", ny )
聽 聽 Traza( 1, "lHorz 聽 =", lHoRz )
聽 聽 Traza( 1, "ncolor 聽=", ncolor, CLR_BLACK )
聽 聽 Traza( 1, "a-nWidth=", nWidth )
聽 聽 Traza( 1, "a-nLen 聽=", nLen )
聽 聽 */
聽 聽 // 聽 聽Width of Bar
聽 聽 If !lHorz
聽 聽 聽 聽 //nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDc, nWidth, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽//nWidth := round 聽( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽nWidth := ROUND( nCm2Pixels( WndhDc, nWidth, .F. ), 0 )
聽 聽 EndiF
聽 聽 // Len of bar
聽 聽 If lHorz
聽 聽 聽 聽 //nLen := round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDc, nLen, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽//nLen := round 聽( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽nLen := ROUND( nCm2Pixels( WndhDc, nLen, .F. ), 0 )
聽 聽 EndIf
聽 聽 //Traza( 1, "b-nWidth=", nWidth )
聽 聽 //Traza( 1, "b-nLen=", nLen )
聽 聽 FOR n := 1 to Len( cBarra )
聽 聽 聽 聽 If substr(cBarra,n,1) ='1'
聽 聽 聽 聽 聽 聽 If lHorz
聽 聽 聽 聽 聽 聽 聽 聽 //oPrint:fillRect({nx,ny,nx+nLen,(ny+=nWidth)},oBr)
聽 聽 聽 聽 聽 聽 聽 聽 FillRect( WndhDc, {nx, ny, nx + nLen, (ny += nWidth)}, oBr:hBrush )
聽 聽 聽 聽 聽 聽 Else
聽 聽 聽 聽 聽 聽 聽 聽 //oPrint:fillRect({nx,ny,(nx+=nWidth),ny+nLen},oBr)
聽 聽 聽 聽 聽 聽 聽 聽 FillRect( WndhDc, {nx, ny, (nx += nWidth), ny + nLen}, oBr:hBrush )
聽 聽 聽 聽 聽 聽 EndIf
聽 聽 聽 聽 Else
聽 聽 聽 聽 聽 聽 If lHorz
聽 聽 聽 聽 聽 聽 聽 聽 ny += nWidth
聽 聽 聽 聽 聽 聽 Else
聽 聽 聽 聽 聽 聽 聽 聽 nx += nWidth
聽 聽 聽 聽 聽 聽 EndIf
聽 聽 聽 聽 EndIf
聽 聽 NEXT
聽 聽 oBr:end()
oWnd:ReleaseDc()
//traza(1, "Fin" )
RETURN Nil
// labels on barcodes
#include "fivewin.ch"
FUNCTION barlen13W( cCode, oWnd, nRow, nCol, Color, lHorz, nWidth, nLen, cFont)
聽 聽 Local oFont, nLenChar, l , Control, k, n, nWidthChar
Local WndhDC := 0
聽 聽 default lHorz := .t.
聽 聽 default nWidth := 0.025 // 1/3 M/mm
聽 聽 default nLen := 1.5 // Cmm.
聽 聽 default cFont := 'arial'
聽 聽 default Color := CLR_BLACK
WndhDC := oWnd:GetDC()
聽 聽 k:=left(alltrim(cCode)+'000000000000',12) // padding with '0'
聽 聽 // calculo del digito de control
聽 聽 聽k := k + EAN13_CHECK( k ) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // Chaeck Digit en EAN13
聽 聽 If !lHorz
聽 聽 聽 聽 //nWidth := round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .T. ), 0 )
聽 聽 else
聽 聽 聽 聽 //nWidth := round 聽( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .F. ), 0 )
聽 聽 EndIf
聽 聽 // Len of bar
聽 聽 If lHorz
聽 聽 聽 聽 //nLen := round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽 //nLen := round 聽( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .F. ), 0 )
聽 聽 EndIf
/*
聽 聽 聽 聽 nLenChar := nWidth*10
聽 聽 聽 聽 nWidthChar:= nLen*0.3
聽 聽 聽 聽 while .t.
聽 聽 聽 聽 聽 聽 define font oFont name cFont of oPrInt size nLenChar , nLenChar/2 ;
聽 聽 聽 聽 聽 聽 聽 聽 nescapement if(lHorz,0,13500)
聽 聽 聽 聽 聽 聽 if oPrint:GetTextWidth( '888888', oFont )<=42*nWidth
聽 聽 聽 聽 聽 聽 聽 聽 // alert(if(lHorz,'H:','V:')+str(nWidth*7)+str(nLenChar/(nWidth*7)))
聽 聽 聽 聽 聽 聽 聽 聽 while .t.
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 define font oFont name cFont of oPrInt size nLenChar , nWidthChar ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nescapement if(lHorz,0,13500)
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 if oPrint:GetTextHeigth( '8', oFont )<=0.2*nLen
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 alert(if(lHorz,'H:','V:')+str(nLen*0.2)+str(nWidthChar/(nLen*0.2)))
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nWidthChar-=0.2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 end
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oFont:end()
聽 聽 聽 聽 聽 聽 聽 聽 enddo
聽 聽 聽 聽 聽 聽 聽 聽 exit
聽 聽 聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 聽 nLenChar-=1
聽 聽 聽 聽 聽 聽 end
聽 聽 聽 聽 聽 聽 oFont:end()
聽 聽 聽 聽 end
聽* 聽 nWidt -> 0.8
*/
聽 聽 //DEFINE FONT oFont NAME cFont OF oPrInt SIZE nWidth * 5.6, nLen * 0.04 ;
聽 聽 // 聽 聽 聽 聽 聽 聽NESCAPEMENT If( lHorz, 0, 13500)
聽 聽 DEFINE FONT oFont NAME cFont SIZE nWidth * 5.6, nLen * 0.24 ;
聽 聽 聽 聽 聽 聽 聽 聽 NESCAPEMENT If( lHorz, 0, 13500)
聽 聽 If lHorz
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol - nWidth * 8, Left(k, 1), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol - nWidth * 8, Left(k, 1), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * 3, Substr(k, 2, 6), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * 3, SubStr(k, 2, 6), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * 50, Substr(k, 8, 6), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * 50, SubStr(k, 8, 6), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 Else
聽 聽 聽 聽 //oPrint:say( nRow - nWidth * 8, nCol + nLen * 0.1, Left(k, 1), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow - nWidth * 8, nCol + nLen * 0.1, Left(k, 1), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * 3, nCol + nLen * 0.1, substr(k, 2, 6), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * 3, nCol + nLen * 0.1, SubStr(k, 2, 6), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * 50, nCol + nLen * 0.1, Substr(k, 8, 6), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * 50, nCol + nLen * 0.1, SubStr(k, 8, 6), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 EndIf
聽 聽 RELEASE oFont
oWnd:ReleaseDC()
RETURN Nil
FUNCTION barlenW( cCode, nDigs, oWnd, nRow, nCol, Color, lHorz, nWidth, nLen, cFont)
聽 聽 Local oFont, nLenChar, l ,Control,k,s1,s2,n, Izda, dCha
Local WndhDC := 0
聽 聽 DEFAULT lHorz := .t.
聽 聽 DEFAULT nWidth := 0.025 // 1/3 M/mm
聽 聽 DEFAULT nLen := 1.5 // Cmm.
聽 聽 DEFAULT cFont := 'arial'
聽 聽 DEFAULT Color := CLR_BLACK
聽 聽 DEFAULT nDigs := 11
WndhDC := oWnd:GetDC()
聽 聽 // calculo del digito de control
聽 聽 k := Left(Alltrim(cCode) + '000000000000', nDigs) // padding with '0'
聽 聽 // calculo del digito de control
聽 聽 k = k + Upc_CHECK(cCode, nDigs) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // cCode,nLen
聽 聽 nDigs++
聽 聽 dcha := Right(K, nDigs / 2)
聽 聽 izda := Left(k, nDigs / 2)
聽 聽 If !lHorz
聽 聽 聽 聽 //nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽 //nWidth :=round 聽( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .F. ), 0 )
聽 聽 EndIf
聽 聽 // Len of bar
聽 聽 If lHorz
聽 聽 聽 聽 //nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽 //nLen :=round 聽( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .F. ), 0 )
聽 聽 EndIf
聽 聽 //define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
聽 聽 // 聽 聽 聽 聽 聽 聽nescapement if(lHorz,0,13500)
聽 聽 DEFINE FONT oFont NAME cFont SIZE nWidth * 5.6 , nLen * 0.24 ;
聽 聽 聽 聽 聽 聽 聽 聽 NESCAPEMENT If(lHorz, 0, 13500)
聽 聽 // fisrt letter
聽 聽 If lHorz
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * 3, Izda, oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * 3, Izda, Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * ( int(nDigs) / 2 * 7 + 8), dcha, oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * ( int(nDigs) / 2 * 7 + 8), dcha, Color, Nil, oFont, .T., Nil, Nil )
聽 聽 Else
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * 3, nCol + nLen * 0.1, izda, oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * 3, nCol + nLen * 0.1, izda, Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * (nDigs / 2 + 8), nCol + nLen * 0.1, dcha, oFont, , Color )
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * (nDigs / 2 + 8), nCol + nLen * 0.1, dcha, Color, Nil, oFont, .T., Nil, Nil )
聽 聽 EndIf
聽 聽 RELEASE oFont
oWnd:ReleaseDC()
return nil
FUNCTION ban5W( cCode, oWnd, nRow, nCol, Color, lHorz, nWidth, nLen, cFont)
聽 聽 Local oFont, nLenChar, k,n, oPen
Local WndhDC := 0
聽 聽 DEFAULT lHorz := .t.
聽 聽 DEFAULT nWidth := 0.025 // 1/3 M/mm
聽 聽 DEFAULT nLen := 1.5 // Cmm.
聽 聽 DEFAULT cFont := 'arial'
聽 聽 DEFAULT Color := CLR_BLACK
WndhDC := oWnd:GetDC()
聽 聽 ccode := Left(Alltrim(cCode) + '000000000000', 5) // padding with '0'
聽 聽 If !lHorz
聽 聽 聽 聽 //nWidth := round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽//nWidth := round 聽( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .F. ), 0 )
聽 聽 EndIf
聽 聽 // Len of bar
聽 聽 If lHorz
聽 聽 聽 聽 //nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽 //nLen :=round 聽( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .F. ), 0 )
聽 聽 EndIf
聽 聽 //define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
聽 聽 // 聽 聽 聽 聽 聽 聽nescapement if(lHorz,0,13500)
聽 聽 DEFINE FONT oFont NAME cFont SIZE nWidth * 5.6 , nLen * 0.24 ;
聽 聽 聽 聽 聽 聽 聽 聽 NESCAPEMENT If( lHorz, 0, 13500)
聽 聽 //define pen oPen color CLR_WHITE of oPrint
聽 聽 DEFINE PEN oPen COLOR CLR_WHITE
聽 聽 k := ''
聽 聽 FOR n := 1 to 4
聽 聽 聽 聽 k += substr( cCode, n, 1) + ' '
聽 聽 ENDFOR
聽 聽 cCode := k + right( cCOde, 1)
聽 聽 //Box( nTop, nLeft, nBottom, nRight )
聽 聽 If lHorz
聽 聽 聽 聽 //oPrint:box(nrow,ncol,nrow+nLen*.3,nCol+48*nWidth,oPen)
聽 聽 聽 聽 Rectangle( WndhDC, nrow, ncol, nrow + nLen * .3, nCol + 48 * nWidth, oPen:hPen )
聽 聽 Else
聽 聽 聽 聽 //oPrint:box(nrow,ncol,nrow+41*nWidth,nCol+nLen*.3+48*nWidth,oPen)
聽 聽 聽 聽 Rectangle( WndhDC, nrow, ncol, nrow + 41 * nWidth, nCol + nLen * .3 + 48 * nWidth, oPen:hPen )
聽 聽 EndIf
聽 聽 //oPrint:say(nRow,nCol,cCode,oFont,,Color)
聽 聽 oWnd:Say( nRow, nCol, cCode, Color, Nil, oFont, .T., Nil, Nil )
聽 聽 RELEASE oFont
聽 聽 RELEASE oPen
oWnd:ReleaseDC()
RETURN Nil
FUNCTION UPCA_barlenW( cCode, oWnd, nRow, nCol, Color, lHorz, nWidth, nLen, cFont)
聽 聽 Local oFont, nLenChar, l ,Control,k,n, Izda, dCha, nDigs:=11,oFont2
Local WndhDC := 0
聽 聽 DEFAULT lHorz := .t.
聽 聽 DEFAULT nWidth := 0.025 // 1/3 M/mm
聽 聽 DEFAULT nLen := 1.5 // Cmm.
聽 聽 DEFAULT cFont := 'arial'
聽 聽 DEFAULT Color := CLR_BLACK
WndhDC := oWnd:GetDC()
聽 聽 // calculo del digito de control
聽 聽 k := Left(Alltrim(cCode) + '000000000000', nDigs) // padding with '0'
聽 聽 // calculo del digito de control
聽 聽 k = k + Upc_CHECK( cCode, nDigs) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // cCode,nLen
聽 聽 nDigs++
聽 聽 dcha := Right(K, nDigs / 2)
聽 聽 izda := Left(k, nDigs / 2)
聽 聽 If !lHorz
聽 聽 聽 聽 //nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽 //nWidth :=round 聽( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nWidth := ROUND( nCm2Pixels( WndhDC, nWidth, .F. ), 0 )
聽 聽 EndIf
聽 聽 // Len of bar
聽 聽 IF lHorz
聽 聽 聽 聽 //nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .T. ), 0 )
聽 聽 Else
聽 聽 聽 聽 //nLen :=round 聽( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
聽 聽 聽 聽 nLen := ROUND( nCm2Pixels( WndhDC, nLen, .F. ), 0 )
聽 聽 EndIf
聽 聽 //define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
聽 聽 // 聽 聽 聽 聽 聽 聽nescapement if(lHorz,0,13500)
聽 聽 //define font oFont2 name cFont of oPrInt size nWidth*5.6 , nLen*0.025 ;
聽 聽 // 聽 聽 聽 聽 聽 聽nescapement if(lHorz,0,13500)
聽 聽 DEFINE FONT oFont NAME cFont SIZE nWidth * 5.6 , nLen * 0.24 ;
聽 聽 聽 聽 聽 聽 聽 聽 NESCAPEMENT If(lHorz, 0, 13500)
聽 聽 DEFINE FONT oFont2 NAME cFont SIZE nWidth * 5.6 , nLen * 0.15 ;
聽 聽 聽 聽 聽 聽 聽 聽 NESCAPEMENT If(lHorz, 0, 13500)
聽 聽 // fisrt letter
聽 聽 If lHorz
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol - nWidth * 8, left(k, 1), oFont2, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol - nWidth * 8, Left(k, 1), Color, Nil, oFont2, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * 10, right(Izda, 5), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * 10, Right(Izda, 5), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * 50, left( dcha, 5), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * 50, Left( Dcha, 5), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nLen * 0.9, nCol + nWidth * 95, right( k, 1), oFont2, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nLen * 0.9, nCol + nWidth * 95, Right( k, 1), Color, Nil, oFont2, .T., Nil, Nil )
聽 聽 Else
聽 聽 聽 聽 //oPrint:say( nRow - nWidth * 8, nCol + nLen * 0.1, left(k, 1),oFont2,,Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow - nWidth * 8, nCol + nLen * 0.1, Left(k, 1), Color, Nil, oFont2, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * 10, nCol + nLen * 0.1, right( izda, 5), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * 10, nCol + nLen * 0.1, Right( Izda, 5), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * 50, nCol + nLen * 0.1, left( dcha, 5), oFont, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * 50, nCol + nLen * 0.1, Left( Dcha, 5), Color, Nil, oFont, .T., Nil, Nil )
聽 聽 聽 聽 //oPrint:say( nRow + nWidth * 95, nCol + nLen * 0.1, right( k, 1), oFont2, , Color)
聽 聽 聽 聽 聽 聽 oWnd:Say( nRow + nWidth * 95, nCol + nLen * 0.1, Right( k, 1), Color, Nil, oFont2, .T., Nil, Nil )
聽 聽 EndIf
聽 聽 RELEASE oFont
聽 聽 RELEASE oFont2
oWnd:ReleaseDC()
RETURN Nil
//
#include "FiveWin.ch"
#define HORZSIZE 聽 聽 聽 聽 聽4
#define VERTSIZE 聽 聽 聽 聽 聽6
#define HORZRES 聽 聽 聽 聽 聽 8
#define VERTRES 聽 聽 聽 聽 聽10
#define LOGPIXELSX 聽 聽 聽 88
#define LOGPIXELSY 聽 聽 聽 90
/* ****************************************************************************
Funciones para convertir PIXEL a Twip/Pulgadas/Cent铆metros y viceversa.
hDC -> oWnd:hDC or oPrn:hDC
聽 聽************************************************************************* */
/* ******************************************************* */
FUNCTION nPixels2Twips( hDC, nPixels, lVertical )
Return (nPixels / GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) ) * 1440
/* ******************************************************* */
FUNCTION nTwips2Pixels( hDC, nTwips, lVertical )
Return (nTwips / 1440) * GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) )
/* ******************************************************* */
FUNCTION nPixels2Inches( hDC, nPixels, lVertical )
Return (nPixels / GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) )
/* ******************************************************* */
FUNCTION nInches2Pixels( hDC, nInches, lVertical )
Traza( 1, "hDc 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 =", hDc )
Traza( 1, "nInches 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 =", nInches )
Traza( 1, "lVertical 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 =", lVertical )
Traza( 1, "GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) 聽 聽 聽 聽 聽 聽 =", GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) )
Traza( 1, "(nInches * GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) )=", (nInches * GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) ) )
Return (nInches * GetDeviceCaps( hDC, If(lVertical, LOGPIXELSY, LOGPIXELSX) ) )
/* ******************************************************* */
FUNCTION nPixels2Cm( hDC, nPixels, lVertical )
Return nPixels2Inches( hDC, nPixels, lVertical ) * 2.54
/* ******************************************************* */
FUNCTION nCm2Pixels( hDC, nCm, lVertical )
Return nInches2Pixels( hDC, (nCm / 2.54), lVertical )
/* ******************************************************* */
FUNCTION uCm2Pixels( HdC, nCmy, nCmx )
nCmy := nCm2Pixels( hDC, nCmy, .T. )
nCmx := nCm2Pixels( hDC, nCmx, .F. )
Return Nil
FUNCTION Traza()
Return " "
Son ficheros independientes, donde veas #include "FiveWin.ch" es que empieza otro fichero.