Fórum Modularização de softwares #341548

10/05/2007

0

Estou a algum tempo estudando uma forma de modularizar meus sistemas, para que seje mais facil prestar atualização a distancia a meus clientes..

então desenvolvi uma maneira de fazer isso, utilizando dlls..
dai eu crio uma dll com funções padroes.. e um objeto que as cria dentro do sistema..

unit FormControl;

interface

uses
Classes, Windows, Messages, SysUtils, Forms, ComCtrls, Controls;

type
TOpenFormDLL = procedure(Application: Pointer);
TOpenParamDLL = procedure(P: TWinControl);

TFormControl = class(TComponent)
private
FParent: TWinControl;
protected
public
procedure FormDLL(DLL: String);
procedure SetParent(Parent: TWinControl);
constructor Create(AOwner: TComponent); reintroduce;
destructor Destroy; override;
end;

implementation

constructor TFormControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;

destructor TFormControl.Destroy;
begin
inherited Destroy;
end;

{Chama um Form Dentro de uma dll}
procedure TFormControl.FormDLL(DLL: String);
var
vProc : TOpenFormDLL;
vProc2 : TOpenParamDLL;
vDll : THandle;
begin
vDll := LoadLibrary(PCHar(DLL));
if (vDLL <> 0) then
begin
@vProc := GetProcAddress(vDll,PCHar(´ShowFrm´));
@vProc2 := GetProcAddress(vDll,PCHar(´SetContainer´));
if (@vProc <> nil) then
begin
vProc(Pointer(Application));
end;
if (@vProc2 <> nil) then
begin
//vProc2((FParent));
end;
end;
end;

procedure TFormControl.SetParent(Parent: TWinControl);
begin
FParent := Parent;
end;

end.

esta eh a classe q desenvolvi para criar meus formularios.. neste caso os crio como TDI..

porem acredito que modularização via pacotes bpl seje mais eficaz e simples de trabalhar, e outro ponto que acredito que seje favoravel, seje a parte de alocação de objetos, pois da forma que eu faço, quando clica com direito num controle do estilo TEdit, mostra uma mensagem de erro dizendo que o objeto nao possui um controle parent..

alguem aki mexe com bpl?
sou um desenvolvedor sem muito tempo para estudos sobre novas tecnologias, ou antigas, pois tenho quase que minhas 24h ocupadas com trabalho e estudos..

se alguem poder me dar uma luz agradeço desde ja..

o src da minha dll, se alguem se interessar so pedir que eu envio por email, so que eu axo invalido investir nessa minha ideia..


Nightshade

Nightshade

Responder

Posts

10/05/2007

Renatacoimbra

Eu uso BPL´s em um ERP, são 15 módulos ao todo, funciona muito bem, muita gente já me procurou sobre o assunto, estou escrevendo um (tutorial /aplicação exemplo) de como usar Forms MDI, SDI e TDI em Packages.


Assim q possivel publicarei os exemplos.

[]´s


Responder

Gostei + 0

10/05/2007

Luciano Paranhos

Eu uso BPL´s em um ERP, são 15 módulos ao todo, funciona muito bem...


Que Legal! vou esperar ansioso. Eu não sei nada sobre o assunto e quero saber um pouco mais, porem, o que encontro na internet é muito vago.


Responder

Gostei + 0

11/05/2007

Nightshade

é possivel por funções, datamodules.. td dentro de packages Renata?


Responder

Gostei + 0

11/05/2007

Titanius

é possivel por funções, datamodules.. td dentro de packages Renata?


Com certeza... insere-se qualquer coisa neles...

[]s


Responder

Gostei + 0

12/05/2007

Nightshade

deixando meu TCC um pouco de lado..
axei um tempinho hj para dar uma procurada sobre BPLs no google..
axei um artigo bem interessante, com exemplo

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

resolvi compartilhar com a galera ^^
abraço a todos..


Responder

Gostei + 0

12/05/2007

Titanius

ótima iniciativa... materiais sobre BPL são difíceis de achar...

[]s


Responder

Gostei + 0

12/05/2007

Nightshade

surgiu uma duvida vendo esta meteria..
baixei o exemplo do link.. blz
so q dai eu tirei a classe de conexao e os objetos do form, dexei um form limpo e a aplicação q abre o form do bpl
dai ele dexa a aplicação com 17k..
adicionei no runtime packages o formulario.bpl.. como manda fzr com a classe de conexao ali.. so alterei o bpl
dai quando eu rodo ele na minha makina, roda..
so que se eu mando rodar numa maquina que não tem o delphi instalado ele prede um bpl de runtime nativo do delphi..
como adiciono packages de runtime e os nativos do delphi na compilaçao ao mesmo tempo?


Responder

Gostei + 0

13/05/2007

Titanius

É o seguinte, ao marcar a opção de de Build lá do packages... ele não inclui o package no EXE, por isso ele fica bem menor... mas pra levar pra outro computador, ele necessita dos outros pacotes... uma forma de saber quais pacotes seu sistema utiliza, [b:b3bb3c29cf]após[/b:b3bb3c29cf] compilar o projeto vá no menu projeto e clique em Informaçõs do Projeto.. do lado direito vai lhe mostrar quais pacotes o sistema está utilizando... são este pacotes que voce deverá levar junto com seu sistema...

na outra maquina, tais pacotes deverão ficar no Windows\System ou no local do EXE.

[]s


Responder

Gostei + 0

14/05/2007

Nightshade

e se não deixa dessa forma ele nao executa os forms dos bpl :T
tem outra forma de fazer isto?


Responder

Gostei + 0

14/05/2007

Titanius

Acredito que não.. ou vc usa BPL, ou não... não há outra forma...

[]s


Responder

Gostei + 0

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

Aceitar