Problem rebuilding old apps (made with HMG 3.3.1) with HMG 3.4.4

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

User avatar
salamandra
Posts: 311
Joined: Thu Jul 31, 2008 8:33 pm
DBs Used: DBF, MySQL, SQL
Location: Brazil

Re: Problem rebuilding old apps (made with HMG 3.3.1) with HMG 3.4.4

Post by salamandra »

Hola Salinetas24,

SALINETAS24 wrote: Sun Jan 31, 2021 9:02 pm
salamandra wrote: Sun Jan 31, 2021 6:41 pm Hola Salinetas24,

.... / ....

Saludos,


Salamandra, Brasil
Hola Salamandra, observa por favor ultimo bloque en

gPedWhens Lógico
gPedValids Lógico
gControlez "NUMERICO"

Creo que no es correcto, si el ultimo campo es NUMERICO

gPedWhens y gPedValids no pueden ser LOGICOS....


Comprueba
De esa manera está correcto. Enquanto gControlez define a célula como tipo NUMERIC, gPedWhens especifica que no puede ser
editada, y gPedValids define que cualquier valor en la celula es válido.

De mi parte ya llevo 4 dias trabajando con ese problema y hasta ahora no tuve ningun progreso... :cry: :cry: :cry:

Acabo de finalizar algunas pruebas y descubri que ese problema ocurre en cualquier version de HMG 3.4.x.
En las versiones anteriores (HMG 3.3.x) no hay ningun problema, funciona perfectamente, lo que me lleva a pensar que es algun tipo de bug o de inestabilidad introducida en la version 3.4.x.
Veremos...


Saludos,


Salamandra, Brasil
There is one time in which is crucial awakening. That time is now. ( Buddha )
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: Problem rebuilding old apps (made with HMG 3.3.1) with HMG 3.4.4

Post by SALINETAS24 »

Hola Salamandra, no he visto nada raro. A falta de alguna de tus funciones he intentado obtener tu error pero no lo consigo, creo que el problema lo puedes tener en una de estas dos funciónes.

calculos_do_Pedido()
isInCSTs(This.CellValue)

Yo apostaría por la segunda, prueba hacer un RETURN sin hacer nada, anulando así las lineas, a ver si te da el error.

Un saludo,
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
salamandra
Posts: 311
Joined: Thu Jul 31, 2008 8:33 pm
DBs Used: DBF, MySQL, SQL
Location: Brazil

Re: Problem rebuilding old apps (made with HMG 3.3.1) with HMG 3.4.4

Post by salamandra »

Hola SALINETAS24 ,
SALINETAS24 wrote: Mon Feb 01, 2021 12:31 am Hola Salamandra, no he visto nada raro. A falta de alguna de tus funciones he intentado obtener tu error pero no lo consigo, creo que el problema lo puedes tener en una de estas dos funciónes.

calculos_do_Pedido()
isInCSTs(This.CellValue)

Yo apostaría por la segunda, prueba hacer un RETURN sin hacer nada, anulando así las lineas, a ver si te da el error.

Un saludo,
La funcion isInCSTs(This.CellValue) es apenas para verificar si el valor digitado es permitido por una lista pre definida, o sea mas o menos lo siguiente:

Code: Select all


Function isInCSTs(cValor)
LOCAL tValidos:="0.101_1.101_2.101", lRet:=.F.

	if HMG_Len(Alltrim(cValor)) >=3
		if Alltrim(cValor) $tValidos
			lRet:=.T.
		endif
	endif
Return(lRet)		
Por otra parte, omitiendo esta funcion o substituyendola por {|| .T.}, el error persiste.

En relacion a la funcion calculos_do_Pedido(), ejecuta cálculos simples de valores (subtotal del item, valor del impuesto embutido, cantidad de volumenes, peso liquido y bruto, valor total del pedido, etc.).
Por ejemplo:

Code: Select all


Function calculos_do_Pedido()
LOCAL k, aElement:={}
	For k:=1 to _formOrder_grid_ItemCount
		aElement:=_formOrder_grid_Item(k)
		* ------------------------------------------
		aElement[6]:=aElement[4] * aElement[5]
		aElement[15]:=aElement[6] * (aElement[8] /100)
		* ------------------------------------------
		_formOrder_grid_Item(k):=aElement
	Next k
Return Nil

En realidad no ejecuta nada complicado y los cálculos son basados en datos del grid y en datos de los productos precargados en un array que es alimentado a medida que cada item es adicionado al grid. Como ves, realmente no es nada nada de otro mundo, son funciones bastante simples.

Continuo trabajando encima del problema, que por ahora no me parece ser un problema de codigo y si una diferencia de comportamiento (o de funcionamiento ) de HMG.




Saludos,


Salamandra, Brasil
There is one time in which is crucial awakening. That time is now. ( Buddha )
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: Problem rebuilding old apps (made with HMG 3.3.1) with HMG 3.4.4

Post by SALINETAS24 »

salamandra wrote: Mon Feb 01, 2021 2:54 pm .. / ...

Continuo trabajando encima del problema, que por ahora no me parece ser un problema de codigo y si una diferencia de comportamiento (o de funcionamiento ) de HMG.

Saludos,


Salamandra, Brasil
Hola Salamandra, en base a tu datos he intentado recrear tu programa y generar el error, pero no lo he conseguido. :evil:

Solo se me ocurre una cosas..., ¿y si fuera problema del IDE ?. :?: ¿Has probado hace el código lineal y compilarlo..?
Por probar..

Un saludo y suerte...

Code: Select all

/*
* intento de reproduccion error de Salamandra
*/

#include "hmg.ch"
Function Main

Local aRows:={}

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 640 ;
		HEIGHT 400 ;
		TITLE 'Mixed Data Type Grid Test' ;
		MAIN 
		
		DEFINE MAIN MENU
			DEFINE POPUP 'File'
				MENUITEM 'Set Value To {5,2}'	ACTION Form_1.gridPedido.Value := {5,2}
				MENUITEM 'Set Value To {0,0}'	ACTION Form_1.gridPedido.Value := {0,0}
				MENUITEM 'Delete Item 5'	    ACTION Form_1.gridPedido.DeleteItem(5)
				MENUITEM 'AddItem'		        ACTION Form_1.gridPedido.AddItem({" ",0,0,"000",0})
				MENUITEM 'Delete All Items'	    ACTION Form_1.gridPedido.DeleteAllItems
				MENUITEM 'Exit'	ACTION ThisWindow.Release
			END POPUP
		END MENU
		
		

	 DEFINE GRID gridPedido
			ROW   10
			COL   10 
			WIDTH  620
			HEIGHT 330
			ITEMS aRows 
			VALUE 0
			WIDTHS {140,140,140,70,70}
			HEADERS {'Column 1','Column 2','Column 3','CHANumero',"TOTAL"}
			 TOOLTIP "Produtos..."
			ONCHANGE {|| calculos_do_Pedido() }
			ONGOTFOCUS {|| calculos_do_Pedido()}
			ONLOSTFOCUS Nil
			FONTBOLD .T.
			FONTITALIC .F.
			FONTUNDERLINE .F.
			FONTSTRIKEOUT .F.
			ONDBLCLICK Nil
			ONHEADCLICK Nil
			ONQUERYDATA Nil
			MULTISELECT .F.
			ALLOWEDIT .T.
			VIRTUAL .F.
			DYNAMICBACKCOLOR Nil
			DYNAMICFORECOLOR Nil
        COLUMNWHEN  { {|| .F.} , { || .T. } , { || .T. },{|| VERVALUE(This.Cellvalue) },{|| VERVALUE(This.Cellvalue) }} 
        COLUMNVALID { {|| .T. },{|| .T. },{|| .T. },{|| isInCSTs(This.CellValue) },{|| .T. }}
        COLUMNCONTROLS { {"TEXTBOX","CHARACTER",,},	{"TEXTBOX","NUMERIC",,},{"TEXTBOX","NUMERIC",,},{"TEXTBOX","CHARACTER","999",},{"TEXTBOX","NUMERIC","999999.99",}}
        SHOWHEADERS .T.
        CELLNAVIGATION .F.
        NOLINES .F.
        HELPID Nil
        IMAGE Nil
        JUSTIFY Nil
        ITEMCOUNT Nil
        BACKCOLOR Nil
        FONTCOLOR {0,64,128}
        HEADERIMAGES Nil
        ROWSOURCE Nil
        COLUMNFIELDS Nil
        ALLOWAPPEND .F.
        ALLOWDELETE .F.
        BUFFERED .F.
        DYNAMICDISPLAY .F.
        ONSAVE Nil
        LOCKCOLUMNS 0
    END GRID
			

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return
		  

FUNC ISINCSTS(cValor)		
LOCAL tValidos:="0.101_1.101_2.101", lRet:=.F.

	if HMG_Len(Alltrim(cValor)) >=3
		if Alltrim(cValor) $tValidos
			lRet:=.T.
		endif
	endif
Return(lRet)	

FUNC VERVALUE()
		
RETURN .T.

FUNC calculos_do_Pedido()
LOCAL k, aElement:={}
	For k:=1 to Form_1.gridPedido.ItemCount
		aElement:=Form_1.gridPedido.Item(k)
		* ------------------------------------------
		aElement[5]:=aElement[2] * aElement[3]
	
		* ------------------------------------------
		Form_1.gridPedido.Item(k):=aElement
	Next k
Return Nil




Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
salamandra
Posts: 311
Joined: Thu Jul 31, 2008 8:33 pm
DBs Used: DBF, MySQL, SQL
Location: Brazil

Re: Problem rebuilding old apps (made with HMG 3.3.1) with HMG 3.4.4

Post by salamandra »

:) Hi to all,
Finally, after a few days I have solved this problem !!
I use the same function, calculos_do_Pedido(), in both OnChange and OnGotFocus grid´s events because I need to made a set of calculations every time the grid (with 30 columns) it is chaged or updated.
After a lot of tests, I discovered that you can not use the REFRESH method OnGotFocus grid´s event because this cause a problem in GridInPlaceEdit and generates a fatal runtime error:
runtime_error.jpg
runtime_error.jpg (37.19 KiB) Viewed 1228 times

To better understand, please see this attached sample:
Grid_inPlaceEdit.rar
(1.91 MiB) Downloaded 103 times
As I said previously, this error does not happens in HMG 3.3.x, so I believe ( and I´m sure now) this is a BIG bug introduced with HMG 3.4.x.
I have tried to find a solution for this problem, but I gave up because it is beyond (very) my knowledge.
I know we have not more an "Official Source Code maintainer" or "Official Source Code Guardian", but I would like to know if anybody could help to solve it (May be Dr Claudio Soto, Rathi.... ??)


Best regards,


Salamandra, Brazil
There is one time in which is crucial awakening. That time is now. ( Buddha )
Post Reply