Iniciar o programa na memória
Alguém sabe como fazer para criar o projeto mais rapidamente na memória?
Tchelllo
Curtidas 0
Respostas
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...
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
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
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.
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
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
Valeu por me tirar essa dúvida...qualquer coisa...
Abraços
Marcelo
GOSTEI 0