Página 1 de 1

oMenuPopUp bloque ACTION

Publicado: Mié Feb 15, 2006 4:27 pm
por Xevi
Tengo un Menu PopUp y necesito llenar las opciones según un array...
Por ej. un Array de 3 opciones
aCarrecs := { "A", "B", "C" }
MENU oPopup POPUP
MENUITEM oMenuCanviCarrec TEXT ::aIdioma[44,AppData:nIdioma]
MENU
For n:=1 to Len(aCarrecs)
If Empty( aCarrecs[n] )
MENUITEM ::aIdioma[47,AppData:nIdioma] ACTION ::xCanviCarrecHora(" ")
Else
cF := aCarrecs[n]
MENUITEM aCarrecs[n] ACTION ::xCanviCarrecHora(cF)
EndIf
Next
ENDMENU
ENDMENU
RETURN Nil
....
METHOD xCanviCarrecHora( cF ) CLASS TFrmORAlbarans
MSGINFO( cF ) //Siempre muestra el valor del último elemento del Array en este caso "C"
RETURN Nil
Por lo visto el bloque ACTION del menu se carga cuando se ha finalizado el For...Next.
¿Como puedo saltar este pequeño inconveniente???
¿Alguna ayuda???
Gracias.
Un Saludo,
Xevi.
--

oMenuPopUp bloque ACTION

Publicado: Mié Feb 15, 2006 4:46 pm
por jfgimenez
Xevi,
Por lo visto el bloque ACTION del menu se carga cuando se ha finalizado el For...Next.
¿Como puedo saltar este pequeño inconveniente???
¿Alguna ayuda???
Lo que te está pasando es el tí­pico caso de las "detached locals" que viene heredado de Clipper. Prueba así­:
aCarrecs := { "A", "B", "C" }
MENU oPopup POPUP
MENUITEM oMenuCanviCarrec TEXT ::aIdioma[44,AppData:nIdioma]
MENU
For n:=1 to Len(aCarrecs)
If Empty( aCarrecs[n] )
MENUITEM ::aIdioma[47,AppData:nIdioma] ACTION ::xCanviCarrecHora(" ")
Else
cF := aCarrecs[n]
DetachLocal( Self, n, cF )
EndIf
Next
ENDMENU
ENDMENU
RETURN Nil
STATIC PROCEDURE DetachLocal( Self, n, cF )
MENUITEM aCarrecs[n] ACTION ::xCanviCarrecHora(cF)
RETURN
--
Un saludo,
José F. Giménez
--

oMenuPopUp bloque ACTION

Publicado: Mié Feb 15, 2006 4:54 pm
por Xevi
Jose,
PERFECTO...
También lo he hecho funcionar, con unas notas que me pasaste hace ya tiempo, utilizando
MENU oMenu1
....
TMenuItem():Create( oMenu1,,, cF,, xCarrec(oSender,cF),, )
....
FUNCTION xCarrec(oSender,cF)
RETURN {|| oSender:oParent:oParent:oParent:xCanviCarrecHora(cF)}
Pero me parece mucho mas "limpio" este Código que me has escrito en este post.
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:43f34cc3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Por lo visto el bloque ACTION del menu se carga cuando se ha finalizado el For...Next.
¿Como puedo saltar este pequeño inconveniente???
¿Alguna ayuda???
Lo que te está pasando es el tí­pico caso de las "detached locals" que viene heredado de Clipper. Prueba así­:
aCarrecs := { "A", "B", "C" }
MENU oPopup POPUP
MENUITEM oMenuCanviCarrec TEXT ::aIdioma[44,AppData:nIdioma]
MENU
For n:=1 to Len(aCarrecs)
If Empty( aCarrecs[n] )
MENUITEM ::aIdioma[47,AppData:nIdioma] ACTION ::xCanviCarrecHora(" ")
Else
cF := aCarrecs[n]
DetachLocal( Self, n, cF )
EndIf
Next
ENDMENU
ENDMENU
RETURN Nil
STATIC PROCEDURE DetachLocal( Self, n, cF )
MENUITEM aCarrecs[n] ACTION ::xCanviCarrecHora(cF)
RETURN
--
Un saludo,
José F. Giménez
--