In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Como saber o nome de um objeto

Foro público de Xailer en español
Responder
ricardo
Mensajes: 39
Registrado: Vie Jun 19, 2009 7:25 pm

Como saber o nome de um objeto

Mensaje 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.
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: Como saber o nome de um objeto

Mensaje 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
Developments | Trainings | Projects
Site | E-mail | Messenger | YouTube
ricardo
Mensajes: 39
Registrado: Vie Jun 19, 2009 7:25 pm

Re: Como saber o nome de um objeto

Mensaje por ricardo »

Olá Hurricane,

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


Abraços
Responder