Jump to content

dev botao

  • Este tópico foi criado há 3655 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

Encontrei muitos perguntando como gerar ou que ferramenta usar para gerar o qrCode. Creio que encontrei

uma forma simples de faze-lo.

 

Utilizei uma função da DarumaFramework.dll que gera um bmp instantaneamente contendo os dados necessários. Depois é só

carrega-lo para um componente qrImage do QuickReport ou equivalente.

 

1) Baixe o pacote com a DarumaFramework.dll do site desenvolvedores Daruma.

 

2) Salve-os na pasta do sistema ou em windows/system

 

3) Declare a função logo abaixo de {$R *.DFM} dessa forma :

    Function eGerarQrCodeArquivo_DUAL_DarumaFramework(sCaminhoArquivo,sDados :pChar): Integer; StdCall; External 'DarumaFramework.dll';

 

4) Para gerar o bmp contendo o qrCode . por exemplo :

    sDados:='http://www4.fazenda.rj.gov.br/consultaNFCe/paginas/consultaChaveAcesso.faces numero_chave_acesso etc';

    eGerarQrCodeArquivo_DUAL_DarumaFramework('c:\sistema\qrcode.bmp',pAnsiChar(sDados));

 

abçs

  • Moderadores
Posted

Encontrei muitos perguntando como gerar ou que ferramenta usar para gerar o qrCode. Creio que encontrei

uma forma simples de faze-lo.

 

Utilizei uma função da DarumaFramework.dll que gera um bmp instantaneamente contendo os dados necessários. Depois é só

carrega-lo para um componente qrImage do QuickReport ou equivalente.

 

1) Baixe o pacote com a DarumaFramework.dll do site desenvolvedores Daruma.

 

2) Salve-os na pasta do sistema ou em windows/system

 

3) Declare a função logo abaixo de {$R *.DFM} dessa forma :

    Function eGerarQrCodeArquivo_DUAL_DarumaFramework(sCaminhoArquivo,sDados :pChar): Integer; StdCall; External 'DarumaFramework.dll';

 

4) Para gerar o bmp contendo o qrCode . por exemplo :

    sDados:='http://www4.fazenda.rj.gov.br/consultaNFCe/paginas/consultaChaveAcesso.faces numero_chave_acesso etc';

    eGerarQrCodeArquivo_DUAL_DarumaFramework('c:\sistema\qrcode.bmp',pAnsiChar(sDados));

 

abçs

Bom dia Jairo Vianna!

 

Não é preciso tanto esforço assim!

primeiro entre na pasta Fontes/ACBrDiversos, lá vai encontrar o arquivo ACBrDelphiZXingQRCode.pas

 

Bom agora é só declarar ele na sua uses ACBrDelphiZXingQRCode e fazer o seguinte código:

var
  QRCode: TDelphiZXingQRCode;
  QRCodeBitmap: TBitmap;
  Row, Column: Integer;
begin
  QRCode       := TDelphiZXingQRCode.Create;
  QRCodeBitmap := TBitmap.Create;
  try
    QRCode.Data      := 'AQUI INFORMA O TEXTO';
    QRCode.Encoding  := qrUTF8NoBOM;
    QRCode.QuietZone := 1;

    //QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns);
    QRCodeBitmap.Width  := QRCode.Columns;
    QRCodeBitmap.Height := QRCode.Rows;

    for Row := 0 to QRCode.Rows - 1 do
    begin
      for Column := 0 to QRCode.Columns - 1 do
      begin
        if (QRCode.IsBlack[Row, Column]) then
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack
        else
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
      end;
    end;

    APict.Assign(QRCodeBitmap);
  finally
    QRCode.Free;
    QRCodeBitmap.Free;
  end;
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • 4 weeks later...
Posted

 

Bom dia Jairo Vianna!

 

Não é preciso tanto esforço assim!

primeiro entre na pasta Fontes/ACBrDiversos, lá vai encontrar o arquivo ACBrDelphiZXingQRCode.pas

 

Bom agora é só declarar ele na sua uses ACBrDelphiZXingQRCode e fazer o seguinte código:

var
  QRCode: TDelphiZXingQRCode;
  QRCodeBitmap: TBitmap;
  Row, Column: Integer;
begin
  QRCode       := TDelphiZXingQRCode.Create;
  QRCodeBitmap := TBitmap.Create;
  try
    QRCode.Data      := 'AQUI INFORMA O TEXTO';
    QRCode.Encoding  := qrUTF8NoBOM;
    QRCode.QuietZone := 1;

    //QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns);
    QRCodeBitmap.Width  := QRCode.Columns;
    QRCodeBitmap.Height := QRCode.Rows;

    for Row := 0 to QRCode.Rows - 1 do
    begin
      for Column := 0 to QRCode.Columns - 1 do
      begin
        if (QRCode.IsBlack[Row, Column]) then
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack
        else
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
      end;
    end;

    APict.Assign(QRCodeBitmap);
  finally
    QRCode.Free;
    QRCodeBitmap.Free;
  end;

Por gentileza como eu altero o tamanho do QrCode, quando gerado com a função acima? já tentei de todas as formas, estou criando uma imagem e tentando alterar o tamanho antes de gravar, porém depois de gravado não consigo fazer a leitura. Se fizer a gravação do tamanho normal funciona a leitura, mais não fica em um bom tamanho para impressão na não fiscal da bematech.

 

Image1.Canvas.Brush.Color := clWhite;
    Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
    if ((QRCodeBitmap.Width > 0) and (QRCodeBitmap.Height > 0)) then
    begin
      if (Image1.Width < Image1.Height) then
      begin
        Scale := Image1.Width / QRCodeBitmap.Width;
      end else
      begin
        Scale := Image1.Height / QRCodeBitmap.Height;
      end;
 
      Image1.Canvas.StretchDraw(Rect(0, 0, Trunc(Scale * QRCodeBitmap.Width), Trunc(Scale * QRCodeBitmap.Height)), QRCodeBitmap);
    end;
 
Obrigado!
  • 1 month later...
  • Este tópico foi criado há 3655 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...