DataModule da Aplicação

Um datamodule de aplicação é um datamodule que recebe suporte adicional pelo tempo de execução do uniGUI:

  • ele é registrado no tempo de execução do uniGUI durante a inicialização da aplicação

  • ele é criado no início de cada sessão, ou sob demanda (de acordo com a propriedade MainModule.ApplicationDataModuleOptions.CreateOnDemand)

  • se não for liberado pelo usuário (usando Free), ele é automaticamente liberado ao fechar a sessão

AppDMOnDemand

Pequenas aplicações que requerem datamodules adicionais (isto é, mais do que o MainModule), provavelmente usarão o padrão (CreateOnDemand = False), mas aplicações grandes terão melhor gerenciamento de memória criando os datamodules sob demanda (e liberando-os o mais cedo possível).

Este é o código gerado automaticamente para um Application DataModule:

Observe como este código é semelhante ao do Formulário da Aplicação.

Se o parâmetro CreateOnDemand for alterado para true, veja como um formulário usará o datamodule da aplicação.

O datamodule é explicitamente liberado ao destruir o formulário (isto é, assim que o formulário não precisar mais dele). Mas não há código vinculando o UniDBGrid ao datamodule. O arquivo DFM mostra a ligação em tempo de design:

A ligação também é visível no designer do formulário:

AppDMOnDemand-Design-time

O datasource foi vinculado em tempo de design ao datamodule. Não há necessidade de fazê-lo em tempo de execução.

Executar a aplicação prova que ela realmente funciona sem vazamentos de memória.

AppDMOnDemand-Run-time