GARANTIR DESCONTO

Fórum Modularização BPL #353409

10/02/2008

0

Pessoal estou tentando fazer um sistema modularizado com BPL, mas tenhos alguns problemas, do tipo:
Tenho estas duas rotinas:

//Esta abre o pacote BPL
function FuncAbrePacoteBPL(spPacote: String): Boolean;
var
vPersistentClass: TPersistentClass;
begin
Result:= False;
try
if FileExists(spPacote) then
begin
if LoadPackage(spPacote) = 0 then
begin
Result:= False;
Application.MessageBox(PChar(´O pacote: ´ + #1310 + ´´´ + spPacote + ´´´ + 1310 + ´Não pode ser aberto.´), ´Erro´, MB_ICONERROR);
end
else
begin
Result:= True;
end;
end
else
begin
Result:= False;
Application.MessageBox(PChar(´Pacote: ´ + 1310 + ´´´ + spPacote + ´´´ + 1310 + ´Não pode ser encontrado.´), ´Erro´, MB_ICONERROR);
end;
except
Result:= False;
Application.MessageBox(PChar(´Erro inesperado ao tentar abrir o pacote: ´ + #1310 + ´´´ + spPacote + ´´.´), ´Erro´, MB_ICONERROR);
end;
end;

//Esta abre um form ou um datamodule
procedure ProcAbrirFormDataModule (psFormDataModule: String; pcFormDataModule, pcShowModal: Char);
var
vPersistentClass: TPersistentClass;
vForm: TForm;
vDataModule: TDataModule;
begin
vPersistentClass := GetClass(psFormDataModule);
if vPersistentClass = nil then
begin
case pcFormDataModule of
´F´: Application.MessageBox(PChar(´O formulário ´´ + psFormDataModule + ´´ não foi encontrado.´), ´Erro´, MB_ICONERROR);
´D´: Application.MessageBox(PChar(´O data modulo ´´ + psFormDataModule + ´´ não foi encontrado.´), ´Erro´, MB_ICONERROR);
end;
end
else
begin
case pcFormDataModule of
´F´: begin
vForm := TComponentClass(vPersistentClass).Create(Application) as TForm;
case pcShowModal of
´S´: vForm.Show;
´M´: vForm.ShowModal;
end;
end;
´D´: begin
vDataModule := TComponentClass(vPersistentClass).Create(Application) as TDataModule;
end;
end;
end;
end;

As duas rotinas funciona perfeitamente, mas quando preciso acessar um DataModule de dentro de um Form, sempre dá erro. Exemplo:
Tenho um Pacote chamado ´geral.bpl´, dentro desse pacote tenho:
1 - DataModule
1 - Formulário
Dentro desse formulário tento acessar os ClientsDataSet que se localizam no DataModule. Por exemplo:

dmCidades.cdsCadCidades.Open;

aí recebo uma mensagem de exception.

alguém pode me ajudar por favor. como posso trabalhar com essas bpl´s ???????


Worksys

Worksys

Responder

Posts

10/02/2008

Uildenei

Guri,

tive o mesmo pipino .. resolvi seguindo esse esquema:

http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=499

otimo artigo, pra ver precisa se cadstrar no site .. eh de gratis.

qualquer coisa manda um alo ...


Responder

Gostei + 0

14/02/2008

Worksys

Então eu já havia lido esse artigo, mas o problema é q quando tenho um Datamodule no mesmo pacote que o form, não consigo ter acesso do forme nos objetos do Datamodule. compreendeu ?? Será que está entendedo o que eu quis dizer ???


Responder

Gostei + 0

14/02/2008

Uildenei

entendi o que voce quer dizer ...

mas conforme o descrito no artigo voce nao precisa ter um datamodule .. criando a classe de conexao .. voce utiliza a atribuicao da conexao manualmente aos componentes query, stored procedure .. etc ..
a unica coisa que vc deve fazer é acrescentar a unit da classe na clausula uses da unit ..

se precisar me aciona.. te mando um exemplo ... se for possivel se o moderador permitir posso por um exemplo ..

ok. t+


Responder

Gostei + 0

16/02/2008

Worksys

Por favor se vc puder me mande um exemplo, pois não entendi...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar