Descrição:
Quando tento gerar um relatório de um E3Chart que está em uma tela modal que foi aberta a partir de outra tela modal, ocorre um erro no script do método CopyConfig no relatório. Por que isto acontece?
Solução:
As janelas que são abertas recebem (por padrão) o nome do quadro de Divisor1. Nessa situação, quando são abertas duas telas modais, temos as seguintes janelas:
- Viewer
- TelaModal1 (FrameName = Divisor1)
- TelaModal2 (FrameName = Divisor1)
A TelaModal2 é a que possui o E3Chart para impressão, mas o relatório executa a seguinte linha quando o usuário aciona o comando para impressão:
Set ChartTela = Application.GetFrame(“Divisor1”).Screen.Item(“E3Chart1”)
O método GetFrame vai encontrar primeiro a janela TelaModal1 (que possui FrameName = Divisor1), e consequentemente procurar pelo objeto E3Chart1, que ela não possui, o que causa o erro.
Usando o pick Abrir Tela, é possível informar o nome do quadro que será aberto, mas o pick Abrir Tela Modal não possui essa opção. Dessa forma, todas as janelas modais terão o mesmo FrameName.
Para que não ocorra esse conflito de nomes no método GetFrame(), algumas alternativas são:
- inserir o E3Chart na primeira tela modal;
- abrir todas as telas como “não modais”;
- criar apenas a última tela como modal.