Page 1 of 1

Problema con propiedad MAXLENGTH de control TEXTBOX

Posted: Thu Apr 10, 2014 3:57 pm
by citro
Estoy queriendo lograr pasar de un TEXTBOX a otro control, cuando el mismo se autocomplete, o sea, si en un TEXTBOX tengo definido el MAXLENGTH como 7, al llegar al 7mo caracter pase al siguiente control, pongo un ejemplo más abajo.

Code: Select all

#include "hmg.ch"

/***/
function Main()

local DesCli

DesCli:=space(5)
cArti :=space(16)

DEFINE WINDOW frmNombObje ;
  AT 0,0 ;
  WIDTH 550 ;
  HEIGHT 400 ;
  TITLE 'Paso a otro control automáticamente' ;
  MAIN
  
  @ 35,15 LABEL lblDesCli ;
	      VALUE 'Desde' ;
		  WIDTH 50
			
  @ 35,75 TEXTBOX txtDesCli ;
		  VALUE DesCli ;
		  WIDTH 70 ;
		  TOOLTIP 'Ingrese el Cliente desde el cual desea que se emita el informe' ;
		  MAXLENGTH 7 		  ;
		  UPPERCASE ;
		  ON CHANGE if( PasaCtrl(),frmNombObje.txtArti.setfocus,Nil ) 
		  
  @ 65,15 LABEL lblArti ;
	      VALUE 'Artículo' ;
		  WIDTH 50
			
  @ 65,75 TEXTBOX txtArti ;
		  VALUE cArti ;
		  WIDTH 130 ;
		  TOOLTIP 'Ingrese el Artículo desde el cual desea que se emita el informe' ;
		  MAXLENGTH 17 		  ;
		  UPPERCASE 

  @ 230,340 COMBOBOX cbo_Orden1 ;
			WIDTH 100 ;
			ITEMS { "Cliente","Saldo","Descripción" } ;
			VALUE 1 
  		
  DEFINE BUTTON btnAcepta
	ROW	300
	COL	10
	CAPTION	'Aceptar'
	ACTION	Procesar()
	WIDTH	100
  END BUTTON
  
  DEFINE BUTTON btnSalir
	ROW	300
	COL	120
	CAPTION	'Salir'
	ACTION	frmNombObje.release()
	WIDTH	100
  END BUTTON
  
END WINDOW

CENTER WINDOW frmNombObje
ACTIVATE WINDOW frmNombObje

Return Nil

/***/
static Function Procesar()

msgbox( "En desarrollo" )

retu Nil
  
/***/
static Function PasaCtrl()

local cForm,cCtrl

cForm:=thiswindow.name
cCtrl:=This.name

if len( getproperty( cForm,cCtrl,"value" ) ) = getproperty( cForm,cCtrl,"maxlength" )
  retu .t.
end if

retu .f.
La función PasaCtrl(), devuelve siempre falso, y cuando quise comprobar si tenia algún valor la propiedad maxlength del textbox, hice algo como esto dentro de la función PasaCtrl()

msgbox( valtype( getproperty( cForm,cCtrl,"maxlength" ) ) )

y me devolvió "U"

Es un bug de HMG o hay alguna otra forma de saber la longitud de un TEXTBOX previamente definido con MAXLENGTH.

Re: Problema con propiedad MAXLENGTH de control TEXTBOX

Posted: Thu Apr 10, 2014 4:53 pm
by Javier Tovar
Checa este post... viewtopic.php?f=9&t=3590

Saludos

Re: Problema con propiedad MAXLENGTH de control TEXTBOX

Posted: Thu Apr 10, 2014 7:01 pm
by citro
Gracias Javier, es el ejemplo que necesitaba e incluso con más detalles porque veo que también contempla el caso de sobreescritura. Gracias.