Membros Pro Mario Inacio Postado 10 Janeiro Membros Pro Compartilhar Postado 10 Janeiro Boa tarde. Na fase final de configuração, e conforme o manual do Sitef, quando apresentado o QrCode para PIX, deve haver a possibilidade de cancelar o QrCode, por desistência do cliente por exemplo. No Evento QuandoExibirQRCode já inseri a criação do form que mostrará o QrCode, só não consigo fazer com o que o foco fique nele pra que eu possa clicar num botão de cancelamento da operação. procedure TfMenu.TEFAPIQuandoExibirQRCode(const DadosQRCode: String); var QRCode: TDelphiZXingQRCode; QRCodeBitmap: TBitmap; Row, Column: Integer; begin if DadosQRCode <> '' then begin if not FormExiste(fTEFExibeQrCode) then Application.CreateForm(TfTEFExibeQrCode, fTEFExibeQrCode); end else begin if FormExiste(fTEFExibeQrCode) then FechaForm(fTEFExibeQrCode); Exit; end; QRCode := TDelphiZXingQRCode.Create; QRCodeBitmap := TBitmap.Create; try QRCode.Encoding := qrUTF8BOM; QRCode.QuietZone := 2; QRCode.Data := widestring(DadosQRCode); 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; with fTEFExibeQrCode do begin prog.Max := LConfTerm('TEFPIX_SLEEP',5); if prog.max = 0 then prog.max := 300000; imgQRCode.Picture.Bitmap.Assign(QRCodeBitmap); Timer1.Enabled := True; Show; Refresh; end; //Sleep(LConfTerm('TEFPIX_SLEEP',5)); finally QRCode.Free; QRCodeBitmap.Free; end; end; Obs: Inseri um timer e um progressBar no form criado pra mostrar o andamento do tempo para efetuar o PIX. No form criado, inseri um botão Setando uma variavel global para "iCanceladoPeloOperador := TRue;" procedure TfTEFExibeQrCode.BotaoFecharClick(Sender: TObject); begin fMenu.iCanceladoPeloOperador := TRue; Close; end; E no evento QuandoEsperarOperacao verifico essa variavel global: procedure TfMenu.TEFAPIQuandoEsperarOperacao( OperacaoAPI: TACBrTEFAPIOperacaoAPI; var Cancelar: Boolean); begin if iCanceladoPeloOperador then begin iCanceladoPeloOperador := False; Cancelar := True; end; end; Link para o comentário Compartilhar em outros sites More sharing options...
Fundadores Daniel Simoes Postado 10 Janeiro Fundadores Compartilhar Postado 10 Janeiro O ideal seria não usar um Form ShowModal... esse tipo de formulário costuma bloquear a execução da aplicação... Mas o que exatamente não funciona ? O Botão não fecha o Form ? Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 11 Janeiro Moderadores Compartilhar Postado 11 Janeiro 15 horas atrás, Mario Inacio disse: Boa tarde. Na fase final de configuração, e conforme o manual do Sitef, quando apresentado o QrCode para PIX, deve haver a possibilidade de cancelar o QrCode, por desistência do cliente por exemplo. No Evento QuandoExibirQRCode já inseri a criação do form que mostrará o QrCode, só não consigo fazer com o que o foco fique nele pra que eu possa clicar num botão de cancelamento da operação. procedure TfMenu.TEFAPIQuandoExibirQRCode(const DadosQRCode: String); var QRCode: TDelphiZXingQRCode; QRCodeBitmap: TBitmap; Row, Column: Integer; begin if DadosQRCode <> '' then begin if not FormExiste(fTEFExibeQrCode) then Application.CreateForm(TfTEFExibeQrCode, fTEFExibeQrCode); end else begin if FormExiste(fTEFExibeQrCode) then FechaForm(fTEFExibeQrCode); Exit; end; QRCode := TDelphiZXingQRCode.Create; QRCodeBitmap := TBitmap.Create; try QRCode.Encoding := qrUTF8BOM; QRCode.QuietZone := 2; QRCode.Data := widestring(DadosQRCode); 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; with fTEFExibeQrCode do begin prog.Max := LConfTerm('TEFPIX_SLEEP',5); if prog.max = 0 then prog.max := 300000; imgQRCode.Picture.Bitmap.Assign(QRCodeBitmap); Timer1.Enabled := True; Show; Refresh; end; //Sleep(LConfTerm('TEFPIX_SLEEP',5)); finally QRCode.Free; QRCodeBitmap.Free; end; end; Obs: Inseri um timer e um progressBar no form criado pra mostrar o andamento do tempo para efetuar o PIX. No form criado, inseri um botão Setando uma variavel global para "iCanceladoPeloOperador := TRue;" procedure TfTEFExibeQrCode.BotaoFecharClick(Sender: TObject); begin fMenu.iCanceladoPeloOperador := TRue; Close; end; E no evento QuandoEsperarOperacao verifico essa variavel global: procedure TfMenu.TEFAPIQuandoEsperarOperacao( OperacaoAPI: TACBrTEFAPIOperacaoAPI; var Cancelar: Boolean); begin if iCanceladoPeloOperador then begin iCanceladoPeloOperador := False; Cancelar := True; end; end; faz ele vir pra frente se ele já está criado ou mesmo após a criação e exibição bringtofront acho que é esse o comando no form Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro Mario Inacio Postado 11 Janeiro Autor Membros Pro Compartilhar Postado 11 Janeiro Bom dia. Na verdade vou ver como se comporta na homologação, pois o Sitef Demo não pára pra pagamento do QrCode, ele mostra e já autoriza. Pra contornar, e apresentar o QRcode, o suporte da Software Express sugerir colocar um Sleep após apresentar, e é isso que está causando o travamento com certeza. Vou fazer a homologação e qualquer retorno e abro um novo ticket. Podem fechar esse. Obrigado Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Alexandre de Paula Postado 11 Janeiro Consultores Compartilhar Postado 11 Janeiro Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Alexandre de Paula Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 11 Janeiro Moderadores Compartilhar Postado 11 Janeiro 9 minutos atrás, Mario Inacio disse: Bom dia. Na verdade vou ver como se comporta na homologação, pois o Sitef Demo não pára pra pagamento do QrCode, ele mostra e já autoriza. Pra contornar, e apresentar o QRcode, o suporte da Software Express sugerir colocar um Sleep após apresentar, e é isso que está causando o travamento com certeza. Vou fazer a homologação e qualquer retorno e abro um novo ticket. Podem fechar esse. Obrigado Não é só ele. Paygo também. tudo é aprovado. tu só vai conseguir testar isso em produção em ambos as soluções Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts