Iniciar o programa na memória

Delphi

28/04/2004

Alguém sabe como fazer para criar o projeto mais rapidamente na memória?


Tchelllo

Tchelllo

Curtidas 0

Respostas

Dopi

Dopi

28/04/2004

Não sei se isso que você deseja saber....

O que é comum e recomendado para grandes sistemas, é tirar da Auto-criação de formulários todos os Formulários que não forem necessários no momento da abertura.

Ex. Entre em Projects, Options e deixe como Auto-Create somente o FormPrincipal e os DataMódules.

Os demais voce cria e destroi em tempo de execução.

Form2 := TForm2.Create(self) ; // -> self é o FormPrincipal
Form2.Show ;

Configure o Form2.OnClose com caFree. Para que o formulário seja destruido assim que fechado...

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := caFree ;
end;



Se usar ShowModal...

Form2 := TForm2.Create(self)
try
Form2.ShowModal ;
finally
Form2.Free ;
end ;

nesse caso voce nao precisará do caFree...


GOSTEI 0
Tchelllo

Tchelllo

28/04/2004

Então Daniel, isso eu já estou fazendo, acho que o problema é que eu crio o DataModule na inicialização do Programa, e o meu DataModule tem uma porrada de Queryes. O mais correto seria dividir as queryes em vários DataModules e criar os DataModules e abrir as queryes só no momento de usá-las?


GOSTEI 0
Dopi

Dopi

28/04/2004

Sem duvida você terá um grande ganho de performance com isso...

Você usa ClientDataSet / DataSetProvider / SQLDataSet ? Lembre-se que ele sempre carregará todo o resultado da query na memória do ClinteDataSet...

Deixe tudo desativado. Inclusive o SQLConnection. Caso contrário, se o banco de dados estiver fora do ar o usuário verá um erro antes da tela da Aplicação aparecer...

Eu costumo fazer assim.... Tenho 2 datamodules 1 com o SQLConnection e com os SQLDataSets (rdm)
outro somente com os Providers e ClientDataSets. (ldm)

Se o Form for abrir ShowModal, uso os ClientDataSets diretamente do (ldm)

Se o Form for abrir SHOW. Crio uma copia na memória do (ldm) e uso os componentes dessa copia na memoria. Isso garante que os ponteiros desses ClientDataSets não serao mexidos por outro Form tambem aberto com SHOW.


GOSTEI 0
Tchelllo

Tchelllo

28/04/2004

Só uso a Paleta ADO para me comunicar com o Banco, outras nunca usei...mas blz Daniel....


Valeu por me tirar essa dúvida...qualquer coisa...

Abraços

Marcelo


GOSTEI 0
POSTAR