Problemas con TEXTBOX

HMG en Español

Moderator: Rathinagiri

gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Problemas con TEXTBOX

Post by gabrieloq »

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
User avatar
danielmaximiliano
Posts: 2646
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Problemas con TEXTBOX

Post by danielmaximiliano »

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
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Problemas con TEXTBOX

Post by Pablo César »

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....
HMGing a better world
"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

Post by Leopoldo Blancas »

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
gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Problemas con TEXTBOX

Post by gabrieloq »

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
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Problemas con TEXTBOX

Post by Leopoldo Blancas »

Hola... Mi anterior post de éste te da la solución

ON LOSTFOCUS if ( This.Value < 0, This.SetFocus , NIL )

Saludos
Polo
gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Problemas con TEXTBOX

Post by gabrieloq »

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
Attachments
Demo.rar
(8.56 KiB) Downloaded 205 times
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Problemas con TEXTBOX

Post by Pablo César »

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
HMGing a better world
"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

Post by Leopoldo Blancas »

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
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Problemas con TEXTBOX

Post by Leopoldo Blancas »

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.)

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.
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
Post Reply