hbqt + __objadddata

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

hbqt + __objadddata

Mensagem por MARCELOG »

Olá pessoal,
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'

return
Viu, é muito fácil!

Dê uma olhada nas outras funções __obj...

Atenciosamente.

MarceloG

Ps: Caros administradores, se conveniente, movam o tópico para a seção DICAS.
Editado pela última vez por Toledo em 20 Set 2012 14:44, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Harbour e editado para colocar a tag [ code ]
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

hbqt + __objadddata

Mensagem por Toledo »

Só complementando, veja o arquivo dynobj.prg que está na pasta \TESTS do Harbour.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

hbqt + __objadddata

Mensagem por alxsts »

Olá!

Bom saber. Vou começar a estudar QT em breve. Lembra também a propriedade TAG dos forms do VB 6 e .Net.

Obrigado por compartilhar.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

hbqt + __objadddata

Mensagem por Toledo »

Só uma observação: estas funções funcionam em qualquer classe, "não necessariamente" com QT.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder