In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

oMenuPopUp bloque ACTION

Foro de Xailer profesional en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

oMenuPopUp bloque ACTION

Mensaje 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.
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

oMenuPopUp bloque ACTION

Mensaje 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
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

oMenuPopUp bloque ACTION

Mensaje 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
--
Responder