HonradosHP
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm

2 participantes

Ir abajo

Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm Empty Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm

Mensaje  Julio Caballero Miér Oct 27, 2010 5:05 pm

Saludos a los miembros del foro.

Tengo una pregunta respecto a DoInputForm.

Si tengo un formulario de entrada con dos campos que aceptan sólo números reales.

Si deseo que en estos campos se escriban sólo números positivos sin parte decimal.

¿Se puede evitar la salida con ENTER u OK si el contenido de un campo no contiene un número real como el deseado?

Muchas gracias por su valiosa ayuda.
Julio Caballero
Julio Caballero
Junior HP
Junior HP

Cantidad de envíos : 39
Localización : Perú
Calculadora : HP 50g
ROM : 2.09

Volver arriba Ir abajo

Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm Empty Re: Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm

Mensaje  CesarV Lun Nov 08, 2010 12:24 am

Ejemplo DoInputForm
Verificar que los valores de los campos cumplan alguna condición antes de confirmar la salida con OK o ENTER.


En este ejemplo, al presionar OK o ENTER se verifica que los valores de los campos cumplan alguna condición.
Si algún campo no cumple una condición, entonces se muestra un mensaje de advertencia y no se termina el formulario. Además, el enfoque va hacia ese campo.

El comando ROMPTR gFldVal ( #campo -> ob )
retorna el valor de un campo.

El comando FLASHPTR ChangeFocus ( #campo -> )
fija al campo especificado como el nuevo campo actual (el que tendrá el enfoque).

El comando ROMPTR 0B0 016 ( #campo -> )
invierte los píxeles en un campo.

Si escribes un número que no sea real
positivo e intentas finalizar el formulario
con ENTER u OK...
...el formulario no finalizará mostrándose
un mensaje de alerta y el enfoque irá al
campo que contiene el número incorrecto
Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm Dibujo10 Evitar la salida si el contenido de un campo no cumple una condición en DoInputForm Dibujo11

Código:
* Test realizado a un objeto.
* Retorna TRUE si en la pila hay un número real que sea entero y positivo.
NULLNAME TestRealEnteroPositivo ( ob -> flag )
::                ( ob )
DUPTYPEREAL?      ( ob flag )
NOTcase DROPFALSE    ( sale con FALSE )
                  ( % )
DUP              ( % % )
%0>              ( % flag )
NOTcase DROPFALSE    ( sale con FALSE )
                  ( % )
%FP              ( %ParteDecimal )
%0=              ( flag )
;

Código:
* Mueve el enfoque al campo especificado
* Actualiza visualización de campos (invierte píxeles).
* Actualiza la zona de la ayuda.
NULLNAME ChangeFocus3 ( #c -> )
::            ( #c )
DUP            ( #c #c )
ROMPTR 0B0 097 ( #c ) ( cambia el enfoque e invierte píxeles )
TRUESWAP_      ( T #c )
ROMPTR 0B0 017 ( ) ( muestra ayuda del campo justo encima de los menús )
;

Código:
xNAME DoCamposValidOK ( -> ob1 ob2 T // F )
:: CK0 ( No se requieren argumentos )

* ETIQUETAS
"A:" BINT1 BINT21
"B:" BINT1 BINT31

* CAMPO Nº #1. ES UN CAMPO TEXTO. CONTIENE A UN NÚMERO REAL.
'DROPFALSE  ( Message Handler del campo )
20 20 92 9  ( Posición y tamaño: #x #y #b #h )
BINT1        ( #TipoDeCampo: #1=Texto )
{ BINT0 }    ( TiposPermitidos: #0=Reales )
BINT4        ( Decompile: #4=Formato estándar )
"A: número real entero positivo" ( "Ayuda" )
MINUSONE    ( ChooseData: MINUSONE para campo texto )
MINUSONE    ( ChooseDecompile: MINUSONE para campo texto )
MINUSONE DUP ( Valor Reset y Valor Inicial )

* CAMPO Nº #2. ES UN CAMPO TEXTO. CONTIENE A UN NÚMERO REAL.
'DROPFALSE  ( Message Handler del campo )
20 30 92 9  ( Posición y tamaño: #x #y #b #h )
BINT1        ( #TipoDeCampo: #1=Texto )
{ BINT0 }    ( TiposPermitidos: #0=Reales )
BINT4        ( Decompile: #4=Formato estándar )
"B: número real entero positivo" ( "Ayuda" )
MINUSONE    ( ChooseData: MINUSONE para campo texto )
MINUSONE    ( ChooseDecompile: MINUSONE para campo texto )
MINUSONE DUP ( Valor Reset y Valor Inicial )

BINT2 BINT2            ( Número de etiquetas y de campos )
' :: BINT29 #=casedrop ( -> T/F T // F )
    :: BINT1 ROMPTR gFldVal  ( ob )
        TestRealEnteroPositivo ( flag )
        NOTcase
        ::                    ( )
          BINT1              ( #1 )
          ChangeFocus3        ( )
          "A debe ser un entero positivo" FlashWarning
          FalseTrue          ( F T )
        ;
        BINT2 ROMPTR gFldVal  ( ob )
        TestRealEnteroPositivo ( flag )
        NOTcase
        ::                    ( )
          BINT2              ( #2 )
          ChangeFocus3        ( )
          "B debe ser un entero positivo" FlashWarning
          FalseTrue          ( F T )
        ;
        TrueTrue              ( T T )
    ;
    DROPFALSE
  ;                    ( Message Handler del formulario )
"TITULO"              ( Título del formulario )

DoInputForm
;
CesarV
CesarV
Admin

Masculino Cantidad de envíos : 133
Localización : Perú
Calculadora : HP 50g
ROM : 2.15

https://sites.google.com/view/cesarv1821

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.