Caros,
Estou em um projeto onde existem diversas filiais e os funcionários da matriz fazem tudo por uma determinada empresa, ou seja, usamos muitos formulários com o CrossCompany habilitado, também com métodos display e etc… tudo que torna um formulário demorado!

Tendo em vista este problema, comecei uma saga para tentar melhorar a performance e logo no inicio eu percebi que se eu limitasse o tamanho do grid exibido, o formulário melhorava drasticamente sua performance, ou seja, ao invés de deixar o grid com tamanho Automático, eu coloquei 350px e o que antes levava quase 15 segundos para abrir, passou a abrir em 9 segundos e as vezes 10, a melhoria foi notada muito facilmente!

Legal, até ai já tinha melhorado bastante, mas foi o suficiente para ver que o problema era em relação a “renderização” dos grids, e sendo assim, era ali que devia trabalhar!

Depois disso, estudando o comportamento das Grids, eu vi o método autoSizeColumns, que quando false, trazia uma performance melhor ainda, ao formulário que levava 15 segundos, passou a levar 4 ou 5 para abrir!

Logo em seguida, alguns usuários passaram a reclamar que quando tentavam abrir o formulário, o ax estava fechando, e percebi que devido as diferenças de instâncias (versão do ax e também do client) era gerado uma exceção, foi então que adicionei o código para verificar se o método estava implementado.

Em resumo, o que deve ser feito:
Formulário -> Grid -> Propriedade AutoDeclaration = yes;
Formulário -> Método init:

1
2
3
4
5
6
7
8
9
10
11
public void init()
{
    ;
    super();
//PICHLER - improve performance - BEGIN
    if ( new SysDictClass(classNum(FormGridControl)).hasObjectMethod(identifierStr(autoSizeColumns)) )
    {
        OverviewGrid.autoSizeColumns(false);
    }
//PICHLER - improve performance - END
}

Pronto, agora pode colocar isso em todos os formulários! Se alguém quiser fazer isso para todos, sobrescrevam o método init da classe SysSetupFormRun, e adicionem o código, mas ai lembrem-se que vocês nunca saberão o nome da grid, ou seja, algumas validações serão necessárias!

Abraço,
Pichler