1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Programação' iniciada por Neojag, 1 de Maio de 2008. (Respostas: 3; Visualizações: 1453)

  1. Neojag

    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!
     
  2. Neojag

    Neojag Power Member

    Ninguém? :(
     
  3. RADguy

    RADguy Power Member

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

    Neojag Power Member

    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!
     

Partilhar esta Página