Página 1 de 1

Conrol de boton OK

Publicado: Lun Feb 07, 2011 10:48 pm
por Pedro
Hola,, vamos a empezar con una pregunta, (no soy experto en Clarion ni nada parecido, asi que sepan disculpar el tipo de preguntas)

Tengo un Form hecho con un Wizard, y necesito hacer validaciones en el boton Ok, y si esta todo bien, seguir, pero sino debo volver el contrl a algun campo del Form

Alguien sabe si esto se puede hacer, y de ser asi, donde coloco el codigo y como hago para volver el control al Form.

Muchas gracias

Re: Conrol de boton OK

Publicado: Lun Feb 07, 2011 11:42 pm
por luizmarin
hola pedro,

si se puede hacer lo que intentas.

pero los embeds del botton "OK" no es lo mejor lugar para eso.

1. Fijate en [embeds] [local objects] [window manager] [ TAKE COMPLETED ], antes del parent call.

alli puede poner tu codigo de validacion. Lo motivo de eso es que si yo cierro lo form mediante lo "X" de la ventana lo contenido del botton "ok" no se va realizar. Pero todo pasa por ese otro lugar.

Como hacer :

muy bien, imaginese que tengo un form con 5 campos. [cliente:nombre] y [cliente:telefono] no puede estar vacio. Que hacer?

2. en ese embed pone asi:

if clip(cliente:nombre) = '' ! esta vacio
message('Debe informar el nombre')
select(?cliente:nombre)
cycle
end

if clip(cliente:telefono) = '' ! esta vacio
message('Debe informar el telefono')
select(?cliente:telefono)
cycle
end


esta ai todo tu codigo. Escribe si tiene mas dudas...

espero si comprenda mi raro español...

Re: Conrol de boton OK

Publicado: Lun Feb 07, 2011 11:52 pm
por DanielRuzo
Hola, Pedro.

Qué bueno que planteaste acá la pregunta. Conociendo su contenido estoy más de acuerdo todavía en que era mejor plantearla acá que en el chat de Skype.

Lo que te respondió Luiz está bien. Pero lo mejor sería, tanto para Clarion como para cualquier aplicación Windows, que la validación de los campos la hagas una vez completado el campo. En el caso de Clarion, sería en el evento TakeAccepted del control correspondiente. Ese evento se dispara cada vez que el usuario abandona el campo.

Para la eventualidad de que el campo no sea accedido por el usuario (por ejemplo, el usuario ingresa información en el primer campo del formulario y directamente presiona "Ok" sin pasar por los otros campos) existe lo que se llama "AcceptAll", que es un evento especial en el cual se recorren todos los campos del formulario. Como en tu caso el formulario lo hiciste con los templates entonces no tenés que preocuparte por esto, porque directamente se va a disparar ese evento cuando presiones "Ok" y todos tus controles van a ser validados. Pero si hacés una ventana "a mano" entonces tendrías que establecer cuál es el botón que dispararía ese evento. Pero eso ya sería para otro tema.

Cualquier duda que tengas sobre el contenido de esta respuesta no dudes en preguntar. Sucede que uno no quiere entrar mucho en profundidad para no explicar lo que el otro ya sabe.

Re: Conrol de boton OK

Publicado: Mar Feb 08, 2011 12:37 pm
por jones
Hola buenos dias, yo quero hacer lo contrario, como puedo desabilitar el AceptAll que estan mencionando, ya que cuando le dan al boton Ok todo nuevamente.

Re: Conrol de boton OK

Publicado: Mar Feb 08, 2011 12:40 pm
por Mauricio
En la validación de tu campo tenés que preguntar así:
IF 0{Prop:AcceptAll} = FALSE
! Acá validás
END !IF

0 es el ID de la ventana, por defecto la ventana es siempre el primer control, por eso el 0.
De esta forma solo vas a validar cuando pasás por el campo y no al darle al botón de Ok.

Re: Conrol de boton OK

Publicado: Mar Feb 08, 2011 6:01 pm
por DanielRuzo
Pero cuidado, que la verificación desde el AcceptAll hay que omitirla sólo en ciertos casos. Si se omite siempre pueden quedar controles sin verificar cuando el usuario no pase por ellos.

Re: Conrol de boton OK

Publicado: Mar Feb 08, 2011 6:19 pm
por Pedro
Gracias a todos, clarisimas las explicaciones, anda joya

Lo del AcceptAll lo voy a dejar para mas adelante, por ahora he avanzado mucho

Re: Conrol de boton OK

Publicado: Mar Feb 08, 2011 6:27 pm
por luizmarin
siempre por ahy si necesitas.


habla del clarioneros.com a tus amigos...

saludos desde brazil