usando servicios Generador de codigo QR

usando servicios Generador de codigo QR

Postby mastintin » Wed Jun 24, 2015 3:32 pm

Aqui os dejo un generador de codigo QR que usa servicios en la red.
Espero que os guste .
Code: Select all  Expand view


// 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

 
Last edited by mastintin on Wed Jun 24, 2015 4:14 pm, edited 2 times in total.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: usando servicios Geenrador de codigo QR

Postby cnavarro » Wed Jun 24, 2015 3: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: usando servicios Geenrador de codigo QR

Postby cmsoft » Wed Jun 24, 2015 4: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!!
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: usando servicios Geenrador de codigo QR

Postby mastintin » Wed Jun 24, 2015 4: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 .
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: usando servicios Generador de codigo QR

Postby horacio » 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
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: usando servicios Generador de codigo QR

Postby mastintin » Thu Jun 25, 2015 3: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: Select all  Expand view


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 );

}
 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: usando servicios Generador de codigo QR

Postby horacio » Thu Jun 25, 2015 10:57 pm

Gracias Manuel, pruebo y comento

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: usando servicios Generador de codigo QR

Postby acuellar » Thu Jun 25, 2015 11:26 pm

Gracias Manuel

Funciona Perfecto.

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: usando servicios Generador de codigo QR

Postby FranciscoA » Fri Jun 26, 2015 1:07 am

Adhemar, que version FWH usas?
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: usando servicios Generador de codigo QR

Postby FranciscoA » Fri Jun 26, 2015 1: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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: usando servicios Generador de codigo QR

Postby mastintin » Fri Jun 26, 2015 7: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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: usando servicios Generador de codigo QR

Postby FranciscoA » 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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: usando servicios Generador de codigo QR

Postby acuellar » 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.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: usando servicios Generador de codigo QR

Postby mastintin » Sat Jun 27, 2015 8: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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: usando servicios Generador de codigo QR

Postby Daniel Garcia-Gil » Sun Jun 28, 2015 1: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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests