Página 1 de 1

Valor devuelto por un evento

Publicado: Jue Nov 17, 2016 9:17 am
por jvtecheto
Buenos días :

De la pregunta del amigo Xevi sobre el método Insert() en la clase TDBBrowse me ha surgido la duda del valor de retorno de los eventos, ya que si miramos el código delos mismos siempre (o eso creo) devuelven NIL

si miramos parte de aquel código.

xRet := ::OnInsert() // aquí creo que se refiere al evento OnInsert de la clase padre, pero no lo se ....

IF Valtype( xRet ) == "L" .AND. !xRet // Pero aquí asume que le le ha pasado un valor lógico y el método OnInsert() de la clase padre devuelve NIL.(Lo he mirado)

El equipo Xailer no se han equivocado en el código y esperan un valor lógico, ¿Cómo es esto ...?

Sin embargo si parece ser que hay eventos que devuelven valor, código del evento OnClick de la clase TButton

METHOD Click() CLASS XButton

LOCAL lResult := ::OnClick() // Añadido por mi. Llama al al evento de la clase padre y le asigna valor lógico, creo que siempre devuelve 0

IF ::nModalResult != 0
IF ValType( lResult ) != "L" .OR. lResult
::oForm:nModalResult := ::nModalResult
::oForm:Close()
ENDIF
ENDIF

RETURN 0

Pero cuando colocas código en el evento Onclick del botón, este es el esqueleto y devuelve NIL

METHOD Button2Click( oSender ) CLASS TForm1

// Codigo

RETURN NIL

¿Alguien puede explicarme esto?

Gracias amigos.

Jose Vte.

Re: Valor devuelto por un evento

Publicado: Vie Nov 18, 2016 3:47 pm
por jvtecheto
Me respondo un poco...

De la pregunta del amigo Xevi sobre el método Insert() en la clase TDBBrowse me ha surgido la duda del valor de retorno de los eventos, ya que si miramos el código delos mismos siempre (o eso creo) devuelven NIL

xRet := ::OnInsert() // LLama al evento de su clase

IF Valtype( xRet ) == "L" .AND. !xRet //

Yo creo que debemos devolver nosotros un valor lógico en el Evento OnInsert()

Sin embargo si parece ser que hay eventos que devuelven valor, código del evento OnClick de la clase TButton

METHOD Click() CLASS XButton

LOCAL lResult := ::OnClick() // LLama al evento Onclick de su clase, es lo mismo que Self:Onclick()

IF ::nModalResult != 0
IF ValType( lResult ) != "L" .OR. lResult
::oForm:nModalResult := ::nModalResult
::oForm:Close()
ENDIF
ENDIF

RETURN 0

Error mio no es un evento es un método.

Pero cuando colocas código en el evento Onclick del botón, este es el esqueleto y devuelve NIL

METHOD Button2Click( oSender ) CLASS TForm1

// Codigo

RETURN NIL

Pero podemos forzar un RETURN nosotros con lo que queramos.

Buen fin de semana a todos.

Jose Vte.