Olá,
Não existe um nome dentro de um objeto, caso se refira a isso.
oSender é o objeto do controle que disparou o determinado evento.
Se você compartilhou o código de um evento com múltiplos controles e quer identificar qual disparou, apenas compare
oSender com o
::oNomeObjeto (veja cVarName do controle no Object Inspector).
Código: Seleccionar todo
METHOD HoraEntradaExit( oSender, oNextCtl ) CLASS TFrmCadEscalasEdit
if oSender == ::oCNPJCPF
...
elseif oSender == ::oCodRamo
...
endif
...
return nil
E se você quiser ler os objetos externamente:
em algum lugar do Form, chamar myFunc(
self, 5)
Código: Seleccionar todo
function myFunc( oFrm, nNum)
local cDoc, cItem
cDoc:=oFrm:oCNPJCPF:value // MaskEdit, Edit, Memo, DbComboBox
if pesquisar(cDoc)
...
endif
cItem:=oFrm:oCbxTipo:cText // ComboBox
...
return nil
ricardo escribió: ↑Sab Abr 29, 2023 1:36 am
Criei um método de uso geral e preciso saber qual componente está acionando aquele método em outras palavras quem é o oSender?
EX.;
Código: Seleccionar todo
METHOD HoraEntradaExit( oSender, oNextCtl ) CLASS TFrmCadEscalasEdit
If EmptyTime( oSender:Value )
MsgInfo('É obrigatório o preenchimento da hora de entrada.')
Return(.F.)
EndIf
If !IsTime( oSender:Value )
MsgInfo('A Hora é inválida.')
Return(.F.)
EndIf
RETURN Nil