Bom dia Ricardo,
Na minha aplicação o usuário executa os seguintes passos:
1. Através da tela de lançamento ele registra a venda, informando que é o cliente e quais são os produtos vendidos a ele. Caso o cliente não esteja cadastrado existe um botão nessa tela que apresenta a tela para que o cliente seja cadastrado.
Obs: o usuário pode lançar quantas vendas ele desejar, uma vez que os dados vão para o banco de dados.
2. Através da tela de emissão, é apresentado ao usuário todas as vendas cujas notas não foram emitidas ainda. Ele deve seleciona-las e clicar no botão [Emitir].
Obs: o botão [Emitir] executa a rotina alimentar componente para cada nota selecionada, essa rotina lê os dados da venda que estão no banco de dados e são atribuídos as propriedades do componente (o programa exemplo possui essa rotina, mas os dados são fixos, portanto devemos alterar de tal forma que a informação seja lida de um campo do banco de dados.
Após alimentar os dados de todas as notas selecionadas é executado o comando Enviar (do componente), esse comando se encarrega de gerar o XML, assinar e validar para cada nota incluída no componente. Estando todos OK, ele gera o lote e envia a SEFAZ, esta processa o lote estando todas OK é retornado o protocolo de autorização de cada uma das notas, que é acrescentado automaticamente ao XML e por fim o DANFE de cada nota é impresso.
O envio do XML por e-mail é realizado através de um outro comando do componente.
A rotina do botão [Enviar] deve ainda atualizar o banco de dados de tal forma que marque as vendas selecionadas inicialmente como notas emitidas.
O programa exemplo traz as funcionalidades separadamente por questões de didática, mas nada lhe impede que você inclua em um único botão a funcionalidade de enviar e de enviar e-mail, por exemplo.
Desta forma você simplifica a vida do usuário e automatiza o processo.
Um conselho, vai montando a sua aplicação por etapas, não queria implementar tudo ao mesmo tempo, só passe para a tela de cancelamento quando o processo de emissão estiver pronto e funcionando 100%.