Variavel/Propriedade, Method
Podera ser TBrowse, Error ou outra classe qualquer, desde que tenha o propriedade classH
#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:
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