Ir abajo
Julio Caballero
Julio Caballero
Junior HP
Junior HP
Cantidad de envíos : 39
Localización : Perú
Calculadora : HP 50g
ROM : 2.09

Actualizar el valor de un campo al cambiar el valor de otro campo Empty Actualizar el valor de un campo al cambiar el valor de otro campo

el Dom Oct 24, 2010 3:52 pm
Saludos a toda la comunidad.

Estoy haciendo un programa con DoInputForm y tengo 2 campos con números reales.
Quisiera que al escribir un valor en el primer campo, el segundo campo se actualice inmediatamante.

No se que message handler usar y como programarlo.

Gracias por la ayuda que me puedan dar.
CesarV
CesarV
Admin
Masculino Cantidad de envíos : 114
Localización : Perú
Calculadora : HP 50g
ROM : 2.15
https://sites.google.com/view/cesarv1821

Actualizar el valor de un campo al cambiar el valor de otro campo Empty Actualizar el valor de un campo al cambiar el valor de otro campo. DoInputForm

el Lun Oct 25, 2010 7:13 pm
Para hacer esto debes usar el mensaje número 47 en el message handler de un campo.
Este mensaje es llamado cuando el valor del campo cambia.

Además debes usar el NULLNAME DoSetFieldValue que permite cambiar el valor de cualquier campo. Entonces:
1) Poner el mensaje nº 47 en el campo cuyos cambios afectarán el valor de otros campos.
2) En este debemos obtener el valor(es) que queremos asignar al otro(s) campo(s) y luego usar el comando NULLNAME DoSetFieldValue.

A continuación un ejemplo sencillo con dos campos y dos etiquetas con su respectiva explicación que puedes copiar y pegar en el editor de Debug4x.

Si se actualiza el valor del primer campo, el segundo campo se actualizará de manera automática, fijándose su valor como la décima parte del valor del primer campo.

Actualizar el valor de un campo al cambiar el valor de otro campo Dibujo19

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

* ETIQUETA Nº #1
"A:" BINT1 BINT10
* ETIQUETA Nº #2
"B:" BINT1 BINT31

* CAMPO Nº #1
* ES UN CAMPO TEXTO. CONTIENE A UN NÚMERO REAL.
* CUANDO EL VALOR DE ESTE CAMPO CAMBIA, EL VALOR DEL OTRO CAMPO
* TAMBIÉN CAMBIARÁ.
' :: BINT47 #=casedrop ( -> flag )
    ::                ( )
        5GETLAM        ( #c )
        ROMPTR gFldVal  ( valor )
        %10 %/          ( valor/10 )
        BINT2          ( valor/10 #2 )
        DoSetFieldValue ( )
        TRUE            ( T )
    ;
    DROPFALSE
  ;
25 9 103 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 )
%25 DUP              ( Valor Reset y Valor Inicial )

* CAMPO Nº #2
* ES UN CAMPO TEXTO. CONTIENE A UN NÚMERO REAL.
* CUANDO EL VALOR DEL OTRO CAMPO CAMBIE, EL
* VALOR DE ESTE CAMBIA. SE ACTUALIZA A LA DÉCIMA PARTE DEL OTRO
'DROPFALSE          ( Message Handler del campo )
25 30 103 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 número real" ( "Ayuda" )
MINUSONE            ( ChooseData: MINUSONE para campo texto )
MINUSONE            ( ChooseDecompile: MINUSONE para campo texto )
%17 DUP              ( Valor Reset y Valor Inicial )

BINT2 BINT2          ( Número de etiquetas y de campos )
'DROPFALSE          ( Message Handler del formulario )
"TITULO"            ( Título del formulario )

DoInputForm
;

* Cambia el valor de un campo.
* Muestra el nuevo valor en pantalla.
* Llama al mensaje 47 del campo que se está cambiando.
NULLNAME DoSetFieldValue ( valor #c -> )
::                    ( valor #c )
DUPUNROT              ( #c valor #c )
ROMPTR sFldVal        ( #c )    ( cambia valor del campo )
DUP                  ( #c #c )
FLASHPTR IFEDispField ( #c )    ( muestra valor del campo )
ROMPTR 0B0 041        ( )      ( llama al mensaje 47 del campo )
;

___________________________________________________
SITIO WEB:     https://sites.google.com/view/cesarv1821
avatar
ivanhp50
Junior HP
Junior HP
Masculino Cantidad de envíos : 31
Edad : 29
Localización : bolivia
Calculadora : HP 50g
ROM : 2.00

Actualizar el valor de un campo al cambiar el valor de otro campo Empty Y, Si fueran varios campos

el Miér Nov 02, 2011 7:28 pm
hola, sobre el tema tengo una duda, si en lugar de dos campos fueran más como sería ..... lol!
Volver arriba
Permisos de este foro:
No puedes responder a temas en este foro.