Bom dia, está ocorrendo um problema na impressão sucessiva de DACTE, com pré-visualização, no Windows XP. Nos Windows Vista e 7 não ocorre este problema. Cosinderando o pseudo-código de exemplo abaixo:
while not eof then
ShowMessage('Já impresso');
CTE.Conhecimentos.Clear;
CTE.Conhecimentos.LoadFromStream(stream);
CTE.Conhecimentos[0].Imprimir;
end;
Na primeira iteração a mensagem é mostrada e a visualização da DACTE ocorre normalmente, contudo, na próxima iteração a mensagem já não é mostrada. Debugando, percebi que na segunda iteração o ActiveForm do Screen está apontando para o formulário de visualização do Quickreport, o que já, teoricamente, foi fechado e está invisível, com isso a referência da mensagem fica errada, e a mesma fica não visível. Imagino que seja problema relacionado com o QuickReport, tentei liberar a instância do QuickReport no formulário TfrmDACTeQR, contudo também não funcionou.
A solução temporária que encontrei foi liberar o ActiveForm antes do ShowMessage, se ele for diferente do formulário atual. Nos Windows posteriores ao XP, o ActiveForm se mantém nulo após cada impressão, com isso funciona.
while not eof then
if Screen.ActiveForm <> Self then
Screen.ActiveForm.Free;
ShowMessage('Já impresso');
CTE.Conhecimentos.Clear;
CTE.Conhecimentos.LoadFromStream(stream);
CTE.Conhecimentos[0].Imprimir;
end;
Testei nas versões 5.04 e 5.05 do QuickReport, nas duas ocorreu o mesmo problema.