MANUAL GML

24 views
Skip to first unread message

ING. ENRIQUE SOLIS ALVAREZ

unread,
Jun 28, 2025, 11:37:28 PMJun 28
to MundoBBx
Buenas noches a todos,

Alguien tiene el manual completo de GML para Vpro5?

Hasta ahora solo he visto solo algunas paginas y con ellas he hecho muchos programas con GML, pero tengo aun muchas dudas en su instrumentación, sobre todo para la modificación de celdas y especialmente el comando GML::GOTO_CELL, porque al ejecutar "GML_M", siempre me regresa al renglón 1, columna 1.

Gracias

Ing. Enrique Solis

Administrador

unread,
Jun 28, 2025, 11:48:01 PMJun 28
to MundoBBx
Estimado Enrique,

Te comparto enlace a varios manuales, entre los cuales se encuentra el de GML:

Saludos cordiales,

Administrador MundoBBx

Administrador

unread,
Jun 28, 2025, 11:50:10 PMJun 28
to MundoBBx
Y acá las páginas de ayuda en la documentación oficial de Basis que también puedes consultar:

m Pizarro

unread,
Jun 28, 2025, 11:57:55 PMJun 28
to mund...@googlegroups.com
atentamente
Marcos Pizarro

--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+u...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/mundobbx/d7537732-fa43-4f87-be93-c28d60c33e17n%40googlegroups.com.
GML.pdf

ING. ENRIQUE SOLIS ALVAREZ

unread,
Jun 29, 2025, 10:16:12 AMJun 29
to MundoBBx
Muchas gracias,

Ya tengo estos manuales y con estos he podido programar muchas aplicaciones, sin embargo, tengo este problema:
:
En la pantalla que adjunto, pretendo que el programa sólo me acepte datos en las celdas marcadas con colores y que, cuando el usuario introduzca datos en alguna celda o presione TAB, mandarlo directamente a la siguiente celda válida..

Para ello les muestro algunas líneas del programa:

25000 GEVENT: REPEAT                                                          
25020 READ RECORD(G,SIZ=GEVENT,ERR=GEVENT_LOOP_END)GEVENT$                    
25030 IF GEVENT.CONTEXT<>GCONTEXT THEN GOTO 25020                            
25040 IF GEVENT.CODE$="N" THEN LET GGENERIC$=NOTICE(G,GEVENT.X%); DIM GNOTICE$
25040::NOTICETPL(GGENERIC.OBJTYPE%,GEVENT.FLAGS%); LET GNOTICE$=GGENERIC$    
25050 IF GEVENT.CODE$="N" AND GNOTICE.OBJTYPE%=107 THEN GOSUB GRID_MANAGER; IF
25050: GML.SET THEN CONTINUE                                                  
25060 LET GWIN_ID$=$$,GPOPUP_ID=GEVENT.X*(GEVENT.CODE$="P")                  
25070 IF GPOPUP_ID=0 THEN LET GWIN_ID$=FNGWIN_ID$(GEVENT.CONTEXT)            
25080 LET GEH=0                                                              
25090 WHILE GWIN_ID$="10101"  
                                                
38000 GRID_MANAGER:                                                          
38010 CALL "GML_M",G,GEVENT$,GNOTICE$,GML_SET$,GML_TPL$,GML$,GML_GM$[ALL],GML_
38010:GC$[ALL],GML_GR$[ALL]                                                  

38020 REM "Aqui lo mando a la siguiente celda válida                          
38030 LET TIPCOL=GML_TPL.COL_N%; IF TIPCOL>5 THEN LET TIPCOL=6                

38035 REM "Aqui evito que introduzcan datos en las primeras 5 columnas        
38040 IF GML_TPL.COL_N%<5 THEN LET GML_TPL.COL_N%=GML_TPL.COL_N%+1; CALL "gml:
38040::goto_cell"; RETURN                                                    

38050 REM "Aqui verifica que el renglon tenga datos y sea válido              
38055 REM "CADACT contiene la 1a. columna vàlida para el renglon actual y CADA
38055:CT2, la 1ra. para el renglón siguiente                                  
38060 IF GML_TPL.ROW_N%>0 THEN LET CADACT=NUM(CAD$(GML_TPL.ROW_N%,1)),VALIDOS=
38060:LEN(CVS(CAD$,2)),CADACT2=NUM(CAD$(GML_TPL.ROW_N%+1,1))                  
38070 SWITCH GML.NOTIFY%                                                      
38080 CASE 2; REM TAB                                                        

38085 REM "aqui veo en que renglon y columna se encuentra                    
38090 LET COL=GML_TPL.COL_N%,ROW=GML_TPL.ROW_N%                              

38110 REM "Aqui realizo el cambio de celda a una celda válida                
38120 IF COL>5 AND (COL<>CADACT AND COL<>CADACT+2) THEN LET COL=COL+1; GOTO 38
38120:140                                                                    

38125 REM "Si la columna es válida, continua su proceso                      
38130 IF COL<=CADACT+2 THEN BREAK                                            

38135 REM "Si ya no hay más columnas válidas en el renglón, lo paso a la 1ra.
38135:columna válida del siguiente renglón.                                                                                                        
38138 LET COL=CADACT2,ROW=ROW+1                                              
38140 LET GML_TPL.COL_N%=COL,GML_TPL.ROW_N%=ROW                              
38150 CALL "gml::goto_cell"                                                  
38160 BREAK                                                                  
38170 CASE 9                                                                  
38180 SWITCH GML_TPL.FLAG%                                                    
38190 CASE 3                                                                  
38200 CASE 9                                                                  
38210 CASE 12                                                                
38220 CALL "GML::START_EDIT"                                                  
38240 BREAK                                  
38250 SWEND                                  
38270 CASE 6                                
38280 LET TEXTO$=GML_TPL.TEXT$              
38520 LET TEXTO=NUM(TEXTO$,ERR=38580)        
38540 CALL "GML::END_EDIT"                  
38550 LET GML_TPL.COL$[COL]=STR(TEXTO:MASK$)
38570 CALL "GML::UPDATE"; CALL "GML::REFRESH"
38580 BREAK                                  
38600 SWEND                                  
38610 RETURN                                

Mi problema es que, cuando lo mando a la siguiente celda válida (con GOTO_CELL) , al regresar a aceptar el dato siguiente y volver al [GML_M) de la 38010, me cambia a columna 1, renglón 1, sin respetar la celda a la que lo envíe.

Ojalá me puedan ayudar a encontrar en donde me estoy equivocando.

Gracias

Ing. Enrique Solís
Pantalla.png

ING. ENRIQUE SOLIS ALVAREZ

unread,
Jun 29, 2025, 2:35:43 PMJun 29
to MundoBBx
Muchas gracias, Marco

Esta versión del GML.PDF está mucho mas completa.

Saludos
Ing. Enrique Solis Alvarez

El sábado, 28 de junio de 2025 a las 21:57:55 UTC-6, shal...@gmail.com escribió:
Reply all
Reply to author
Forward
0 new messages