Perdoe-me por não ter respondido antes, mas tenho ficado muito tempo
fora e só agora estou tendo tempo de ler meus e-mails com calma.

O código que enviei como exemplo é utilizado para que você só faça a
alocação de recursos no seu aplicativo quando eles forem realmente
necessários.

A variável passa a ser de implementação e, portanto, inacessível fora
dessa unidade, exceto quando acessada através da função oferecida.

Se quiser destruir o DataModule você mesmo, troque Application por Nil
na função SeuDatamodule e acrescente o seguinte código no final da Unit:

Initialization

Finalization

   If dm <> Nil Then
     dm.Free;


Entretanto, o esquema de dependências só é interessante quando vários
formulários que utilizam o módulo podem coexistir no seu aplicativo e a
liberação de memória no momento em que os formulários ligados são
destruídos for essencial.

Na minha experiência, pude verificar que uma vez criado um módulo é
provável que ele seja utilizado repetidas vezes pelos vários formulários
que dependem dele. Assim, é mais eficiente permitir que o módulo seja
criado quando solicitado pela primeira vez e que fique na memória até o
final da execução do aplicativo na premissa de que, se foi utilizado uma
vez, é provável que seja utilizado mais vezes. Com isso, se elimina o
problema da repetida criação/destruição (alto custo), além de possíveis
(e igualmente caras) aberturas de conexão e tabelas.

Espero ter contribuído.

Sds,

Romario




luisalbertolopes escreveu:
> Romário,
>
> Desculpe a minha santa igorância, mas não entendi funcionamento do
> código abaixo (é um código que vc postou há um tempo atrás). Estou
> tentando criar meus Data Módulos como vc sugeriu.
> Ah! Queria, também, saber quais as vantagens de serem criados assim.
>
> Grato
>
> --- Em delphi-br@yahoogrupos.com.br, "Romario (Listas)" escreveu
>> Ops! Comecei o Datamodule com um nome e terminei com outro.
>>
>> Segue abaixo o exemplo corrigido.
>>
>> =================================================================
>>
>> Unit SeuDatamodule;
>>
>> Interface
>>
>> Uses
>>    SysUtils, Classes, Variants, SqlExpr, Provider, DBXpress;
>>
>> Type
>>
>>    TSeuDatamodule = Class(TDataModule)
>>
>>      sds_suaTabela : TSQLDataSet;
>>      dsp_suaTabela : TDataSetProvider;
>>      cds_suaTabela : TClientDataSet;
>>      dts_suaTabela : TDataSource;
>>      .
>>      .
>>      .
>>
>>    Private
>>      { Private declarations }
>>
>>    Public
>>      { Public declarations }
>>
>>    End;
>>
>>    Function SeuDatamodule: TSeuDatamodule;
>>
>> Implementation
>>
>> {$R *.xfm}
>>
>> Var
>>    dtm : TSeuDatamodule = Nil;
>>
>> { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> }
>> {                        F U N Ç Õ E S                         }
>> { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> }
>>
>> Function SeuDatamodule: TSeuDatamodule;
>> Begin
>>
>>    If (dtm = Nil) then
>>
>>      dtm := TSeuDatamodule.Create(Application);
>>
>>    Result := dtm;
>>
>> End;
>>
>> =================================================================
>>
>> Sds,
>>
>> Romario

           
_______________________________________________________
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz.
http://br.info.mail.yahoo.com/


--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a