FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour QR en portapapeles
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
QR en portapapeles
Posted: Sat Feb 08, 2025 03:50 PM

Hola a todos,

驴Ustedes sabr铆an como hacer para generar un c贸digo QR, y dejarlo en el portapapeles para luego en otra aplicaci贸n realizar un 'pegar'?

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 05:01 PM
Carlos,

Aqui tenemos un muy buen ejemplo de QR de C茅sar:
https://forums.fivetechsupport.com/viewtopic.php?p=276837#p276837

y luego seria cuesti贸n de usar FW_CopyToClipboard( ... ) proporcionandole la imagen del QR.

nos falta ese paso... pensando...
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 05:28 PM
Tocayo,
#include "FiveWin.ch"

REQUEST FWZEBRA    // *** Indispensable para dibujar c贸digo QR

Function Inicio()
   LOCAL oDlg, hBmp
   LOCAL cTxt4QR := "Prueba de Copy - Paste" + CRLF + "FiveWin 2025" 

   hBmp := FW_BarCodeBmp( cTxt4QR, "QRCODE", 250, 250 )
   hBmp := bmp2alpha( hBmp )   // *** Sin esta l铆nea QRcode tiene un feo marco negro
 // *** Siguiente l铆nea hace la magia y guarda en el portapapeles, luego,
 // *** puedes hacer PASTE (Ctrl+V) en Paint, PhotoShop, Word,  etc., y recuperas tu c贸digo QR
   FW_CopyToClipboard(hBmp)
   
   DEFINE DIALOG oDlg SIZE 400,300 PIXEL TRUEPIXEL
        @ 20,20 XIMAGE oImg SIZE -20,-20 OF oDlg PIXEL RESOURCE hBmp
   ACTIVATE DIALOG oDlg CENTERED
return nil
//-----------------------------------------------------------------------//

Function bmp2alpha( hBmp1 )
   local hBmp, oBmp
   oBmp  := GdiBmp():New()
   oBmp:CreateFromRes( hBmp1, 0 )
   oBmp:Conver24to32Alpha( .F. )
   hBmp  := oBmp:GetGDIHbitmap()
   oBmp:Set32Bits(.F.)
   oBmp:Destroy()
   DeleteObject( hBmp1 )
return hBmp
//------------------------------------------------------------------------------//

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 05:36 PM
Antonio Linares wrote: Carlos,

Aqui tenemos un muy buen ejemplo de QR de C茅sar:
https://forums.fivetechsupport.com/viewtopic.php?p=276837#p276837

y luego seria cuesti贸n de usar FW_CopyToClipboard( ... ) proporcionandole la imagen del QR.

nos falta ese paso... pensando...
Si, si. En el documento ya lo consigo imprimir, la intenci贸n es disponer de 茅l en el clipboard.

Estoy mirando esto:
hBitmap := FW_BarCodeBmp( cText, "QR-CODE", 3.5, 3.5, Nil )
SetClipboardData( 2, hBitmap )
FW_CopyToClipBoard( cText )
FW_CopyToClipBoard( hBitmap, 2 )

Pero no me funciona, al menos en el Word no consigo que 'pegue' el Qr. (el cText sin problema).

A ver que se te ocurre.

Muchas gracias,

EDITADO
=======

FW_BarCodeBmp( cText, "QR-CODE", 3.5, 3.5, Nil ) creo que deb铆a ser FW_BarCodeBmp( cText, "QRCODE", 3.5, 3.5, Nil )

Por otra parte, las unidades de FW_BarCodeBmp( cText, "QRCODE", 3.5, 3.5, Nil ), son pixels, pulgadas, cent铆metros?

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 05:52 PM

Vamos bien!!!!

Por otra parte, las unidades de FW_BarCodeBmp( cText, "QRCODE", 3.5, 3.5, Nil ), son pixels, pulgadas, cent铆metros?

Me ha creado un QR que no parece correcto, desde el m贸vil no lo identifica.

Lo he 'pagado' en el Word, le he impreso y nada, que no le gusta.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 06:17 PM

el tama帽o estandard de un QR es 4.0

FW_BarCodeBmp( cText, "QR-CODE", 4.0, 4.0, Nil )

prueba hacerlo asi o mas grande

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 06:28 PM
sysctrl2 wrote: el tama帽o estandard de un QR es 4.0
FW_BarCodeBmp( cText, "QR-CODE", 4.0, 4.0, Nil )

prueba hacerlo asi o mas grande
脡s para Verifactu, nos permiten entre 3 y 4 cm., lo voy a poner a 3,5cm.

He visto que CGallego utiliza 250,250 adem谩s de QRCODE.

FW_BarCodeBmp( cText, "QR-CODE", 3500, 350, Nil )
El QR mide 9,5 cm. aproximadamente, he probado con 129,129 y 'pagado' en un Word a DIN A4 mide 3,5 cm; para mi el tama帽o correcto.

Ahora bien, me dibuja el marco negro y el lector no lo identifica como un QR v谩lido.

Mi funci贸n es esta:

// Para usar QR precisa de "REQUEST FWZEBRA"
REQUEST FWZEBRA

FUNCTION VFQr2Clipboard( AMPAARRA, cNIF, cVFCODFAC, dDataFact, nImpotota )

Local cText := ""
Local hBitmap := 0

cText := VF_URL_QR( AMPAARRA, ;
AllTrim( cNIF ), ;
AllTrim( cVFCODFAC ), ;
dDataFact, ;
nImpoTota ;
)

Traza( 1, "cText=", cText )

MsgInfo( cText, "B" )

hBitmap := FW_BarCodeBmp( cText, "QRCODE", 129, 129, Nil )

hBitmap := bmp2alpha( hBitmap )

FW_CopyToClipBoard( hBitmap )

Return Nil
/* *********************************************************************************** */]

EDITO
=====
Da igual que use "QR-CODE" que "QRCODE"

EDITO-2
======
Y no necesita REQUEST FWZEBRA.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 06:57 PM
He cortado con las tijeras el marco negro y el QR es correcto.

Vender茅 el soft con un kit de tijeras para QR.
:D :D :D

Y todo es digital, el soft digital, las tijeras con los dedos (digital). :wink:

Venga, que alguien me eche una mano. :oops:

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 07:38 PM
Parece que es un bug en FW_CopyToClipboard()

Otra opci贸n es con oImg:bPainted. Hace el copy sin el feo marco
#include "FiveWin.ch"

REQUEST FWZEBRA    // *** Indispensable para dibujar c贸digo QR

Function Inicio()
   LOCAL oDlg, hBmp
   LOCAL cTxt4QR := "Prueba de Copy - Paste" + CRLF + "FiveWin 2025" 

   hBmp := FW_BarCodeBmp( cTxt4QR, "QRCODE", 250, 250 )
   hBmp := bmp2alpha( hBmp )   // *** Sin esta l铆nea QRcode tiene un feo marco negro
 // *** Siguiente l铆nea hace la magia y guarda en el portapapeles, luego,
 // *** puedes hacer PASTE (Ctrl+V) en Paint, PhotoShop, Word,  etc., y recuperas tu c贸digo QR
 //  FW_CopyToClipboard(hBmp)    // *** Tambi茅n genera marco negro al hacer paste.
   
   DEFINE DIALOG oDlg SIZE 400,350 PIXEL TRUEPIXEL
        @ 03,20 BUTTON oBtn PROMPT "Copy" OF oDlg PIXEL SIZE 80,25 ACTION oImg:CopytoClipBoard(.T.)  

        @ 40,20 XIMAGE oImg SIZE -20,-20 OF oDlg PIXEL RESOURCE hBmp
        oImg:bPainted := {||oImg:CopytoClipBoard(.T.)}   // *** Hace el paste correcto, sin el cuadro negro.

   ACTIVATE DIALOG oDlg CENTERED
return nil
//-----------------------------------------------------------------------//

Function bmp2alpha( hBmp1 )
   local hBmp, oBmp
   oBmp  := GdiBmp():New()
   oBmp:CreateFromRes( hBmp1, 0 )
   oBmp:Conver24to32Alpha( .F. )
   hBmp  := oBmp:GetGDIHbitmap()
   oBmp:Set32Bits(.F.)
   oBmp:Destroy()
   DeleteObject( hBmp1 )
return hBmp
//------------------------------------------------------------------------------//
Ya no hace falta que incluyas las tijeras :)

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 08:16 PM
Ostras!! :|

El caso es que no lo muestro en pantalla.

Voy a investigar XIMAGE a ver que hace.

Y anulo el pedido a Amazon de las 35698 tijeras que he pedido.

Supongo que si Antonio nos lee quiz谩s resuelva el bug de FW_CopyToClipboard()

Muchas gracias por el inter茅s.
Sigo investigando.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 08:49 PM
Carlos,

Has probado asi ?

FW_BarCodeBmp( cText, "QRCODE", 129, 129, Nil, CLR_WHITE )

No encuentro el c贸digo de Bmp2Alpha(), donde est谩 ? :)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 09:13 PM
Antonio Linares wrote: Carlos,

Has probado asi ?

FW_BarCodeBmp( cText, "QRCODE", 129, 129, Nil, CLR_WHITE )

No encuentro el c贸digo de Bmp2Alpha(), donde est谩 ? :)
Sigue apareciendo el marco negro alrededor. QR no identificable.

Function bmp2alpha( hBmp1 )
local hBmp, oBmp
oBmp := GdiBmp():New()
oBmp:CreateFromRes( hBmp1, 0 )
oBmp:Conver24to32Alpha( .F. )
hBmp := oBmp:GetGDIHbitmap()
oBmp:Set32Bits(.F.)
oBmp:Destroy()
DeleteObject( hBmp1 )
return hBmp

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 09:35 PM
Carlos,

Estoy probando asi pero desde el mspaint al pegar se ve todo en negro:
#include "FiveWin.ch"

function Main()

   FW_CopyToClipBoard( bmp2Alpha( FW_BarCodeBmp( "Hola", "QRCODE", 400.0, 400.0 ) ) )

return nil

Function bmp2alpha( hBmp1 )
   local hBmp, oBmp
   oBmp := GdiBmp():New()
   oBmp:CreateFromRes( hBmp1, 0 )
   oBmp:Conver24to32Alpha( .F. )
   hBmp := oBmp:GetGDIHbitmap()
   oBmp:Set32Bits(.F.)
   oBmp:Destroy()
   DeleteObject( hBmp1 )
   return hBmp
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 10:07 PM
Antonio Linares wrote: Carlos,

Estoy probando asi pero desde el mspaint al pegar se ve todo en negro:
#include "FiveWin.ch"

function Main()

   FW_CopyToClipBoard( bmp2Alpha( FW_BarCodeBmp( "Hola", "QRCODE", 400.0, 400.0 ) ) )

return nil

Function bmp2alpha( hBmp1 )
   local hBmp, oBmp
   oBmp := GdiBmp():New()
   oBmp:CreateFromRes( hBmp1, 0 )
   oBmp:Conver24to32Alpha( .F. )
   hBmp := oBmp:GetGDIHbitmap()
   oBmp:Set32Bits(.F.)
   oBmp:Destroy()
   DeleteObject( hBmp1 )
   return hBmp
Precisamente lo que comentaba Carlos Gallego.
Al parecer antes sin la funci贸n bmp2alpha() se ve铆a negro (eso est谩 anotado en el c贸digo de ejemplo que ha publicado).
De ah铆 el uso de la funci贸n bmp2alpha(), para que no se viera todo en negro.

Yo incluso estaba pensando en crear un DIALOG, meterle el QR, usar m茅todos de la clase WINDOW y ver si se puede capturar; vamos una soluci贸n parecida que ha encontrado Carlos Gallego ante el error que se da ahora.
Pero yo crear铆a el DIALOG, le meto el QR, lo capturo y cierro DIALOG.
Al menos tendr茅 respuesta al problema aunque no me guste mucho. De momento todo es teor铆a, es s贸lo una idea.
A ver ma帽ana como me levanto y sigo con ello.

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: QR en portapapeles
Posted: Sat Feb 08, 2025 10:24 PM

Le consulto a Rao, el implement贸 estas funciones

regards, saludos

Antonio Linares
www.fivetechsoft.com