Modularização de softwares

Delphi

10/05/2007

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

Curtidas 0

Respostas

Renatacoimbra

Renatacoimbra

10/05/2007

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


GOSTEI 0
Luciano Paranhos

Luciano Paranhos

10/05/2007

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.


GOSTEI 0
Nightshade

Nightshade

10/05/2007

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


GOSTEI 0
Titanius

Titanius

10/05/2007

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


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

[]s


GOSTEI 0
Nightshade

Nightshade

10/05/2007

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..


GOSTEI 0
Titanius

Titanius

10/05/2007

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

[]s


GOSTEI 0
Nightshade

Nightshade

10/05/2007

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?


GOSTEI 0
Titanius

Titanius

10/05/2007

É 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


GOSTEI 0
Nightshade

Nightshade

10/05/2007

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


GOSTEI 0
Titanius

Titanius

10/05/2007

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

[]s


GOSTEI 0
POSTAR