// Usando HBZEBRA.LIB para gerar QRCODE.
Code: Select all | Expand
#Include "Fivewin.ch"#Include "Codebar.ch"STATIC oCode, oWnd, cCode//function Main()FUNCTION QrCode( SEQUENC ) local oMenu oCode := TCodeBars():New(500,500) // SEQUENC := ( "35141146377222003730599000004630001158179941|20141105134922|10.00|61694805808|m+4o8FY1lig1zcy6VU3t7INVwE6kiA/ykLXKDFZfb9gu0g4wl3Fk2HYaRhSt8G+yk9mP/R65m3R7V2IO8CxnmO1oVtlamB6UKA+UZZqDNEqtYlhQzLySNzMG0thaNMZsq5RxmQ3eQLPw8LLez3MqWvUveFXNSSq6AGEX2+KOdavteo3K2L06SQoVIjwkmcgRzqhfHP3y8t2wfr1nw/WAnaCF9ZY/K4dTykk3hsXcan/MKCTBlcSOhNgSh3sdsQHpl2w2tmbLBsYBLFkuvKlwzHarNJQ1RfRznGdojHglQH1KVtbAUXKke54pdRt3JL7nJlR+Lbmtd2tjcT2vRyTepw==" ) IF ( SEQUENC ) = NIL cCode := "CODIGO INVALIDO OU VAZIO..." ? cCode RETURN NIL ENDIF cCode := ALLTRIM( SEQUENC ) // Direto sem MENU // oMenu = BuildMenu() // nao quero menu //DEFINE WINDOW oWnd menu oMenu //-> Invisibilizo a Janela DEFINE WINDOW oWnd FROM -10, -10 TO -5, -5 // ATIVO, APENAS PARA GERAR SEM MOSTRAR ACTIVATE WINDOW oWnd ; // nCode // cCode ON INIT( BuildCode( CODEBAR_QRCODE, cCode ), oWnd:End() )RETURN NIL/*function BuildMenu() local oMenu menu oMenu menuitem "CodeBar" menu menuitem "EAN13" action( BuildCode( CODEBAR_EAN13, "477012345678" ) ) menuitem "EAN8" action( BuildCode( CODEBAR_EAN8, "1234567" ) ) menuitem "UPCA" action( BuildCode( CODEBAR_UPCA, "01234567891" ) ) menuitem "UPCE" action( BuildCode( CODEBAR_UPCE, "123456" ) ) menuitem "CODE39" action( BuildCode( CODEBAR_CODE39, "ABC123" ) ) menuitem "ITF" action( BuildCode( CODEBAR_ITF, "1234", HB_ZEBRA_FLAG_WIDE3 ) ) menuitem "MSI" action( BuildCode( CODEBAR_MSI, "1234567", HB_ZEBRA_FLAG_CHECKSUM ) ) menuitem "CODABAR" action( BuildCode( CODEBAR_CODABAR, "40156", HB_ZEBRA_FLAG_WIDE3 ) ) menuitem "CODE93" action( BuildCode( CODEBAR_CODE93, "ABC-123" ) ) menuitem "CODE11" action( BuildCode( CODEBAR_CODE11, "12", HB_ZEBRA_FLAG_WIDE3 ) ) menuitem "CODE128" action( BuildCode( CODEBAR_CODE128, "Code 128") ) menuitem "PDF417" action( BuildCode( CODEBAR_PDF417, "PDF17" ) ) menuitem "DATAMATRIX" action( BuildCode( CODEBAR_DATAMATRIX, "DataMatrix :)") ) //menuitem "QR-CODE" action( BuildCode( CODEBAR_QRCODE, "http://danielgarciagil.com/") ) // nCode // cCode menuitem "QR-CODE" ; action( BuildCode( CODEBAR_QRCODE, "35141146377222003730599000004630001158179941|20141105134922|10.00|61694805808|m+4o8FY1lig1zcy6VU3t7INVwE6kiA/ykLXKDFZfb9gu0g4wl3Fk2HYaRhSt8G+yk9mP/R65m3R7V2IO8CxnmO1oVtlamB6UKA+UZZqDNEqtYlhQzLySNzMG0thaNMZsq5RxmQ3eQLPw8LLez3MqWvUveFXNSSq6AGEX2+KOdavteo3K2L06SQoVIjwkmcgRzqhfHP3y8t2wfr1nw/WAnaCF9ZY/K4dTykk3hsXcan/MKCTBlcSOhNgSh3sdsQHpl2w2tmbLBsYBLFkuvKlwzHarNJQ1RfRznGdojHglQH1KVtbAUXKke54pdRt3JL7nJlR+Lbmtd2tjcT2vRyTepw==" ) ) endmenu endmenu return oMenu*/function BuildCode( nCode, cCode, nFlags ) local oVent local hDC := oWnd:GetDC() local oPrn LOCAL hDib LOCAL hBmp := CreateCompatibleBitmap( hDC, 150, 50 ) // 150, 50 LOCAL hOldBmp := SelectObject( hDC, hBmp ) default nFlags := 0 oCode:Reset() if nCode < CODEBAR_PDF417 oCode:nHeightCode = oCode:nHeight - 50 oCode:nWidthCode = 1.5 else if nCode == CODEBAR_QRCODE oCode:nHeightCode = 3 // altura // 7.23 PAGINA CHEIA oCode:nWidthCode = 3 // Largura // 7.23 PAGIAN CHEIA else oCode:nHeightCode = 3 oCode:nWidthCode = 1 endif endif oCode:SetType( nCode ) oCode:SetCode( cCode ) oCode:SetFlags( nFlags ) oCode:Build() DrawBitmap( hDC, oCode:hCodeBar, 0, 0 ) hDib := DibFromBitmap( oCode:hCodeBar ) DibWrite( "QRCODE.BMP" , hDib ) // HBZEBRA, SOMENTE GERA EM *.BMP, uma pena. // DibWrite( "QRCODE.JPG" , hDib ) // mesmo tamanho que o *.BMP ?? GloBalFree( hDib ) // SE EU QUISER IMPRIMIR. /* PRINT oPrn NAME "Qr code print" PREVIEW PAGE *Drawbitmap( oPrn, oCode:hCodeBar, 100, 100) *oPrn:SayImage( 100, 100, oCode:hCodeBar, 300, 300 ) *oPrn:SayBitmap( 100, 100, oCode:hCodeBar, 300, 300 ) //Drawbitmap( oPrn:hDCOut, oCode:hCodeBar, 200, 400) Drawbitmap( oPrn:hDCOut, oCode:hCodeBar, 200, 400) //oPrn:Say( 500, 100, "This is a test" ) ENDPAGE ENDPRINT */ oWnd:ReleaseDC() return nil // CLASSE/*#include "fivewin.ch"#include "codebar.ch"*/CLASS TCodeBars DATA aTypes HIDDEN DATA cCode DATA nFlags DATA hCodeBar DATA hData DATA nType, nWidth, nHeight, nWidthCode, nHeightCode METHOD New() METHOD End() INLINE DeleteObject( ::hCodeBar ), If( ::hData != NIL, hb_zebra_destroy( ::hData ), ) METHOD DefError( nError ) METHOD SetCode( cCode ) METHOD SetFlags( nFlags ) METHOD SetType( cnType ) METHOD Reset() INLINE ::End() METHOD Build() METHOD Rebuild() INLINE ::Reset(), ::Build() ENDCLASS//--------------------------------------//METHOD New( nWidth, nHeight, nWidthCode, nHeightCode, cnType, cCode, nFlags ) CLASS TCodeBars DEFAULT nWidth := 200,; nHeight := 100,; nWidthCode := 1,; nHeightCode := 3 ::aTypes = { { "EAN13" , {| | hb_zebra_create_ean13( ::cCode, ::nFlags ) } },; { "EAN8" , {| | hb_zebra_create_ean8( ::cCode, ::nFlags ) } },; { "UPCA" , {| | hb_zebra_create_upca( ::cCode, ::nFlags ) } },; { "UPCE" , {| | hb_zebra_create_upce( ::cCode, ::nFlags ) } },; { "ITF" , {| | hb_zebra_create_itf( ::cCode, ::nFlags ) } },; { "MSI" , {| | hb_zebra_create_msi( ::cCode, ::nFlags ) } },; { "CODABAR" , {| | hb_zebra_create_codabar( ::cCode, ::nFlags ) } },; { "CODE11" , {| | hb_zebra_create_code11( ::cCode, ::nFlags ) } },; { "CODE39" , {| | hb_zebra_create_code39( ::cCode, ::nFlags ) } },; { "CODE93" , {| | hb_zebra_create_code93( ::cCode, ::nFlags ) } },; { "CODE128" , {| | hb_zebra_create_code128( ::cCode, ::nFlags ) } },; { "PDF417" , {| | NIL /*hb_zebra_create_pdf417( ::cCode, ::nFlags ) */} },; { "DATAMATRIX" , {| | hb_zebra_create_datamatrix( ::cCode, ::nFlags ) } },; { "QRCODE" , {| | hb_zebra_create_qrcode( ::cCode, ::nFlags ) } } } ::nWidth = nWidth ::nHeight = nHeight ::nWidthCode = nWidthCode ::nHeightCode = nHeightCode ::SetType( cnType ) ::SetCode( cCode ) ::SetFlags( nFlags )return Self//--------------------------------------//METHOD Build() CLASS TCodeBars local hBmpOld local hDCDesk := GetDC( GetDesktopWindow() ) local hDCMem := CreateCompatibleDC( hDCDesk ) local hBrush := CreateSolidBrush( 0 ) local hBack := CreateSolidBrush( CLR_WHITE ) ::hCodeBar = CreateCompatibleBitMap( hDCDesk, ::nWidth, ::nHeight ) hBmpOld = SelectObject( hDCMem, ::hCodeBar ) ::hData := Eval( ::aTypes[ ::nType ][ CODEBAR_BLOCK ] ) ::DefError() FillRect( hDCMem, { 0, 0, ::nHeight, ::nWidth }, hBack ) hb_zebra_draw( ::hData, {| x, y, w, h | FillRect( hDCMem, { y, x, y + h, x + w }, hBrush ) }, 0, 0, ::nWidthCode, ::nHeightCode ) //DrawText( hDCMem, ::cCode, { ::nHeight - 15, 0, ::nHeight, ::nWidth }, 1 ) SelectObject( hDCMem, hBmpOld ) ReleaseDC( GetDesktopWindow(), hDCDesk ) DeleteDC( hDCMem ) DeleteObject( hBrush ) DeleteObject( hBack ) return NIL//--------------------------------------//METHOD SetCode( cCode ) CLASS TCodeBars if ! Empty( cCode ) if ValType( cCode ) != "C" cCode = cValToChar( cCode ) endif ::cCode = cCode endifreturn NIL//--------------------------------------//METHOD SetFlags( nFlags ) CLASS TCodeBars ::nFlags = nFlagsreturn NIL//--------------------------------------//METHOD SetType( cnType ) class TCodeBars local cType if ( ( cType := ValType( cnType ) )$"CN" ) if cType == "N" if cnType > 0 .and. cnType < 15 ::nType = cnType endif else ::nType = AScan( ::aTypes, {| a | a[ CODEBAR_TYPE ] == Upper( cnType ) } ) endif else ::nType = DEFAULT_CODEBAR endif return NIL //--------------------------------------//METHOD DefError( ) CLASS TCodeBars local oError local nError := 0 if ::hData != NIL nError = hb_zebra_geterror( ::hData ) endif if nError != 0 hb_zebra_destroy( ::hData ) oError := ErrorNew() oError:SubSystem = "TCODEBARS" oError:SubCode = nError oError:Severity = 2 Eval( ErrorBlock(), oError ) endifRETURN nil#pragma BEGINDUMP#include <hbapi.h>#include <windows.h>HB_FUNC( CREATECOMPATIBLEBITMAP ) // hDC, nWidth, nHeight{ hb_retnl( ( LONG ) CreateCompatibleBitmap( ( HDC ) hb_parnl( 1 ), hb_parnl( 2 ), hb_parnl( 3 ) ) );}#pragma ENDDUMP/*// CODEBAR.CH#include "hbzebra.ch" #define CODEBAR_EAN13 1#define CODEBAR_EAN8 2#define CODEBAR_UPCA 3#define CODEBAR_UPCE 4#define CODEBAR_ITF 5#define CODEBAR_MSI 6#define CODEBAR_CODABAR 7#define CODEBAR_CODE11 8#define CODEBAR_CODE39 9#define CODEBAR_CODE93 10#define CODEBAR_CODE128 11#define CODEBAR_PDF417 12#define CODEBAR_DATAMATRIX 13#define CODEBAR_QRCODE 14#define CODEBAR_TYPE 1#define CODEBAR_BLOCK 2#define DEFAULT_CODEBAR CODEBAR_PDF417*/// FIM DO PROGRAMA - 26/08/2015
saludos.