Muchas Gracias por compartir tu c贸digo .
Como nos dices que podemos hacer comentarios ( siempre constructivos

) sobre el c贸digo , quiero decirte que veo que en la edicion de la agenda usas los arrays para sostener los objetos get y las variables . Yo tambien los usaba hasta que descubr铆 los Hash que permiten que mi codigo sea mucho mas "comprensible" cuando se alarga el numero de lineas a realizar ....
Me explico un poco : tu codigo
聽 聽 GNRL:={}
聽
聽 聽 聽 聽 聽OBJ_GNRL=ARRAY(FCOUNT())
聽 聽 聽 聽 聽FOR N=1 TO FCOUNT()
聽 聽 聽 聽 聽 聽 聽AADD(GNRL,FIELDGET(N))
聽 聽 聽 聽 聽NEXT
聽 聽 聽 聽 聽DBSETORDER(INDICE)
聽 聽 聽 聽 聽GO POS
聽 聽 聽 聽 聽 聽 DEFINE DIALOG EDIT_GNRL FROM 0, 0 TO 27, 72;
聽 聽 聽 聽 聽 聽 TITLE 聽"Gesti贸n de la Agenda";
聽 聽 聽 聽 聽 聽 font ofontdlg
聽 聽 聽 聽 聽 聽 @ 15, 聽15 聽SAY "C贸digo" PIXEL SIZE 50,10 right
聽 聽 聽 聽 聽 聽 IF NUEVO
聽 聽 聽 聽 聽 聽 聽 聽GNRL[1]=ULT
聽 聽 聽 聽 聽 聽 聽 聽@ 15, 聽70 聽GET OBJ_GNRL[1] VAR GNRL[1] PIXEL 聽SIZE 26,10 聽UPDATE;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 VALID TRATAR_AGEN(1) COLOR CLR_AZULETE,CLR_AMARILLO
聽 聽 聽 聽 聽 聽 聽 聽OBJ_GNRL[1]:bLostFocus={||OBJ_GNRL[1]:SetColor(CLR_AMARILLO,CLR_AZULETE)}
聽 聽 聽 聽 聽 聽 聽 聽OBJ_GNRL[1]:bGotFocus={||OBJ_GNRL[1]:SetColor(CLR_AZULETE,CLR_AMARILLO)}
mi codigo seria asi :
聽 聽 GNRL:= {=>}
聽 聽 OBJ_GNRL:= {=>}
聽 聽 聽 聽 FOR N=1 TO FCOUNT()
聽 聽 聽 聽 聽 聽 聽GNRL[ fieldname(n) ] := FIELDGET(N) 聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽NEXT
聽 聽 聽 聽 聽DBSETORDER(INDICE)
聽 聽 聽 聽 聽GO POS
聽 聽 聽 聽 聽 聽 DEFINE DIALOG EDIT_GNRL FROM 0, 0 TO 27, 72;
聽 聽 聽 聽 聽 聽 TITLE 聽"Gesti贸n de la Agenda";
聽 聽 聽 聽 聽 聽 font ofontdlg
聽 聽 聽 聽 聽 聽 @ 15, 聽15 聽SAY "C贸digo" PIXEL SIZE 50,10 right
聽 聽 聽 聽 聽 聽 IF NUEVO
聽 聽 聽 聽 聽 聽 聽 聽GNRL["codigo"]=ULT
聽 聽 聽 聽 聽 聽 聽 聽@ 15, 聽70 聽GET OBJ_GNRL["codigo"] VAR GNRL["codigo"] PIXEL 聽SIZE 26,10 聽UPDATE;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 VALID TRATAR_AGEN(1) COLOR CLR_AZULETE,CLR_AMARILLO
聽 聽 聽 聽 聽 聽 聽 聽OBJ_GNRL["codigo"]:bLostFocus={||OBJ_GNRL["codigo"]:SetColor(CLR_AMARILLO,CLR_AZULETE)}
聽 聽 聽 聽 聽 聽 聽 聽OBJ_GNRL["codigo"]:bGotFocus={||OBJ_GNRL["codigo"]:SetColor(CLR_AZULETE,CLR_AMARILLO)}