trabalhando com a hbqt, através de formulários, fui obrigado a estudar (e aprender) um pouco de classe.
Assim, pesquisando, encontrei a funções de baixo nível __obj..., que permitem, de forma simplificada, trabalhar com as classes, inserindo/ excluindo variáveis e métodos.
Quando se trata de objetos, sempre achei importante uma variável para o programador, onde ele pode armazenar "algo mais" na mesma.
Adorava a variável "cargo" do tbrowse onde eu armazenava, por exemplo, as regras para o filtro de registros, o alias do banco de dados, etc..
Mas as funções acima são um verdeiro achado porque permitem alterar a classe já existente sem complicação ou problema.
Estou utilizando a hbqt+sqlite.
Assim, na janela principal, relativa a qmainwindow() por exemplo, eu posso armazenar o endereço e nome banco de dados, o usuario ativo e, qualquer outra coisa necessária ao funcionamento do sistema que permanecerá vinculado ao objeto.
A partir daí, vai ser necessário administrar apenas o escopo da variável vinculada ao objeto, sem necessidade de criar e administrar outras variáveis externas.
Ex:
...
Código: Selecionar todos
local fmain
fmain := qmainwindow()
__objadddata(fmain,'DATABASE') // Cria a variável DATABASE e vincula a mesma ao objeto
__objadddata(fmain,'USUARIO') // Cria a variável USUARIO e vincula a mesma ao objeto
// Definindo valor das variáveis
fmain:DATABASE := 'c:\qualquerlugar\nomebancodedados'
fmain:USUARIO := '00001'
teste(fmain)
...
procedure teste(fmain)
message(fmain:DATABASE) // Exibe 'c:\qualquerlugar\nomebancodedados'
message(fmain:USUARIO) // Exibe '00001'
returnDê uma olhada nas outras funções __obj...
Atenciosamente.
MarceloG
Ps: Caros administradores, se conveniente, movam o tópico para a seção DICAS.


