Page 1 of 1
Compartir con vosotros un trozo de código
Posted: Fri Jan 17, 2014 5:00 pm
by informaticaeloy
Hola. Tengo una parte del código de mi programa principal de gestión. Querría compartirlo con vosotros por si a alguien le sirve de referencia para algo y también por si os apetece echarle un ojo y hacer cualquier comentario para mejorar mi forma de trabajar. No se si hay algún sitio para subirlo. Están los PRG, las DBF, los BMP, ... y el EXE.
Antonio, te lo mando y lo cuelgas en algún sitio? o lo puedo poner en el foro?
Cualquier crítica o comentario será bienvenido.
Un saludo.
Re: Compartir con vosotros un trozo de código
Posted: Fri Jan 17, 2014 7:47 pm
by karinha
Puedes usar:
http://www.4shared.com
un excelente anfitrión para sus archivos.
Salu2
Re: Compartir con vosotros un trozo de código
Posted: Sun Jan 19, 2014 5:30 am
by FranciscoA
+1
Re: Compartir con vosotros un trozo de código
Posted: Sun Jan 19, 2014 3:47 pm
by informaticaeloy
Hola. Como tengo una cuenta lo subo al dropbox
https://www.dropbox.com/s/z7me5lpy6v7k8tv/agenda.rar
Si a alguien le sirve como referencia genial, y si alguien lo revisa y me comenta mejoras en mi forma de programar pues entonces ......
genial:=genial*100
Un saludo
Re: Compartir con vosotros un trozo de código
Posted: Mon Jan 20, 2014 3:21 pm
by FranciscoA
Gracias.
Re: Compartir con vosotros un trozo de código
Posted: Mon Jan 20, 2014 5:33 pm
by mastintin
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
Code: Select all
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 :
Code: Select all
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)}
Re: Compartir con vosotros un trozo de código
Posted: Mon Jan 20, 2014 8:12 pm
by Joaquim Ferrer
Como apunte, intenta no incluir llamadas a función en la iteracion de bucles, es decir
Code: Select all
for n:=1 to fcount() o for n:=1 to len()
es preferible
Code: Select all
nCount:= fcount(); for n:=1 to nCount
o
Tambien puedes simplificar este codigo
Code: Select all
OBJ_GNRL["codigo"]:bGotFocus={||OBJ_GNRL["codigo"]:SetColor(CLR_AZULETE,CLR_AMARILLO)}
Por este otro
Code: Select all
OBJ_GNRL["codigo"]:bGotFocus={|this|this:SetColor(CLR_AZULETE,CLR_AMARILLO)}