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