Page 1 of 1

Clausula Valid en un GET simple

PostPosted: Sun Aug 12, 2007 1:10 pm
by ingggc
Porque no trabaja la clausula valid de un Get el código es el siguiente:
local l_oGet
private p_cArti :=space(14)
private p_pDlg
DEFINE DIALOG p_oDlg RESOURCE 'DCON_PRE1'
REDEFINE GET l_oGet VAR p_cArti ID 101 OF p_oDlg PICTURE '@!@k' VALID(Chk_Pre1())
ACTIVATE DIALOG p_oDlg CENTER
Close Databases
Return Nil

Static Function Chk_Pre1()
? '1'
Return(.t.)

Guillermo Guevara C.
Clp5.2e FW2.3b Blk3.3

PostPosted: Mon Aug 13, 2007 9:00 am
by Antonio Linares
Guillermo,

Necesitas tener un control más en el diálogo para que se produzca pérdida de foco hacia ese otro control

Gracias Antonio

PostPosted: Mon Aug 13, 2007 2:39 pm
by ingggc
Disculpa mi ignorancia.

Ok de acuerdo con tu recomendación, entonces voy a programar un diálogo definiendo controles que no ucupo, ¿es una limitante de FW ó que sucede?, en nuestro viejo Clipper no teniamos estas limitántes.

Ejemplo específico de este caso, estoy tratando de construir un verificador de precios para que el usuario utilice un scanner (Lector de código de barras) lea el GET (unico control en este diálogo) y a través de la clausula VALID con otro diálogo despliegue el precio de venta por unos segundos y que regrese al GET original listo para otra lectura.

Guillermo Guevara C.

PostPosted: Mon Aug 13, 2007 3:32 pm
by Armando
Guillermo:

No, no hay esa limitante, prueba cambiando la línea así:

REDEFINE GET l_oGet VAR p_cArti ID 101 OF p_oDlg PICTURE '@!@k' VALID Chk_Pre1()

Salaudos

PostPosted: Mon Aug 13, 2007 4:57 pm
by Antonio Linares
Guillermo,

Usa un GET y un botón "Aceptar"

Gracias Armando y Antonio Linares

PostPosted: Tue Aug 14, 2007 3:22 pm
by ingggc
Armando:

Tu sugerencia es que quite un par de parentesis de la clausula VALID, ya lo hice, pero no funcionó, sigue igual, el programa está atascado en el GET.

Antonio:

Imaginate en una tienda un verificador de precios donde comunmente, el cliente solo acerca el producto al lector de código de barras y en la pantalla se muestra el precio del artículo.

Con tu sugerencia de definir un botón, imaginate tendría que ponerle un ratón con un "Mousepad" o un teclado con una base (Mesa ó algo así) lo cual resultaría, totalmente inoperante.

Posiblemente estoy buscando la solución al problema incorrectamente, si alguién en el foro tiene alguna idea para solucionar está cosa tan simple por favor transmitanmela.

Realmente este tipo de problemas son los que me han detenido en la decisión de comprar las herramientas requeridas para cambiar definitivamente a este ambiente.

Saludos

Guillermo

PostPosted: Tue Aug 14, 2007 4:09 pm
by Armando
Guillermo:

Podrías especificar un poco más cual es el problema ?, cuando dices se queda atascado significa que no ves el resultado del código ?:

? '1'

Si entiendo bien, la solución es que utilices un SAY en el mismo dialogo, despues del GET, para mostrar el precio de venta, así no tendrías que obligar al usuario a usar ningun botón.

Saludos

Gracias Armando

PostPosted: Wed Aug 15, 2007 4:15 pm
by ingggc
Efectivamente lo que requiero es que se muestre el
? '1'
Que es la prueba de que funcionó la clausula VALID en el GET

Ya había comprobado que poniendo el SAY en mismo control se hace la perdida de foco que me indicaba Antonio.

Sin embargo estoy intrigado porque algo que funciona tan bién en nuestro viejo Clipper no puede funcionar en FW, cuando menos hasta ahora.

Agradezco tus atenciones

Guillermo

PostPosted: Wed Aug 15, 2007 5:02 pm
by Antonio Linares
Guillermo,

>
Sin embargo estoy intrigado porque algo que funciona tan bién en nuestro viejo Clipper no puede funcionar en FW, cuando menos hasta ahora.
>

Windows es un entorno muy distinto en su funcionamiento al antiguo MsDos.

FiveWin intenta en la medida de lo posible proporcionar comportamientos muy similares, pero en ocasiones hay que seguir las reglas que impone Windows

Antonio

PostPosted: Thu Aug 16, 2007 2:06 pm
by ingggc
Muchas Gracias por todos los consejos y tu apoyo, estoy de acuerdo hay que cambiar la forma estructurada de pensar, a pensar en función de la programación orientada a objetos.

Lo consideraré para mi verificador de precios

Guillermo

PostPosted: Thu Sep 20, 2007 4:57 pm
by jacgsoft
La solucion es simple pon otro Get pero que su variable sea vacio



local l_oGet ,xClav:=''
private p_cArti :=space(14)
private p_pDlg
DEFINE DIALOG p_oDlg RESOURCE 'DCON_PRE1'
REDEFINE GET l_oGet VAR p_cArti ID 101 OF p_oDlg PICTURE '@!@k' VALID(Chk_Pre1())

@ 02,08 Get xClav Size 1,1

ACTIVATE DIALOG p_oDlg CENTER
Close Databases
Return Nil

Static Function Chk_Pre1()
? '1'
Return(.t.)
[code][/code]

PostPosted: Tue Sep 25, 2007 12:58 pm
by QAZWSX2K
YO HE HECHO ESO CON CODIGO DE BARRAS Y SOLO PONGO UN BOTON "SALIR", NO ES PARA QUE EL USUARIO LE DE CON UN MOUSE SALIR SINO COMO DICE ANTONIO PARA QUE HAYA AL MENOS 2 CONTROLES, SI TE DA PIEDRA PONERLO PONLO HIDE Y YA