Problemas con TEXTBOX
Moderator: Rathinagiri
Problemas con TEXTBOX
Hola a todos,
Solo me puedo parar con el mouse. ( en el Primer DEFINE TEXTBOX ) pero si me deseo dar click en la casilla de Peso o FC o Talla etc NO deja. Me toca pararme en el primer DEFINE TEXTBOX y usar la tecla tab.
DEFINE TEXTBOX nPeso
ROW 130
COL 300
WIDTH 60
TOOLTIP "Peso"
NUMERIC .T.
INPUTMASK '999.99'
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )
RIGHTALIGN .T.
END TEXTBOX
DEFINE TEXTBOX nTalla
ROW 130
COL 500
WIDTH 60
TOOLTIP "Talla"
NUMERIC .T.
INPUTMASK '999'
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , IMC( Win_111.nPeso.Value, Win_111.nTalla.Value ) )
RIGHTALIGN .T.
END TEXTBOX
@ 130 ,710 LABEL Label_A33 WIDTH 180 FONT "Arial" SIZE 12 bold
DEFINE TEXTBOX nFRespi
ROW 160
COL 110
WIDTH 60
TOOLTIP "Frecuencia Respiratoria"
NUMERIC .T.
INPUTMASK '999'
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )
RIGHTALIGN .T.
END TEXTBOX
DEFINE TEXTBOX nFCardi
ROW 160
COL 300
WIDTH 60
TOOLTIP "Frecuencia Cardiaca"
NUMERIC .T.
INPUTMASK '999'
RIGHTALIGN .T.
END TEXTBOX
Que estoyb haciendo mal?, gracias por su ayuda
Solo me puedo parar con el mouse. ( en el Primer DEFINE TEXTBOX ) pero si me deseo dar click en la casilla de Peso o FC o Talla etc NO deja. Me toca pararme en el primer DEFINE TEXTBOX y usar la tecla tab.
DEFINE TEXTBOX nPeso
ROW 130
COL 300
WIDTH 60
TOOLTIP "Peso"
NUMERIC .T.
INPUTMASK '999.99'
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )
RIGHTALIGN .T.
END TEXTBOX
DEFINE TEXTBOX nTalla
ROW 130
COL 500
WIDTH 60
TOOLTIP "Talla"
NUMERIC .T.
INPUTMASK '999'
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , IMC( Win_111.nPeso.Value, Win_111.nTalla.Value ) )
RIGHTALIGN .T.
END TEXTBOX
@ 130 ,710 LABEL Label_A33 WIDTH 180 FONT "Arial" SIZE 12 bold
DEFINE TEXTBOX nFRespi
ROW 160
COL 110
WIDTH 60
TOOLTIP "Frecuencia Respiratoria"
NUMERIC .T.
INPUTMASK '999'
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )
RIGHTALIGN .T.
END TEXTBOX
DEFINE TEXTBOX nFCardi
ROW 160
COL 300
WIDTH 60
TOOLTIP "Frecuencia Cardiaca"
NUMERIC .T.
INPUTMASK '999'
RIGHTALIGN .T.
END TEXTBOX
Que estoyb haciendo mal?, gracias por su ayuda
- danielmaximiliano
- Posts: 2646
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Problemas con TEXTBOX
Hola : si es posible replica tu codigo lo mas completo posible, sino en formato de ejemplo.
esto quiere decir que incluyas todo o parcialmente el .prg
y que version de HMG utilizas, estamos en la version HMG.3.1.1
esto quiere decir que incluyas todo o parcialmente el .prg
y que version de HMG utilizas, estamos en la version HMG.3.1.1
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Re: Problemas con TEXTBOX
Es por causa de este comando: This.Value < 0, This.SetFocus
Hacé la verificacion de los TEXTBOX vacios al final cuando executas alguna accion (talvez algun boton que tengas...) ai verificas si están completo, pero no en su declaracion, sino no vá dejar nunca pasar....
Hacé la verificacion de los TEXTBOX vacios al final cuando executas alguna accion (talvez algun boton que tengas...) ai verificas si están completo, pero no en su declaracion, sino no vá dejar nunca pasar....
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
-
Leopoldo Blancas
- Posts: 388
- Joined: Wed Nov 21, 2012 7:14 pm
- Location: México
Re: Problemas con TEXTBOX
Hola... Gabrielog
lo que veo es que ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )... es que si el valor nunca va a ser negativo o si?
En el caso de no haber números negativos y quieres que valide el Texbox, que no deje pasar si es cero o prácticamente esta vacio.... entonces es mejor utilizar ON LOSTFOCUS IIF(Empty(This.Value), This.SetFocus , NIL )... o IIF(This.Value = 0 , This.SetFocus , NIL )...
Espero que te sea de utilidad...
Polo
lo que veo es que ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )... es que si el valor nunca va a ser negativo o si?
En el caso de no haber números negativos y quieres que valide el Texbox, que no deje pasar si es cero o prácticamente esta vacio.... entonces es mejor utilizar ON LOSTFOCUS IIF(Empty(This.Value), This.SetFocus , NIL )... o IIF(This.Value = 0 , This.SetFocus , NIL )...
Espero que te sea de utilidad...
Polo
Problemas con TEXTBOX
Hola a todos, se requiere que NO acepte valores negativos, puede ser cero o mayor a cero. yo inicializo la variable de captura en cero.
esto lo utilizo para determinar El índice de masa corporal.
function Imc( nPeso, nTalla )
local cIMC := nPeso / nTalla / nTalla * 10000
RETURN NIL
Utilizo HMG 3.0.46
esto lo utilizo para determinar El índice de masa corporal.
function Imc( nPeso, nTalla )
local cIMC := nPeso / nTalla / nTalla * 10000
RETURN NIL
Utilizo HMG 3.0.46
-
Leopoldo Blancas
- Posts: 388
- Joined: Wed Nov 21, 2012 7:14 pm
- Location: México
Re: Problemas con TEXTBOX
Hola... Mi anterior post de éste te da la solución
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )
Saludos
Polo
ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )
Saludos
Polo
Problemas con TEXTBOX
Hola amigos, anexo programa con el cual tengo problemas, lo que desea el jefe es que con el mause se pueda ubicar en cualquier campo sin necesidad de usar el <TAB> solo dar Click, el programa parece que funciona bien solo me falta arreglar este problema.
Gracias
Gracias
- Attachments
-
- Demo.rar
- (8.56 KiB) Downloaded 205 times
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Re: Problemas con TEXTBOX
Hola Gabriel,
Descubrí lo que está impidiendo el acceso a los TEXTBOX por medio del click del mouse.
Basicamente tu tienes 2 labels que ocupan mucho espacio sin necesidad, en sintesis fijate los siguientes labels:
@ 125 , 30 LABEL LABEL_A5 VALUE 'Peso : Kgs' WIDTH 180
@ 125 , 260 LABEL LABEL_A6 VALUE 'Talla : cms' WIDTH 180
Mi gran consejo, es para que busques siempre desenvolver tu interface (lo que tienes que mostrar en pantalla) por médio de la creaccion de los formulários através de la IDE. Eso te ayudará mucho a evitar vários inconvenientes. Uno de ellos, son los componentes no están en secuencia, lo que dificulta la compreension de tu código. Otro incnveniente, es el tamaño y disposicion de los componentes, visto que la ventana no puede ser mayor de lo que soporta la pantalla. Despues de ver tu screen y ver que los componentes están en orden, puede visualizar el form, marcar bloco y copiarlo para dentro de tu código fuente (tu prg).
Otro grande consejo es que te olvides la forma de programar del modo console, ahora tu estás en un nuevo modo de programar, acuerdate que son objetos y debes extrair provecho de cada propriedad, cada accion de cada elemento. Y la forma que lo haces suele parecer un fuerte arraigo a la forma console (Clipper, talvez) de programar. Yo no usaria jamás un nombre de variable igual a nombre de un elemento (ejemplo: en tu funcion Imc, variable nTalla).
Cerrar tu banco de datos está en el lugar equivocado, no lo puedes hacer en el main despues de definir tu window. Tienes que hacerlo en una funcion separada, cuando se encierra tu aplicacion.
Y por ultimo, al desenvolver tus screens atravez de la IDE, irás notar que puedes mejorar las estética de tu programa. Se notas que son mucho datos para exbir en pantalla, buscá de utilizar los TABs donde cada page puedes colocar cada iten por separado (en este caso serian los EDITBOXes).
De facto conseguí encontrar el paradigma de por qué no focalizaba los TEXTBOX cuando clicabas con el mouse, gracias a que tuviste la idea de disponibilizar parte de tu código. Sinó: jamás lo encontraria y estariamos buscando el problema donde no lo hay...
Ahhh mas un consejo, buscá de hacer una sola verificacion de TEXTBOX vacios, ya que tu jefe quiere llenar en la secuencia que cada uno desee o disponga. Asi, haciendo una verificacion de los textbox envueltos para dar proseguimiento a una entrada de dato (por ejemplo) y dispondrias del reposicionamiento (con el SetFocus) para cada TEXTBOX vacio que hayan podido dejar... Queda más estético y no tan rígido. Inclusive puedes cambiar el color cuando está vacio. Fijate este tópico: http://hmgforum.com/viewtopic.php?p=19208#p19208
Descubrí lo que está impidiendo el acceso a los TEXTBOX por medio del click del mouse.
Basicamente tu tienes 2 labels que ocupan mucho espacio sin necesidad, en sintesis fijate los siguientes labels:
@ 125 , 30 LABEL LABEL_A5 VALUE 'Peso : Kgs' WIDTH 180
@ 125 , 260 LABEL LABEL_A6 VALUE 'Talla : cms' WIDTH 180
Mi gran consejo, es para que busques siempre desenvolver tu interface (lo que tienes que mostrar en pantalla) por médio de la creaccion de los formulários através de la IDE. Eso te ayudará mucho a evitar vários inconvenientes. Uno de ellos, son los componentes no están en secuencia, lo que dificulta la compreension de tu código. Otro incnveniente, es el tamaño y disposicion de los componentes, visto que la ventana no puede ser mayor de lo que soporta la pantalla. Despues de ver tu screen y ver que los componentes están en orden, puede visualizar el form, marcar bloco y copiarlo para dentro de tu código fuente (tu prg).
Otro grande consejo es que te olvides la forma de programar del modo console, ahora tu estás en un nuevo modo de programar, acuerdate que son objetos y debes extrair provecho de cada propriedad, cada accion de cada elemento. Y la forma que lo haces suele parecer un fuerte arraigo a la forma console (Clipper, talvez) de programar. Yo no usaria jamás un nombre de variable igual a nombre de un elemento (ejemplo: en tu funcion Imc, variable nTalla).
Cerrar tu banco de datos está en el lugar equivocado, no lo puedes hacer en el main despues de definir tu window. Tienes que hacerlo en una funcion separada, cuando se encierra tu aplicacion.
Y por ultimo, al desenvolver tus screens atravez de la IDE, irás notar que puedes mejorar las estética de tu programa. Se notas que son mucho datos para exbir en pantalla, buscá de utilizar los TABs donde cada page puedes colocar cada iten por separado (en este caso serian los EDITBOXes).
De facto conseguí encontrar el paradigma de por qué no focalizaba los TEXTBOX cuando clicabas con el mouse, gracias a que tuviste la idea de disponibilizar parte de tu código. Sinó: jamás lo encontraria y estariamos buscando el problema donde no lo hay...
Ahhh mas un consejo, buscá de hacer una sola verificacion de TEXTBOX vacios, ya que tu jefe quiere llenar en la secuencia que cada uno desee o disponga. Asi, haciendo una verificacion de los textbox envueltos para dar proseguimiento a una entrada de dato (por ejemplo) y dispondrias del reposicionamiento (con el SetFocus) para cada TEXTBOX vacio que hayan podido dejar... Queda más estético y no tan rígido. Inclusive puedes cambiar el color cuando está vacio. Fijate este tópico: http://hmgforum.com/viewtopic.php?p=19208#p19208
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
-
Leopoldo Blancas
- Posts: 388
- Joined: Wed Nov 21, 2012 7:14 pm
- Location: México
Re: Problemas con TEXTBOX
Hola Pablo...
Muy interesante tu recomendación de cambiar de color... pero no logro poner DatePicker en otro color
No tendras un ejemplo? en HMG. Gracias
Saludos
Polo
Muy interesante tu recomendación de cambiar de color... pero no logro poner DatePicker en otro color
No tendras un ejemplo? en HMG. Gracias
Saludos
Polo
-
Leopoldo Blancas
- Posts: 388
- Joined: Wed Nov 21, 2012 7:14 pm
- Location: México
Re: Problemas con TEXTBOX
Hola Gabriel...
Si, cuando empezamos a programar cometemos esos errores que te menciona Pablo, pero poco a poco haciendo caso de esas recomendaciones es como vamos mejorando nuestras aplicaciones, y si escudriñamos más en tu código vemos que no hay coherencia en los parámetros.... (aunque también a mi se me pasan ese tipo de cosas, ya que lo voy haciendo al acierto y error.)
Que al llamar la función Imc Pones 3 parámetros y en la función recibes solo 2?
Y al hacer el calculo de cIMC no usas los paréntesis para separar las operaciones.
Espero que también este comentario nos sirva para mejorar nuestro código.
Saludos
Polo
Si, cuando empezamos a programar cometemos esos errores que te menciona Pablo, pero poco a poco haciendo caso de esas recomendaciones es como vamos mejorando nuestras aplicaciones, y si escudriñamos más en tu código vemos que no hay coherencia en los parámetros.... (aunque también a mi se me pasan ese tipo de cosas, ya que lo voy haciendo al acierto y error.)
Code: Select all
Imc( Examen->Peso, Examen->Talla, .T. ) // Aquí pasas 3 parámetros
dbSelectArea("Examen")
ActivarEdicion111()
lNuevo := .F.
Return
*------------------------------------------------------------------------------*
function Imc( nPeso, nTalla )
*Aquí solo hay 2 parámetros... Y no haces una observación sobre el número de parámetros******************************
*------------------------------------------------------------------------------*
local cIMC := nPeso / nTalla / nTalla * 10000 // Utiliza los paréntesis para separar las operaciones.
Y al hacer el calculo de cIMC no usas los paréntesis para separar las operaciones.
Espero que también este comentario nos sirva para mejorar nuestro código.
Saludos
Polo