Partilhar ligação SQL por vários forms (Delphi/Lazarus)

Neojag

Power Member
Estou a desenvolver uma aplicação em lazarus que inclui vários forms, e alguns deles precisam de se ligar a uma base de dados Postgresql e operar sobre ela. Estou a usar três objectos (TPQConnection, TSQLTransaction e TSQLQuery) e a realizar queries ou através do TSQLQuery ou do executedirect. Preciso de partilhar a ligação por vários forms (de maneira a não ter que adicionar estes três elementos a todos os forms que precisem de utilizar a DB), mas não estou a ver bem como. Tentei criar um novo form apenas com os objectos da ligação e incluí-o (com um "use") na interface de todos os forms que precisam dela, mas não funcionou.

Alguma ajuda? ;)
Obrigado!
 
Olá,

Isto que pretendes foi implementado recentemente no Lazarus (embora desde sempre existiu no Delphi), ainda esta semana, por isso aconselho-te a fazeres download do último snapshot da versão que já deverá funcionar.
(antes de isto ser implementado a tática era no OnCreate, ou OnShow, fazer as atribuições do Datasource e Dataset manualmente):

Código:
MyTable.Database := Datamodule.MyDatabase:
...
oiu
Datasource.Dataset := Datamodule.MyTable;
Estas no bom caminho, coloca o componente base de dados e outros num Datamodule, e depois
é só acresentar ao uses de cada form o Datamodule.
 
Acabei por o fazer de outra maneira.
Criei um novo form e inseri lá os três elementos que preciso como public. Como o form é basicamente uma instância de uma classe consigo referi-los em qualquer unit por nomeDoForm.elemento. Não é propriamente boa prática de programação mas funciona, quando puder implemento métodos para evitar isto ;)

Obrigado na mesma!
 
Back
Topo