Página 1 de 1

Como saber o nome de um objeto

Publicado: Sab Abr 29, 2023 1:36 am
por ricardo
Olá a todos,

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
Desde já agradeço a atenção de vocês.

Re: Como saber o nome de um objeto

Publicado: Sab Abr 29, 2023 4:40 am
por Hurricane
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

Re: Como saber o nome de um objeto

Publicado: Mar May 02, 2023 1:30 am
por ricardo
Olá Hurricane,

Muito obrigado por sua ajuda, o exemplo 1 era exatamente o que precisava.


Abraços