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

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

Post by salamandra »

8-) Hi to all,
I have a lot of apps made with HMG 3.3.1 and I am trying to rebuild using HMG 3.4.4 but I am facing some problems.
Some of this problems I get solved changing a few lines of code, but other it seem to be very very hard to do.
The worst problem it is with GridInPlaceEdit, that I can not get it working properly.
I have a Form with a grid (Virtual .F., CellNavigation .F., AllowEdit .T., ColumnControls YES, ColumnValids NO, ColumnWhen No). When build with HMG 3.3.1 all works fine, i get edit, change, etc with any grid cell. But when rebuilded with HMG 3.4.4 EditInPlace does not work properly.
Look at this...the grid has a item loaded and just a few cells need to be changed...

01.png
01.png (557.38 KiB) Viewed 2211 times
Now I click twice in a cell that i need to change...
02.png
02.png (499.73 KiB) Viewed 2211 times
I have changed the Cell value and pressed <Enter> key...
03.png
03.png (556.97 KiB) Viewed 2211 times
The cell value was updated, but the EditBox (or TextBox) was not closed as should expected and EditInPlace stops to work.
Besides this problem, if you close the form, the following runtime error it is generated:
04.jpg
04.jpg (64.92 KiB) Viewed 2211 times
I have been trying to solve this problem, but without success.
I do not want (and have not time enough) to rewrite this program because it has about 12.000 lines of code.

Any ideia about what´s going on ? Any ideia about how to solve ?


Best regards,


Salamandra, Brazil.
There is one time in which is crucial awakening. That time is now. ( Buddha )
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

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

Post by danielmaximiliano »

Hola salamandra , ver si las libs de grid son iguales y que modificaciones hubo entre las hmg
https://testeandosoftware.com/notepad-c ... -de-texto/
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

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

Post by andyglezl »

salamandra wrote: Sat Jan 30, 2021 8:19 pm 8-) Hi to all,
I have a lot of apps made with HMG 3.3.1 and I am trying to rebuild using HMG 3.4.4 but I am facing some problems.
Some of this problems I get solved changing a few lines of code, but other it seem to be very very hard to do.
The worst problem it is with GridInPlaceEdit, that I can not get it working properly.
I have a Form with a grid (Virtual .F., CellNavigation .F., AllowEdit .T., ColumnControls YES, ColumnValids NO, ColumnWhen No).

????????????

Salamandra, Brazil.

La sintaxis de 3.4.4 dice esto:

COLUMNCONTROLS {aControlDef1,aControlDef2,...aControlDefN}
COLUMNVALID {bValid1,bValid2,...bValidN}
COLUMNWHEN {bWhen1,bWhen2,...bWhenN}
Andrés González López
Desde Guadalajara, Jalisco. México.
franco
Posts: 878
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

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

Post by franco »

Here is a grid I use. I think you need ColumnWhen

Code: Select all

			@ 60,100 GRID Grid_2 ;
			WIDTH 770 ;
			HEIGHT 440 ;
			HEADERS {'Item','Received','On Order'};
			WIDTHS {140,140,140};
			EDIT ;
			VALUE { 1 , 1 } ;
           		COLUMNWHEN { { || .F. } ,  { || .T. } , { || .F. } } ;
			COLUMNCONTROLS { {'TEXTBOX', 'CHARACTER'},{'TEXTBOX', 'NUMERIC', '99999'},{'TEXTBOX', 'NUMERIC', '99999'} } ;
			ROWSOURCE "back_ord" ;
			COLUMNFIELDS { 'NUM1' ,  'RECIEVED' , 'ONORDER' } 	;
			ON CHANGE {THIS.SAVE}
All The Best,
Franco
Canada
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 Franco,
franco wrote: Sat Jan 30, 2021 10:10 pm Here is a grid I use. I think you need ColumnWhen

Code: Select all

			@ 60,100 GRID Grid_2 ;
			WIDTH 770 ;
			HEIGHT 440 ;
			HEADERS {'Item','Received','On Order'};
			WIDTHS {140,140,140};
			EDIT ;
			VALUE { 1 , 1 } ;
           		COLUMNWHEN { { || .F. } ,  { || .T. } , { || .F. } } ;
			COLUMNCONTROLS { {'TEXTBOX', 'CHARACTER'},{'TEXTBOX', 'NUMERIC', '99999'},{'TEXTBOX', 'NUMERIC', '99999'} } ;
			ROWSOURCE "back_ord" ;
			COLUMNFIELDS { 'NUM1' ,  'RECIEVED' , 'ONORDER' } 	;
			ON CHANGE {THIS.SAVE}
Thank you.
This grid does not any database, it is not virtual and each line it is an new item that was added by user selecting in a predefined list.
I have tested it in every way you can imagine: with and without ColumnWhen and the result is always the same : Textbox do not close...

I use columncontrols something like this:

Code: Select all

ColumnControls {{"TEXTBOX","CHARACTER",'!!',}, {"TEXTBOX","CHARACTER",'9.999',}, {"TEXTBOX","NUMERIC",'999.99',}}
ColumnWhen {{||.F.}, {||.T.}, {||.T.}}
ColumnValid {{||.T.}, {|| This.CellValue $'0.101_1.101_2.101_4.101_7.101'}, {||This.CellValue >0)}}
Best regards,

Salamandra, Brazil
There is one time in which is crucial awakening. That time is now. ( Buddha )
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 andyglezl,

andyglezl wrote: Sat Jan 30, 2021 9:59 pm
salamandra wrote: Sat Jan 30, 2021 8:19 pm 8-) Hi to all,
I have a lot of apps made with HMG 3.3.1 and I am trying to rebuild using HMG 3.4.4 but I am facing some problems.
Some of this problems I get solved changing a few lines of code, but other it seem to be very very hard to do.
The worst problem it is with GridInPlaceEdit, that I can not get it working properly.
I have a Form with a grid (Virtual .F., CellNavigation .F., AllowEdit .T., ColumnControls YES, ColumnValids NO, ColumnWhen No).

????????????

Salamandra, Brazil.

La sintaxis de 3.4.4 dice esto:

COLUMNCONTROLS {aControlDef1,aControlDef2,...aControlDefN}
COLUMNVALID {bValid1,bValid2,...bValidN}
COLUMNWHEN {bWhen1,bWhen2,...bWhenN}
Thank you.
I have tested it in a lot of different ways and the result is always the same : Textbox do not close...

I use columncontrols something like this:

Code: Select all

ColumnControls {{"TEXTBOX","CHARACTER",'!!',}, {"TEXTBOX","CHARACTER",'9.999',}, {"TEXTBOX","NUMERIC",'999.99',}}
ColumnWhen {{||.F.}, {||.T.}, {||.T.}}
ColumnValid {{||.T.}, {|| This.CellValue $'0.101_1.101_2.101_4.101_7.101'}, {||This.CellValue >0)}}

Best regards,

Salamandra, Brazil
There is one time in which is crucial awakening. That time is now. ( Buddha )
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 Daniel,
danielmaximiliano wrote: Sat Jan 30, 2021 9:47 pm Hola salamandra , ver si las libs de grid son iguales y que modificaciones hubo entre las hmg
https://testeandosoftware.com/notepad-c ... -de-texto/
Si, realmente hay diferencias entre los sources de H_Grid y H_GridEx de las versiones 3.3.1 y 3.4.4, tanto que el tamaño de los programas es bastante diferente, mas... la sintaxis de uso es la misma, luego no deberia haber errores al ejecutar los programas, a menos claro que haya diferencias de código o de sintaxis que no fueron debidamente documentadas.

Me gustaria saber la opinion del Dr Claudio Soto, pues si no estoy engañado, las ultimas alteraciones de código fueron suyas y de nuestro querido y recordado Pablo Cesar.

De cualquier modo muchas gracias por tu ayuda,


Salamandra, Brazil
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: Sun Jan 31, 2021 12:03 am
.... / ...

Salamandra, Brazil
Hola Salamandra.
Puedes pasar tu GRID para que podamos analizarlo. Solo el Grid.
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: Sun Jan 31, 2021 9:07 am
salamandra wrote: Sun Jan 31, 2021 12:03 am
.... / ...

Salamandra, Brazil
Hola Salamandra.
Puedes pasar tu GRID para que podamos analizarlo. Solo el Grid.
Un saludo,
Creo que es medio inútil publicar el grid aqui en el foro pues es parte de un FMG, que por su vez está vinculado a multiples programas y FMGs, mas...
Basicamente el grid es este:

Code: Select all

    DEFINE GRID gridPedido
        ROW    158
        COL    0
        WIDTH  1080
        HEIGHT 272
        ITEMS xxxItems
        VALUE 0
        WIDTHS gLarguras
        HEADERS gHeadersz
        FONTNAME "Arial"
        FONTSIZE 8
        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 gPedWhens
        COLUMNVALID gPedValids
        COLUMNCONTROLS gControlez
        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
Variables LOCAL

Code: Select all

LOCAL gHeadersz:={"Nº","Código","Nome ou Descrição do Item","Quantidade","$ Unitário","$ SubTotal","% ICMS(OP)","% IPI","Un.","Volumes","P.Líquido(Kg)","P.Bruto(Kg)","CST","Class. NCM","$ IPI","BC ICMS(OP)","% Red.BC ICMS(OP)","% MVA Aj.","% ICMS Aj.","BC ICMS(ST)","$ ICMS(OP)","$ ICMS(ST)","$ TOTAL Item","C.F.O.P.","$ Seguro","$ Frete","$ Desp. Acc.","Promo","%Aliq.Cred.","$Crédito"}
LOCAL k, nArea:=Select(), z, g, ctPesoL:=0, ctPesoB:=0 , ctVolums:=0, oldFoco:="", e11:="999.999", e13:="999.99"
LOCAL gLarguras:={30,65,235,90,90,90,78,50,40,70,80,80,60,80,60,90,110,70,75,85,85,85,90,50,80,80,80,50,65,70}, e12:="9999.99.99"
LOCAL e1:="!!", e2:="!!!!!!", e3:="!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", e4:="9999999.99", e5:="999999.999", e6:="999999.999"
LOCAL e7:="99.99", e8:="99.99", e9:="999", e10:="999999", e14:="9.999", e15:="!"
LOCAL b := { || IF ( This.CellValue $"xX" , { 255,000,000 } , { 000,000,000 } ) }
LOCAL c := { || IF ( This.CellValue $"xX" , { 255,255,128 } , { 255,255,255 } ) }
Y estos son los controles y validadores de los valores de las columnas del grid :

Code: Select all

gPedWhens:={{|| .F.},;
	{|| .F.},;
	{||_cellEdtYN(This.CellValue,3)},;
	{||_cellEdtYN(This.CellValue,4)},;
	{||_cellEdtYN(This.CellValue,5)},;
	{|| .F.},;
	{||_cellEdtYN(This.CellValue,7)},;
	{||_cellEdtYN(This.CellValue,8)},;
	{||_cellEdtYN(This.CellValue,9)},;
	{||_cellEdtYN(This.CellValue,10)},;
	{||_cellEdtYN(This.CellValue,11)},;
	{|| .F.},;
	{||_cellEdtYN(This.CellValue,13)},;
	{||_cellEdtYN(This.CellValue,14)},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{|| .F.},;
	{||_cellEdtYN(This.CellValue,24)},;
	{||_cellEdtYN(This.CellValue,25)},;
	{||_cellEdtYN(This.CellValue,26)},;
	{||_cellEdtYN(This.CellValue,27)},;
	{|| .F. },;
	{|| IIF(tipo_Empresa == 3, .F., .T.) },;
	{|| .F. }}

gPedValids:={{||vldGP(1,operacao)},	;
	{||vldGP(2,operacao)},;
	{||vldGP(3,operacao)},;
	{||vldGP(4,operacao)},;
	{||vldGP(5,operacao)},;
	{||vldGP(6,operacao)},;
	{||vldGP(7,operacao)},;
	{||vldGP(8,operacao)},;
	{|| .T. },;
	{|| This.CellValue >=0 },;
	{|| This.CellValue >0 },;
	{|| This.CellValue >0 },;
	{|| isInCSTs(This.CellValue) },;
	{|| .T. },;
	{|| .T. },;
	{|| .T. },;
	{|| .T. },;
	{|| This.CellValue >=0 },;
	{|| This.CellValue >=0 },;
	{|| .T. },;
	{|| .T. },;
	{|| .T. },;
	{|| .T. },;
	{|| IF( Len(Alltrim( This.CellValue ) ) < 5,.F.,.T.) },;
	{|| This.CellValue >=0 },;
	{|| This.CellValue >=0 },;
	{|| This.CellValue >=0 },;
	{|| .T. },;
	{|| This.CellValue >=0 },;
	{|| .T. }}

gControlez:={{"TEXTBOX","CHARACTER",e1,},;
	{"TEXTBOX","CHARACTER",e2,},;
	{"TEXTBOX","CHARACTER",e3,},;
	{"TEXTBOX","NUMERIC",e4,},;
	{"TEXTBOX","NUMERIC",e5,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e7,},;
	{"TEXTBOX","NUMERIC",e8,},;
	{"TEXTBOX","CHARACTER",e1,},;
	{"TEXTBOX","NUMERIC",e10,},;
	{"TEXTBOX","NUMERIC",e11,},;
	{"TEXTBOX","NUMERIC",e11,},;
	{"TEXTBOX","CHARACTER",e9,},;
	{"TEXTBOX","CHARACTER",e12,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e7,},;
	{"TEXTBOX","NUMERIC",e13,},;
	{"TEXTBOX","NUMERIC",e7,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","CHARACTER",e14,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","NUMERIC",e6,},;
	{"TEXTBOX","CHARACTER",e15,},;
	{"TEXTBOX","NUMERIC",e11,},;
	{"TEXTBOX","NUMERIC",e5,}}
			
Y en relacion a las funciones calculos_do_Pedido(), _cellEdtYN(), vldGP() y isInCSTs() :

Code: Select all

Sirven apenas para calcular valor final e impuestos embutidos x cada item (calculos_do_Pedido()), validar cual cell puede (o no) ser editada (_cellEdtYN()), si el valor digitado es válido (vldGP() ) y si el valor digitado corresponde a los valores establecidos por una lista predefinida (isInCSTs()). 


Esse problema (exactamente igual) con los controles Grid ya lo habia observado hace algunos meses durante el desarrollo de un software para pizza delivery, pero como fue necesario modificar el sistema y substituir el grid por un Browse, eso acabó no teniendo ninguna importancia.

Lo mas curioso es que ese mismo código funciona perfectamente bien con HMG 3.3.1, que era la version actualizada quando hice esse desarrollo, alla por 2014 o 2015.

Y sinceramente me llama bastante la atencion que absolutamente nadie antes haya tenido esse problema...





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