Page 1 of 1

GET y READ Vs TEXTBOX

Posted: Thu Jun 14, 2018 9:40 pm
by SALINETAS24
Hola, tengo una aplicación CLIPPER que utilizo para dar de alta las cuentas de Mayor de Plan Contable y tiene el siguiente código.

Code: Select all

	@ 1,1 GET xCuenta PICTURE "#########"
	READ
	IF !EMPTY(xCuenta)
	    FOR nFor=1 TO MIN(4,LEN(ALLTRIM(xCuenta)))
	   	  aField[1]=SUBSTR(xCuenta,1,nFor)+SPACE(10-nFor)
                  @ nFor+5,1 SAY aField[1]
                  @ nFor+5,12 GET aField[2]  PICTURE "@S25"
                  READ
                  // -->  y ahora actualizo registro
                  // ....
            NEXT
         ENDIF
Osease, si el usuario introduce la cuenta 430000001, el programa le pedira la cuenta 4, la 43, la 430 y la 4300.

Puen no consigo hacerlo en HMG, supongo que lo facil es hacer una nueva declaración de una Windows para cada uno de ellos, pero no es eso lo que quiero. Me gustaría mostrarlo en la misma pantalla.

Code: Select all


DEFINE WINDOW Win_1				;
		AT 0,0					;
		WIDTH 800				;
		HEIGHT 360				;
		TITLE 'Mantenimiento de Cuentas';	
		MODAL   				;
		BACKCOLOR   COLOR_P 
		
		@ 96 , 405 TEXTBOX GET_1 WIDTH 85 VALUE aField[1] MAXLENGTH 10;
					ON ENTER (Graba_macu(this.value))
				
		@ 136 , 490 TEXTBOX GET_3 WIDTH 270 VALUE aField[2] MAXLENGTH 30
		@ 166 , 490 TEXTBOX GET_4 WIDTH 270 VALUE aField[2] MAXLENGTH 30 
		@ 196 , 490 TEXTBOX GET_5 WIDTH 270 VALUE aField[2] MAXLENGTH 30
		@ 226 , 490 TEXTBOX GET_6 WIDTH 270 VALUE aField[2] MAXLENGTH 30	
		
		Desact_Gets()     //-> ACTIVAMOS SOLO EL PRIMER TEXTBOX
		CENTER WINDOW Win_1
		ACTIVATE WINDOW Win_1
RETURN

//--------------------
STATIC FUNCTION  Desact_Gets
LOCAL n, cn

	For n=1 to 6
		cn="GET_"+str(n,1)
		Win_1.&cn..Enabled := .F.
	NEXT
	Win_1.GET_1.Enabled		:= .T. 
	Win_1.GET_1.SetFocus
	
RETURN Nil

// -------------------------------------------------------------
// --> ACTULIZA EL REGISTRO - GRABA
// -------------------------------------------------------------
STATIC FUNCTION Graba_macu(xcuenta)
	Local nNuevoRecNo, cn, n
	Local cCuenta

	IF !empty(xCuenta)
		Win_1.GET_1.Enabled		:= .F.
		Win_1.GET_2.Enabled		:= .F.
	
		//--> Graba niveles de 1 al 4
		// ESTO SERIA EL GET DE CLIPPER DENTRO DE UN BUCLE FOR/NEXT
		// Pero no se para 
		FOR nFor=1 TO MIN(4,LEN(ALLTRIM(xCuenta)))
			cng="GET_"+str(nFor+2,1)
			//--> SI NO EXISTE TENGO QUE PEDIR Y GRABAR.
			Win_1.&cng..Show
			Win_1.&cng..Enabled		:= .T.
			Win_1.&cng..SetFocus
	       		Win_1.&cng..Enabled		:= .F.
		NEXt
	ENDIF

	

RETURN Nil


Alguna idea de como salir del entuerto...
Gracias de antemano

Re: GET y READ Vs TEXTBOX

Posted: Thu Jun 14, 2018 11:43 pm
by andyglezl
No entendía tu pregunta porque no veo relacion en el título de tu post
con lo que deseas...


Recuerdas este Post que tiene otro Post...

viewtopic.php?f=24&t=5646&p=55106&hilit=for+next#p55106

Re: GET y READ Vs TEXTBOX

Posted: Fri Jun 15, 2018 9:28 am
by SALINETAS24
Hola Andy y gracias por tu colaboración.
Si que recuerdo el post, pero lo que quiero ahora es activar de manera secuencial el Textbox.
Utlizando un bucle que va desde 1 hasta 4, igual que hacia en Clipper como en el primer ejemplo. El objeto es que el sistema pida al usuario 4 títulos para el desglose de una cuenta introducida previamente.
Si el usuario en el primer Textbox introduce la cuenta 43000001 cuya descripcion sera CLIENTES VARIOS, seguidamente el sistema pedirá la cuenta 4 el usuario pondrá CLIENTES Y PROVEEDORES. Después la cuenta 43 y el usuario pondra CLIENTES... la 430.. y por ultimo la 4300..
No se si ahora me he explicado mejor...
Saludos desde Petrer City

Re: GET y READ Vs TEXTBOX

Posted: Fri Jun 15, 2018 1:54 pm
by EduardoLuis
Hola Salinetas:

Me permito recomendarte que para pasar tus aplicaciones a HMG, descartes los modos o procedimientos que utilizabas en Clipper, en primer término porque HMG posee controles y funciones que no existen en Clipper, y además porque HMG apunta a un entorno gráfico que Clipper no poseia.- Esto importa que, la metodología de diseño de una aplicación es ahora con HMG mucho mas sencilla y al mismo tiempo mas poderosa.-
Yendo a tu consulta, creo que el método mas conveniente es utilizar un control COMBOBOX que contiene ó exhibe el numero de la cuenta y su especificación.- Así el usuario en un solo acto selecciona la cuenta específica que desea editar ó visualizar.-
El control COMBOBOX lo asocias a la tabla de datos de cuentas y a un conjunto de TEXTBOX que le exhiban y en su caso le permita - si el usuario lo desea - editar el contenido y actualizar la tabla.- Todo esto lo puedes ubicar en una misma pantalla.-
El control COMBOBOX, asimismo, debe estar asociado a una función por la cual ante cualquier cambio que efectue el usuario actualiza el contenido de los TEXTBOX.-

Los campos de texto, deben estar siempre READONLY := .T. o ENABLED := .F.
Debes agregar un botón para que el usuario pulse si desea editar esos campos de TEXTO, y otros eventualmente para grabar la actualización o cancelarla.-

Al pulsar el botón editar, debes pasar a READONLY := .F. ó ENABLED := .T. los campos de texto.-
Al pulsar el botón grabar o cancelar, debes pasar a READONLY := .F. ó ENABLED := .F. los campos de texto.-

A modo de ejemplo:

@ 308,110 COMBOBOX COMBO_PROF ;
WIDTH 220 ;
HEIGHT 100 ;
ITEMSOURCE CUENTAS->NROCTA , CUENTAS->NOMBRECTA ;
FONT "Arial" SIZE 9 ;
BOLD ;
ON CLOSEUP seledata_cta() ;
ON CHANGE seledata_cta()


FUNCTION SELEDATA_CTA
nu_cuenta := 0
nu_cuenta := Form_W01.COMBO_PROF.Value
cuentas->(dbgoto(nu_cuenta))

FORM_W01.TEXTO1.VALUE := cuentas->nrocta
FORM_W01.TEXTO2.VALUE := cuentas->nombrecta
FORM_W01.TEXTO3.VALUE := SUBSTR(cuentas->nrocta , 1, 4 ) // toma los 4 primeros caracteres
FORM_W01.TEXTO4.VALUE := SUBSTR(cuentas->nrocta , 5, 2 ) // toma los siguientes 2 caracteres
FORM_W01.TEXTO5.VALUE := RIGHT(cuentas->nrocta , 5) // toma los ultimos cinco caracteres
RETURN

Espero que esta alternativa te ayude.-
Cordialmente
Eduardo

Re: GET y READ Vs TEXTBOX

Posted: Fri Jun 15, 2018 2:55 pm
by dragancesu
There's one proverb "when you're in Rome be Roman"

Me too like some things in the clipper, but everything can be done in HMG

I think it's better if you stop thinking about how you worked in the clippers, and you start thinking about how to do it in HMG

Re: GET y READ Vs TEXTBOX

Posted: Fri Jun 15, 2018 4:37 pm
by SALINETAS24
Vaya....tengo que cambiar el modo de pensar.... jajaja.
Muchas gracias