Seu projeto não tem um tratamento do Filas e nem bloqueio da Interface, para evitar que o usuário dispare 2 eventos simultaneamente... e quando isso ocorre fatalmente vc terá erro de comunicação com o ECF...
Jeito simples de resolver:
ACBrECF1.Device.ProcessMessages := False ;
Ou... veja o exemplo do botão "Imprimir" do Formulário VendeItem do projeto ECFTeste
Button1.Enabled := False ; // Desabilita a Interface do usuário, para evitar vender outro Item enquanto imprime
...
try
Form1.ACBrECF1.VendeItem( edCodigo.Text, edDescricao.Text,
edICMS.Text, StrToFloatDef( edQtd.Text, 0 ),
StrToFloatDef( edPrecoUnita.Text,0 ),
StrToFloatDef( edDescAcres.Text,0 ), edUN.Text,
Tipo, Desc );
finally
Button1.Enabled := True ; // Reabilita a interface
end ;
[/code]