Página 1 de 1

Adcionar Propriedade/Variavel, Method Dinamicamente

Enviado: 19 Jan 2022 14:19
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


Adcionar Propriedade/Variavel, Method Dinamicamente

Enviado: 19 Jan 2022 14:52
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.

Adcionar Propriedade/Variavel, Method Dinamicamente

Enviado: 19 Jan 2022 15:58
por dbsh
A mais de 5 anos que nem me lembro mais.
Uso no sistema de retaguarda

Adcionar Propriedade/Variavel, Method Dinamicamente

Enviado: 19 Jan 2022 17:14
por dbsh
Conferindo nas copias e no GIT por curiosidade
Primeira versão de produção foi em 08/11/2012

Adcionar Propriedade/Variavel, Method Dinamicamente

Enviado: 19 Jan 2022 17:15
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

Adcionar Propriedade/Variavel, Method Dinamicamente

Enviado: 19 Jan 2022 17:39
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