FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour usando servicios Generador de codigo QR
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
usando servicios Generador de codigo QR
Posted: Wed Jun 24, 2015 03:32 PM
Aqui os dejo un generador de codigo QR que usa servicios en la red.
Espero que os guste .
Code (fw): Select all Collapse
// Our first DialogBox sample

#include "FiveWin.ch"
#include "ttitle.ch"

# define HTTPREQUEST_PROXYSETTING_PROXY 聽2

function Main()



聽 local obmp ,cBmp 
聽 local oDlg, oIco 
聽 local ofont
聽 聽local cCode:= space(180)

聽 聽DEFINE Font ofont NAME "Verdana" SIZE 0,14 
聽 聽 
聽 聽DEFINE ICON oIco FILE "..\icons\fivewin.ico"

聽 聽DEFINE DIALOG oDlg TITLE "Qrcode Generator" ;
聽 聽 聽 ICON oIco SIZE 350, 440

聽 聽@ 30,24 聽IMAGE oBmp FILE cBmp OF oDlg size 128,128 pixel NOBORDER 
聽 聽 聽
聽 聽 聽oBmp:lTransparent := .t.
聽 聽 聽
聽 聽// 聽cargaBmp( "hola",oBmp )
聽 聽 聽 聽
聽
聽 聽 聽@ 160, 10 SAY "Introduce el codigo a generar :" size 100, 12 ;
聽 聽 聽聽 聽聽 聽 聽 聽 聽 聽 聽 聽 FONT oFont pixel OF oDlg
聽 聽 聽
聽 聽 聽@ 170, 10 GET cCode size 120, 12 FONT oFont pixel OF oDlg 

聽 聽 聽@ 205, 85 BUTTON "&Buscar" SIZE 40, 12 OF oDlg pixel ;
聽 聽 聽 聽 聽 聽 聽 FONT oFont ; 
聽 聽 聽 聽 聽 聽 聽 ACTION cargaBmp( alltrim( cCode) ,oBmp )

聽 聽 聽@ 205,130 BUTTON "&Salir" SIZE 40, 12 pixel OF oDlg;
聽 聽 聽 聽 聽 聽 聽 聽FONT oFont ; 
聽 聽 聽 聽 聽 聽 聽 聽ACTION oDlg:End()

聽 聽ACTIVATE DIALOG oDlg CENTERED ;
聽 聽 ON INIT 聽DlgBarTitle( oDlg, " 聽Generador de Qrcode","" ,44 ) 聽;
聽 聽 ON PAINT DlgStatusBar(oDlg, 68,, .t. ) 
聽 聽
return nil

//------------------------------------------------------------------------------

Function cargaBmp( cCode, oImage )
聽local cResp
聽local nZeroZeroClr
聽local ogbmp := GdiBmp():new()
聽local nHeight := 248
聽local nWidth 聽:= 248
聽local cUrl 聽:= "http://api.qrserver.com/v1/create-qr-code/?data="
聽
聽 cUrl += GetSafeURL(hb_strtoutf8( cCode ) )
聽 cUrl += "&size=" + alltrim( str( nWidth ) ) 聽+ "x" + alltrim( str( nHeight ) )
聽 聽
聽cResp := loadBmp(cUrl)

聽if !Empty( cResp ) 
聽
聽 聽 oGbmp:hbmp := GDIPLUSIMAGELOADPNGFROMSTR( cResp,len(cResp) ) 
聽 聽
聽 聽 oImage:hBitmap := oGBmp:GetGDIHbitmap()
聽 聽 oImage:HasAlpha()
聽 聽 oImage:Refresh()
聽 聽 if msgYesNo( " 篓 quiere grabar el codigo QR a Disco ?")
聽 聽 聽 聽oGBmp:save(".\qrcode.png" )
聽 聽 endif 聽
聽 聽 oGbmp:End()
聽endif
聽
Return nil

Static Function GetSafeURL( 聽cUrl ) 
聽 聽local cAsc
聽 聽local nChr
聽 聽local sHex
聽 聽local i
聽 聽local cGetSafeURL := ""
聽 聽 聽 聽
聽 聽 For i = 1 To Len( cUrl )
聽 聽 聽 聽 cASC := substr( cUrl, i, 1)
聽 聽 聽 聽 nChr := Asc( cASC )
聽 聽 聽 聽 
聽 聽 聽 聽 If ( nChr > 47 .and. nChr < 58 ) .Or. ( nChr > 64 .And. nChr < 91 ) .Or. ( nChr > 96 .And. nChr < 123 ) 
聽 聽 聽 聽 聽 聽 cGetSafeURL += cASC
聽 聽 聽 聽 Else
聽 聽 聽 聽 聽 聽 sHex := 聽hb_NumtoHex( nChr )
聽 聽 聽 聽 聽 聽 If Len( sHex ) = 1 
聽 聽 聽 聽 聽 聽 聽 聽 cGetSafeURL += "%0" + sHex
聽 聽 聽 聽 聽 聽 Else
聽 聽 聽 聽 聽 聽 聽 聽 cGetSafeURL += "%" 聽+ sHex
聽 聽 聽 聽 聽 聽 End If
聽 聽 聽 聽 End If
聽 聽 Next

Return cGetSafeURL 

//------------------------------------------------------------------------------

Function loadBmp(cUrl)
local oHttp
local cResp := nil

聽 聽Try
聽 聽 聽 oHttp := CreateObject( "winhttp.winhttprequest.5.1" )
聽 聽 聽 聽 聽
聽 聽 聽 oHttp:Open("GET", cUrl, .f. )
聽 聽 聽 oHttp:Send()
聽 聽 聽 cResp := oHttp:ResponseBody()
聽 聽 聽 聽 聽 
聽 聽Catch
聽 聽 聽 MsgStop( "Error" )
聽 聽 聽 Return cResp
聽 聽End Try
聽 
Return cResp

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

Function DlgStatusBar(oDlg, nHeight, nCorrec , lColor )
Local nDlgHeight := oDlg:nHeight
Local aColor 聽 聽 := { { 0.40, nRGB( 200, 200, 200 ), nRGB( 184, 184, 184 ) },;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { 0.60, nRGB( 184, 184, 184 ), nRGB( 150, 150, 150 ) } }

DEFAULT nHeight 聽:= 72
DEFAULT nCorrec 聽:= 0
DEFAULT lColor 聽 := .F.

nDlgHeight:= nDlgHeight+ncorrec
IF lColor
聽 聽GradienTfill(oDlg:hDC,nDlgHeight-( nHeight-2 ),0,nDlgHeight-20,oDlg:nWidth, aColor ,.t.)
聽 聽WndBoxIn( oDlg:hDc,nDlgHeight-( nHeight-1 ),0,nDlgHeight-( nHeight ),oDlg:nWidth )
ELSE
聽 聽WndBoxIn( oDlg:hDc,nDlgHeight -( nHeight-1 ),4,nDlgHeight-( nHeight ),oDlg:nWidth - 10 )
endif

Return Nil

//------------------------------------------------------------------------------

FUNCTION DlgBarTitle( oWnd, cTitle, cBmp ,nHeight )
聽 聽LOCAL oFont
聽 聽LOCAL oTitle
聽 聽LOCAL nColText := 180
聽 聽LOCAL nRowImg 聽:= 0
聽 聽

聽 聽DEFAULT cTitle 聽:= ""
聽 聽DEFAULT nHeight := 48

聽 聽IF nHeight < 48
聽 聽 聽 nColText := 60
聽 聽 聽 nRowImg 聽:= 12
聽 聽 聽 DEFINE FONT oFont NAME "Arial" size 10, 30
聽 聽ELSE
聽 聽 聽 DEFINE FONT oFont NAME "Arial" size 12, 30
聽 聽endif

聽 聽 @ -1, -1 聽TITLE oTitle size oWnd:nWidth+1, nHeight+1 of oWnd SHADOWSIZE 0
聽 聽
聽 聽@ 聽nRowImg, 聽10 聽TITLEIMG 聽OF oTitle BITMAP cBmp 聽SIZE 48, 48 REFLEX ;
聽 聽 聽 聽 聽 TRANSPARENT
聽 聽
聽 聽 @ 聽nRowImg-2 , 聽nColText TITLETEXT OF oTitle TEXT cTitle COLOR CLR_BLACK FONT oFont

聽 聽 oTitle:aGrdBack := { { 1, RGB( 255, 255, 255 ), RGB( 229, 233, 238 ) 聽} }
聽 聽 oTitle:nShadowIntensity = 0
聽 聽 oTitle:nShadow = 0
聽 聽 oTitle:nClrLine1 := nrgb(0,0,0)
聽 聽 oTitle:nClrLine2 := RGB( 229, 233, 238 )
聽 聽 oWnd:oTop:= oTitle
聽 聽 
聽 聽 聽 

RETURN oTitle
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: usando servicios Geenrador de codigo QR
Posted: Wed Jun 24, 2015 03:38 PM

Gracias Manuel

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: usando servicios Geenrador de codigo QR
Posted: Wed Jun 24, 2015 04:04 PM

Hola Manuel:
DLGSTATUSBAR
DLGBARTITLE
GDIBMP
GETSAFEURL
LOADBMP
GDIPLUSIMAGELOADPNGFROMSTR
No me las reconoce. Uso Harbour 3.1.0, Borland 5.82 y FiveWin 11.12
Gracias!!

Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: usando servicios Geenrador de codigo QR
Posted: Wed Jun 24, 2015 04:11 PM
cmsoft wrote:Hola Manuel:
DLGSTATUSBAR
DLGBARTITLE
GDIBMP
GETSAFEURL
LOADBMP
GDIPLUSIMAGELOADPNGFROMSTR
No me las reconoce. Uso Harbour 3.1.0, Borland 5.82 y FiveWin 11.12
Gracias!!


Perdonar , las funciones que faltaban ya estan en el mensaje de arriba ( me fall贸 el copia-pega ) :- )
Todas salvo GDIPLUSIMAGELOADPNGFROMSTR que pertenece al c贸digo de fivewin pero de una version mas moderna que la tuya .
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: usando servicios Generador de codigo QR
Posted: Wed Jun 24, 2015 10:29 PM

Manuel, Obtengo este mensaje de error Error: Unresolved external '_HB_FUN_GDIPLUSIMAGELOADPNGFROMSTR' referenced from C:\FWH1412\SAMPLES\QR.OBJ
Esta funci贸n no se encuentra en fwh14.12 ???

Gracias

Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: usando servicios Generador de codigo QR
Posted: Thu Jun 25, 2015 03:13 PM
horacio wrote:Manuel, Obtengo este mensaje de error Error: Unresolved external '_HB_FUN_GDIPLUSIMAGELOADPNGFROMSTR' referenced from C:\FWH1412\SAMPLES\QR.OBJ
Esta funci贸n no se encuentra en fwh14.12 ???

Gracias


Horacio . a帽ade a tu archivo gdiplus.cpp la funcion .
Code (fw): Select all Collapse
HB_FUNC( GDIPLUSIMAGELOADPNGFROMSTR )
{
 void const *lpData = hb_parc(1) ;
 DWORD dwSize   =  hb_parni(2) ;
 HGLOBAL hgImage;
 IStream *isImage  = NULL;
 Bitmap  *pbmImage = NULL;

 HBITMAP hbmpImage;
                 hgImage = GlobalAlloc(GMEM_FIXED, dwSize);
                 if(hgImage)
                    {
                        CopyMemory(GlobalLock(hgImage), lpData, dwSize);
                        GlobalUnlock(hgImage);
                        CreateStreamOnHGlobal(hgImage, FALSE, &isImage );
                        if(isImage)
                            {
                               pbmImage = new  Bitmap(isImage);
                                isImage->Release();
                           }
                       GlobalFree(hgImage);
                   }

         hb_retnl( ( HB_LONG ) pbmImage );

}
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: usando servicios Generador de codigo QR
Posted: Thu Jun 25, 2015 10:57 PM

Gracias Manuel, pruebo y comento

Saludos

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: usando servicios Generador de codigo QR
Posted: Thu Jun 25, 2015 11:26 PM

Gracias Manuel

Funciona Perfecto.

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: usando servicios Generador de codigo QR
Posted: Fri Jun 26, 2015 01:07 AM

Adhemar, que version FWH usas?
Saludos.

Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: usando servicios Generador de codigo QR
Posted: Fri Jun 26, 2015 01:11 AM
Manuel, 驴Como lo hago funcionar con FWH 12.04?
Gracias.

xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 9445)
Copyright 1999-2012, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'D:\FERR_P~1\wfic32.prg' and generating preprocessed output to 'D:\FERR_P~1\wfic32.ppo'...
D:\FERR_P~1\wfic32.prg(5971) Warning W0001 Ambiguous reference: 'GDIPLUSIMAGELOADPNGFROMSTR'
D:\FERR_P~1\wfic32.prg(5972) Error E0020 Incomplete statement or unbalanced delimiters
D:\FERR_P~1\wfic32.prg(5978) Error E0030 Syntax error: "syntax error at 'CONST'"
D:\FERR_P~1\wfic32.prg(5981) Error E0030 Syntax error: "syntax error at 'HBMPIMAGE'"
D:\FERR_P~1\wfic32.prg(5982) Error E0020 Incomplete statement or unbalanced delimiters
D:\FERR_P~1\wfic32.prg(5986) Error E0030 Syntax error: "syntax error at 'GLOBALUNLOCK'"
D:\FERR_P~1\wfic32.prg(5987) Error E0020 Incomplete statement or unbalanced delimiters
D:\FERR_P~1\wfic32.prg(5990) Error E0030 Syntax error: "syntax error at 'BITMAP'"
D:\FERR_P~1\wfic32.prg(5992) Error E0030 Syntax error: "syntax error at '}'"
D:\FERR_P~1\wfic32.prg(5995) Error E0030 Syntax error: "syntax error at 'PBMIMAGE'"
D:\FERR_P~1\wfic32.prg(5996) Error E0030 Syntax error: "syntax error at '}'"
D:\FERR_P~1\wfic32.prg(5997) Warning W0007 Function 'DLGBARTITLE' does not end with RETURN statement
10 errors
No code generated
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: usando servicios Generador de codigo QR
Posted: Fri Jun 26, 2015 07:04 AM
FranciscoA wrote:Manuel, 驴Como lo hago funcionar con FWH 12.04?
Gracias.


El c贸digo de gdiplus es propietario de Fivewin por ello no se deber铆a publicar pero en este post viewtopic.php?f=6&t=29636&hilit=gdiplus.cpp#p167521 Antonio lo publico y yo hice a帽adidos ... coge la ultima versi贸n de los archivos tgdiplus.prg y gdiplus.cpp que esta en ese hilo , a帽ade la funci贸n aqui publicada y enlazalo todo tu compilaci贸n . Deber铆a funcionar , aunque esta probado con harbour pero no con xhabour.
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: usando servicios Generador de codigo QR
Posted: Fri Jun 26, 2015 10:04 PM
El c贸digo de gdiplus es propietario de Fivewin por ello no se deber铆a publicar pero en este post viewtopic.php?f=6&t=29636&hilit=gdiplus.cpp#p167521 Antonio lo publico y yo hice a帽adidos ... coge la ultima versi贸n de los archivos tgdiplus.prg y gdiplus.cpp que esta en ese hilo , a帽ade la funci贸n aqui publicada y enlazalo todo tu compilaci贸n . Deber铆a funcionar , aunque esta probado con harbour pero no con xhabour.


Gracias Manuel, voy a probar.
Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: usando servicios Generador de codigo QR
Posted: Fri Jun 26, 2015 11:50 PM

Francisco, Tengo FWH1501

Manuel, es posible generar el c贸digo QR sin internet?

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: usando servicios Generador de codigo QR
Posted: Sat Jun 27, 2015 08:05 AM
acuellar wrote:Francisco, Tengo FWH1501

Manuel, es posible generar el c贸digo QR sin internet?

Saludos,

Adhemar

No . el c贸digo es un ejemplo de concepto de uso de servicios en internet , sin internet no funcionar铆a.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: usando servicios Generador de codigo QR
Posted: Sun Jun 28, 2015 01:23 AM
Saludos

Harbour desde hace tiempo tiene esa funcionalidad, usando Zebra, hice algunas cosas con eso para facilitar el uso

http://forums.fivetechsupport.com/viewtopic.php?p=158455#p158455