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

Verificar que todos los campos estén llenos con DoInputForm

2 participantes

Ir abajo

Verificar que todos los campos estén llenos con DoInputForm Empty Verificar que todos los campos estén llenos con DoInputForm

Mensaje  Julio Caballero Dom Oct 24, 2010 4:24 pm

Quisiera saber como programar un formulario de entrada con DoInputForm para verificar que todos los campos estén llenos al intentar confirmar con ENTER u OK.

De esta manera si hay algún campo vacío y el usuario presione ENTER u OK, se muestre un mensaje como "Escribe todos los datos", y se evite la finalización del formulario hasta que todos los campos estén llenos.

Gracias por su 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

Verificar que todos los campos estén llenos con DoInputForm Empty Verificar que todos los campos estén llenos al terminar el formulario con OK

Mensaje  CesarV Lun Oct 25, 2010 6:57 pm

En el siguiente ejemplo, al presionar OK o ENTER se verifica que todos los campos estén llenos.

Si hay algún campo vacío, se evita la finalización del formulario (y se muestra el mensaje “escribe todos los datos”).

El comando FLASHPTR GetFieldVals ( -> ob1 ob2 ... obn )
pone todos los objetos de los campos en la pila.

El número de campos se encuentra guardado en el lam14 como un bint. Y es llamado con el comando 14GETLAM.

El comando FLASHPTR ListPos ( ob {} -> #i/#0 )
pone en la pila la ubicación de un objeto dentro de una lista como un BINT,
si el objeto no está presente en la lista, pone BINT0.

2 etiquetas y 2 camposSi algún campo está vació, se evita la finalización con ENTER u OK
Verificar que todos los campos estén llenos con DoInputForm Dibujo14Verificar que todos los campos estén llenos con DoInputForm Dibujo15

Código:
ASSEMBLE
  CON(1) 8 * Tell parser 'Non algebraic'
RPL
xNAME DoCamposLlenos ( -> ob1 ob2 T // F )
:: CK0 ( No se requieren argumentos )

* ETIQUETAS
"Dato 1:" BINT1 BINT21
"Dato 2:" BINT1 BINT31

* CAMPO Nº #1. ES UN CAMPO TEXTO. CONTIENE A UN NÚMERO REAL.
'DROPFALSE  ( Message Handler del campo )
35 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 )
"Escribe un número real" ( "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 )
35 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 )
"Escribe un número real" ( "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 ( IfMsgKeyOK ) ( -> flag TRUE // F )
    :: FLASHPTR GetFieldVals ( ob1 ob2...obn )
        14GETLAM              ( ob1 ob2...obn #n )
        {}N                  ( { ob1 ob2...obn } )
        MINUSONE SWAP        ( MINUSONE { ob1 ob2...obn } )
        FLASHPTR ListPos      ( #pos/#0 )
        #0=ITE
          TrueTrue
          :: "Escribe todos los datos" FlashWarning FalseTrue ;
                              ( flag 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.