Adcionar Propriedade/Variavel, Method Dinamicamente

Projeto Harbour QT - HbQt, HbXBP e HbIDE

Moderador: Moderadores

Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Adcionar Propriedade/Variavel, Method Dinamicamente

Mensagem por dbsh »

Adicionar dinamicamente a classe do harbour ou criada por você
Variavel/Propriedade, Method
Podera ser TBrowse, Error ou outra classe qualquer, desde que tenha o propriedade classH

Código: Selecionar todos

#include "hbqtgui.ch"

#command QT CONNECT    <o> SIGNAL <s> SLOT <exec>   [TO <v>] => [<v> := ]Connect( <o>, <s>, <exec> )
#command QT DISCONNECT <o> SIGNAL <s> [TO <v>] => [<v> := ]Disconnect(<o>, <s> )

FUNCTION AddVar(oCls, sVar, uSet, lClose, lInLine )
LOCAL oClose

DEFA lClose To .F. //alterado para .f. em 23/08/17

IF __ObjHasData(oCls, sVar)
   IF !Empty(lClose)
      oClose := ObjGetMsg(oCls, sVar)
      IF __ObjHasMsg(oClose, "Close")
          oClose:Close()
      ENDIF
   ENDIF
ELSE
   IF !Empty(lInLine) .and. ValType(uSet) = 'B'
      __clsAddMsg( oCls:classH, sVar, {| Self, p | (Self), Eval(uSet, p) }, 3, NIL, )
   ELSE
       __clsAddMsg( oCls:classH, sVar, __cls_IncData( oCls:classH ), 32 + 1, NIL, )
   ENDIF
ENDIF

__objSendMsg( oCls, '_' + sVar, uSet )

RETURN uSet

FUNCTION AddMethod(oCls, sMet, uSet)

IF !__ObjHasMsg(oCls, sMet)
   IF ValType(uSet) = 'B'
      __clsAddMsg( oCls:classH, sMet, {| Self, ... | Eval(uSet, Self, ...) }, 3, NIL, )
   ELSE
      __clsAddMsg( oCls:classH, sMet, @uSet, 0, NIL, )
   ENDIF
ENDIF

RETURN oCls

function GetActiveSet(oEdit)
local Self, Old

Self := QSelf()

Old := Self:GetActive
Self:GetActive := oEdit

return Old

//uConnect pode ser numero ou caracter
procedure Connect(oClasse, uConnect, cbConnect)

oClasse:connect( uConnect, cbConnect )

return

//uConnect pode ser numero ou caracter
procedure Desconnect(oClasse, uConnect)

oClasse:Disconnect( uConnect )

return

EXEMPLO DE USO:

Código: Selecionar todos

procedure main()
local oDialog, oEdit

oDialog := QDialog()
oEdit := QLineEdit(oDialog)
oEdit:Move( 100, 100 )  //esquerda, topo
oEdit:resize( 150, 20 ) //largura, altura

addvar(oDialog, 'GetActive')
addMethod(oDialog, 'GetActiveSet' )
// OU 
//addMethod(oDialog, {|p| GetActiveSet(p)} )

qt connect oEdit signal QEvent_FocusIn  slot {|/*oFocus*/| (oDialog:GetActive := oEdit) }
qt connect oEdit signal QEvent_FocusOut slot {|/*oFocus*/| (oDialog:GetActive := NIL) }
// OU
//qt connect oEdit signal QEvent_FocusIn  slot {|/*oFocus*/| (oDialog:GetActiveSet(oEdit)) }
//qt connect oEdit signal QEvent_FocusOut slot {|/*oFocus*/| (oDialog:GetActiveSet()) }

/*
QEvent_FocusIn  e QEvent_FocusOut 
Pode ser usado para pre validar e pos validar edicao
*/

QApplication():processEvents()
oDialog:Exec()

return

010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Adcionar Propriedade/Variavel, Method Dinamicamente

Mensagem por Itamar M. Lins Jr. »

Olá!
Estamos precisando de pessoas para ensinar usar a QtContribs.
Como fazer para instalar e usar, alguns exemplos.
Fiz logo quando começou mas não pratiquei e não lembro... Fiquei na Hwgui.
Vc usa a Qtcontribs profissionalmente ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Adcionar Propriedade/Variavel, Method Dinamicamente

Mensagem por dbsh »

A mais de 5 anos que nem me lembro mais.
Uso no sistema de retaguarda
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Adcionar Propriedade/Variavel, Method Dinamicamente

Mensagem por dbsh »

Conferindo nas copias e no GIT por curiosidade
Primeira versão de produção foi em 08/11/2012
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Adcionar Propriedade/Variavel, Method Dinamicamente

Mensagem por dbsh »

Estou a disposição na medida do possivel, terei prazer em atender
Uso com WVG
90% do meu sistema de retaguarda esta em QT, os 10% ainda esta em WVG, não consegui arrumar tempo para alterar toda as telas de cadastro e um browse que tem muitos recursos ainda não implementado no meu browse em qt
Tem uma ajuda ensinado a prender janela WVG dentro de uma QMainWindows: https://pctoledo.org/forum/viewto ... 43&t=26175
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Adcionar Propriedade/Variavel, Method Dinamicamente

Mensagem por dbsh »

Sou minimalista, quanto mais simples mais pratico
Alguns anos atraz enchia a tela de informação
Agora coloquei uma ? na tela principal para visualizar as informações diversas
Tem também uma opção de noticias/avisos no canto direito, quando não tem nenhuma janela aberta, mas neste cliente que tirei printscreen esta desativada
só aparece quando e uma informação obrigatória para o cliente
Algumas imagens do meu sistema
Anexos
Relatorio de venda
Relatorio de venda
QT com WVG
QT com WVG
Tela grafica em QT
Tela grafica em QT
Menu em QT
Menu em QT
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Responder