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.
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.
Macro de un objeto?
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Macro de un objeto?
Como logro asignar una propiedad a un objeto que tengo su nombre en una
variable.
Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
entre quiero asignar la propiedad lEnabled.
Seria asi
cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
from accesos"
AppData:oBase:Execute ( cSelect,,@aData)
For i=1 to Len( aData )
cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
cVarName del menu. Tambien probe con "::mnFacturas"
lHabilitado := aData[2] // .T. o .F.
&cMenu.:lEnabled := lHabilitado
Next
Pero no funciona.
Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
..F.
Otra opcion que probe es:
For i=1 to Len( aData )
Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
es ::mnFacturas
Aadd( aHabilitado, aData[2] )
Next
nI := 1
For EACH oControl IN aMenu
oControl:lEnabled := aHabilitado[nI]
nI++
NEXT
Gracias
Juan
variable.
Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
entre quiero asignar la propiedad lEnabled.
Seria asi
cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
from accesos"
AppData:oBase:Execute ( cSelect,,@aData)
For i=1 to Len( aData )
cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
cVarName del menu. Tambien probe con "::mnFacturas"
lHabilitado := aData[2] // .T. o .F.
&cMenu.:lEnabled := lHabilitado
Next
Pero no funciona.
Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
..F.
Otra opcion que probe es:
For i=1 to Len( aData )
Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
es ::mnFacturas
Aadd( aHabilitado, aData[2] )
Next
nI := 1
For EACH oControl IN aMenu
oControl:lEnabled := aHabilitado[nI]
nI++
NEXT
Gracias
Juan
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
Macro de un objeto?
Juan:
Si lo hicieras manualmente tendrías que hacer esto:
** Desactiva una opción del menú de relojes
::oMenu:aItems[3]:lEnabled := .F.
** Desactivar la opción del Submenu, Censos
::oMenu:aItems[1]:oSubmenu:aItems[1]:oSubmenu:aItems[9]:lEna bled := .F.
Si lo haces usando el valor del cVarName lo único que tienes que hacer
es llamar dentro del formulario que contenga el menú a su cVarName.
::oImportEnceste:lEnabled := .F.
Basándote en este conecto modifica tu código.
José Ramón Castro
Juan Castañeda escribió:
> Como logro asignar una propiedad a un objeto que tengo su nombre en una
> variable.
> Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
> ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
> entre quiero asignar la propiedad lEnabled.
> Seria asi
>
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> AppData:oBase:Execute ( cSelect,,@aData)
> For i=1 to Len( aData )
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> cVarName del menu. Tambien probe con "::mnFacturas"
> lHabilitado := aData[2] // .T. o .F.
> &cMenu.:lEnabled := lHabilitado
> Next
> Pero no funciona.
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> .F.
>
> Otra opcion que probe es:
> For i=1 to Len( aData )
> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
> es ::mnFacturas
> Aadd( aHabilitado, aData[2] )
> Next
> nI := 1
> For EACH oControl IN aMenu
> oControl:lEnabled := aHabilitado[nI]
> nI++
> NEXT
>
> Gracias
>
> Juan
>
>
Si lo hicieras manualmente tendrías que hacer esto:
** Desactiva una opción del menú de relojes
::oMenu:aItems[3]:lEnabled := .F.
** Desactivar la opción del Submenu, Censos
::oMenu:aItems[1]:oSubmenu:aItems[1]:oSubmenu:aItems[9]:lEna bled := .F.
Si lo haces usando el valor del cVarName lo único que tienes que hacer
es llamar dentro del formulario que contenga el menú a su cVarName.
::oImportEnceste:lEnabled := .F.
Basándote en este conecto modifica tu código.
José Ramón Castro
Juan Castañeda escribió:
> Como logro asignar una propiedad a un objeto que tengo su nombre en una
> variable.
> Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
> ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
> entre quiero asignar la propiedad lEnabled.
> Seria asi
>
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> AppData:oBase:Execute ( cSelect,,@aData)
> For i=1 to Len( aData )
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> cVarName del menu. Tambien probe con "::mnFacturas"
> lHabilitado := aData[2] // .T. o .F.
> &cMenu.:lEnabled := lHabilitado
> Next
> Pero no funciona.
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> .F.
>
> Otra opcion que probe es:
> For i=1 to Len( aData )
> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
> es ::mnFacturas
> Aadd( aHabilitado, aData[2] )
> Next
> nI := 1
> For EACH oControl IN aMenu
> oControl:lEnabled := aHabilitado[nI]
> nI++
> NEXT
>
> Gracias
>
> Juan
>
>
-
- Mensajes: 24
- Registrado: Dom Jun 05, 2005 6:16 pm
Macro de un objeto?
Juan Castañeda escribió:
> Como logro asignar una propiedad a un objeto que tengo su nombre en una
> variable.
> Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
> ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
> entre quiero asignar la propiedad lEnabled.
> Seria asi
>
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> AppData:oBase:Execute ( cSelect,,@aData)
> For i=1 to Len( aData )
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> cVarName del menu. Tambien probe con "::mnFacturas"
> lHabilitado := aData[2] // .T. o .F.
> &cMenu.:lEnabled := lHabilitado
> Next
> Pero no funciona.
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> .F.
>
> Otra opcion que probe es:
> For i=1 to Len( aData )
> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
> es ::mnFacturas
> Aadd( aHabilitado, aData[2] )
> Next
> nI := 1
> For EACH oControl IN aMenu
> oControl:lEnabled := aHabilitado[nI]
> nI++
> NEXT
>
> Gracias
>
> Juan
>
>
Juan tomado de la ayuda de xHarbour
Sending messages to objects
The possibility of sending messages to objects is another field of
Macro operator usage that allows for highly dynamic application
development. Messages are encoded as character strings:
#include "hbclass.ch"
PROCEDURE Main
LOCAL obj := TestClass():new( "Text to display" )
LOCAL cMsg := "display"
obj:&cMsg() // displays: Text to display
cMsg := "cValue"
obj:&cMsg := "New text"
obj:display() // displays: New text
RETURN
CLASS TestClass
EXPORTED:
DATA cValue
METHOD new( cString ) CONSTRUCTOR
METHOD display
ENDCLASS
METHOD new( cString ) CLASS TestClass
::cValue := cString
RETURN self
METHOD display() CLASS TestClass
? ::cValue
RETURN self
When the send operator (:) is followed by the Macro operator, the
contents of the variable following the Macro operator is interpreted as
message to send to the object. Note that calling an object's method
requires the parentheses be added to the expression.
Saludos
Gabriel Ornelas
> Como logro asignar una propiedad a un objeto que tengo su nombre en una
> variable.
> Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
> ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
> entre quiero asignar la propiedad lEnabled.
> Seria asi
>
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> AppData:oBase:Execute ( cSelect,,@aData)
> For i=1 to Len( aData )
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> cVarName del menu. Tambien probe con "::mnFacturas"
> lHabilitado := aData[2] // .T. o .F.
> &cMenu.:lEnabled := lHabilitado
> Next
> Pero no funciona.
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> .F.
>
> Otra opcion que probe es:
> For i=1 to Len( aData )
> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
> es ::mnFacturas
> Aadd( aHabilitado, aData[2] )
> Next
> nI := 1
> For EACH oControl IN aMenu
> oControl:lEnabled := aHabilitado[nI]
> nI++
> NEXT
>
> Gracias
>
> Juan
>
>
Juan tomado de la ayuda de xHarbour
Sending messages to objects
The possibility of sending messages to objects is another field of
Macro operator usage that allows for highly dynamic application
development. Messages are encoded as character strings:
#include "hbclass.ch"
PROCEDURE Main
LOCAL obj := TestClass():new( "Text to display" )
LOCAL cMsg := "display"
obj:&cMsg() // displays: Text to display
cMsg := "cValue"
obj:&cMsg := "New text"
obj:display() // displays: New text
RETURN
CLASS TestClass
EXPORTED:
DATA cValue
METHOD new( cString ) CONSTRUCTOR
METHOD display
ENDCLASS
METHOD new( cString ) CLASS TestClass
::cValue := cString
RETURN self
METHOD display() CLASS TestClass
? ::cValue
RETURN self
When the send operator (:) is followed by the Macro operator, the
contents of the variable following the Macro operator is interpreted as
message to send to the object. Note that calling an object's method
requires the parentheses be added to the expression.
Saludos
Gabriel Ornelas
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Macro de un objeto?
José.
Justamente es lo que no me sale. Yo tengo guardada en mi tabla de permisos
el dato, por ejemplo, "oImportEnceste" y .F. que leo con las variables
cMenu y lHabilitado
Y quiero hacer
&cMenu:lEnabled := lHabilitado
Pero no funciona.
Gracias
Juan
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:[email=49cf6c10@svctag-j7w3v3j....]49cf6c10@svctag-j7w3v3j....[/email]
> Juan:
>
> Si lo hicieras manualmente tendrías que hacer esto:
> ** Desactiva una opción del menú de relojes
> ::oMenu:aItems[3]:lEnabled := .F.
> ** Desactivar la opción del Submenu, Censos
> ::oMenu:aItems[1]:oSubmenu:aItems[1]:oSubmenu:aItems[9]:lEna bled := .F.
>
> Si lo haces usando el valor del cVarName lo único que tienes que hacer es
> llamar dentro del formulario que contenga el menú a su cVarName.
>
> ::oImportEnceste:lEnabled := .F.
>
> Basándote en este conecto modifica tu código.
>
> José Ramón Castro
>
> Juan Castañeda escribió:
>> Como logro asignar una propiedad a un objeto que tengo su nombre en una
>> variable.
>> Yo quiero habilitar opciones del menu segun el usuario del sistema, y
>> para ello guardo en una tabla la propiedad cVarName de todo el menu y
>> segun quien entre quiero asignar la propiedad lEnabled.
>> Seria asi
>>
>> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
>> from accesos"
>> AppData:oBase:Execute ( cSelect,,@aData)
>> For i=1 to Len( aData )
>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
>> cVarName del menu. Tambien probe con "::mnFacturas"
>> lHabilitado := aData[2] // .T. o .F.
>> &cMenu.:lEnabled := lHabilitado
>> Next
>> Pero no funciona.
>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T.
>> o .F.
>>
>> Otra opcion que probe es:
>> For i=1 to Len( aData )
>> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas"
>> no es ::mnFacturas
>> Aadd( aHabilitado, aData[2] )
>> Next
>> nI := 1
>> For EACH oControl IN aMenu
>> oControl:lEnabled := aHabilitado[nI]
>> nI++
>> NEXT
>>
>> Gracias
>>
>> Juan
Justamente es lo que no me sale. Yo tengo guardada en mi tabla de permisos
el dato, por ejemplo, "oImportEnceste" y .F. que leo con las variables
cMenu y lHabilitado
Y quiero hacer
&cMenu:lEnabled := lHabilitado
Pero no funciona.
Gracias
Juan
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:[email=49cf6c10@svctag-j7w3v3j....]49cf6c10@svctag-j7w3v3j....[/email]
> Juan:
>
> Si lo hicieras manualmente tendrías que hacer esto:
> ** Desactiva una opción del menú de relojes
> ::oMenu:aItems[3]:lEnabled := .F.
> ** Desactivar la opción del Submenu, Censos
> ::oMenu:aItems[1]:oSubmenu:aItems[1]:oSubmenu:aItems[9]:lEna bled := .F.
>
> Si lo haces usando el valor del cVarName lo único que tienes que hacer es
> llamar dentro del formulario que contenga el menú a su cVarName.
>
> ::oImportEnceste:lEnabled := .F.
>
> Basándote en este conecto modifica tu código.
>
> José Ramón Castro
>
> Juan Castañeda escribió:
>> Como logro asignar una propiedad a un objeto que tengo su nombre en una
>> variable.
>> Yo quiero habilitar opciones del menu segun el usuario del sistema, y
>> para ello guardo en una tabla la propiedad cVarName de todo el menu y
>> segun quien entre quiero asignar la propiedad lEnabled.
>> Seria asi
>>
>> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
>> from accesos"
>> AppData:oBase:Execute ( cSelect,,@aData)
>> For i=1 to Len( aData )
>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
>> cVarName del menu. Tambien probe con "::mnFacturas"
>> lHabilitado := aData[2] // .T. o .F.
>> &cMenu.:lEnabled := lHabilitado
>> Next
>> Pero no funciona.
>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T.
>> o .F.
>>
>> Otra opcion que probe es:
>> For i=1 to Len( aData )
>> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas"
>> no es ::mnFacturas
>> Aadd( aHabilitado, aData[2] )
>> Next
>> nI := 1
>> For EACH oControl IN aMenu
>> oControl:lEnabled := aHabilitado[nI]
>> nI++
>> NEXT
>>
>> Gracias
>>
>> Juan
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Macro de un objeto?
Gabriel.
El objeto lo crea el menu y yo solo quiero "llamarlo" y asignarlo una
propiedad. En el texto que me envias el objeto es creado por codigo y las
macros solo actuan sobre las propiedades. En mi caso es al revés.
&Objeto:lEnabled := .F. // siendo objeto "mnClientes", la propiedad cVarname
del menu.
Gracias
Juan
"Gabriel Ornelas" <gornelas@prodigy.net.mx> escribió en el mensaje
news:49cf8f44$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>
> Juan tomado de la ayuda de xHarbour
>
> Sending messages to objects
>
> The possibility of sending messages to objects is another field of Macro
> operator usage that allows for highly dynamic application development.
> Messages are encoded as character strings:
>
> #include "hbclass.ch"
>
> PROCEDURE Main
> LOCAL obj := TestClass():new( "Text to display" )
> LOCAL cMsg := "display"
>
> obj:&cMsg() // displays: Text to display
> cMsg := "cValue"
> obj:&cMsg := "New text"
> obj:display() // displays: New text
> RETURN
>
> CLASS TestClass
> EXPORTED:
> DATA cValue
> METHOD new( cString ) CONSTRUCTOR
> METHOD display
> ENDCLASS
>
> METHOD new( cString ) CLASS TestClass
> ::cValue := cString
> RETURN self
>
> METHOD display() CLASS TestClass
> ? ::cValue
> RETURN self
>
> When the send operator (:) is followed by the Macro operator, the
> contents of the variable following the Macro operator is interpreted as
> message to send to the object. Note that calling an object's method
> requires the parentheses be added to the expression.
> Saludos
> Gabriel Ornelas
El objeto lo crea el menu y yo solo quiero "llamarlo" y asignarlo una
propiedad. En el texto que me envias el objeto es creado por codigo y las
macros solo actuan sobre las propiedades. En mi caso es al revés.
&Objeto:lEnabled := .F. // siendo objeto "mnClientes", la propiedad cVarname
del menu.
Gracias
Juan
"Gabriel Ornelas" <gornelas@prodigy.net.mx> escribió en el mensaje
news:49cf8f44$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>
> Juan tomado de la ayuda de xHarbour
>
> Sending messages to objects
>
> The possibility of sending messages to objects is another field of Macro
> operator usage that allows for highly dynamic application development.
> Messages are encoded as character strings:
>
> #include "hbclass.ch"
>
> PROCEDURE Main
> LOCAL obj := TestClass():new( "Text to display" )
> LOCAL cMsg := "display"
>
> obj:&cMsg() // displays: Text to display
> cMsg := "cValue"
> obj:&cMsg := "New text"
> obj:display() // displays: New text
> RETURN
>
> CLASS TestClass
> EXPORTED:
> DATA cValue
> METHOD new( cString ) CONSTRUCTOR
> METHOD display
> ENDCLASS
>
> METHOD new( cString ) CLASS TestClass
> ::cValue := cString
> RETURN self
>
> METHOD display() CLASS TestClass
> ? ::cValue
> RETURN self
>
> When the send operator (:) is followed by the Macro operator, the
> contents of the variable following the Macro operator is interpreted as
> message to send to the object. Note that calling an object's method
> requires the parentheses be added to the expression.
> Saludos
> Gabriel Ornelas
Macro de un objeto?
Juan,
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
....
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> ..F.
>
Prueba esto .-
__objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
Un saludo
Xavi
Juan Castañeda escribió:
> Como logro asignar una propiedad a un objeto que tengo su nombre en una
> variable.
> Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
> ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
> entre quiero asignar la propiedad lEnabled.
> Seria asi
>
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> AppData:oBase:Execute ( cSelect,,@aData)
> For i=1 to Len( aData )
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> cVarName del menu. Tambien probe con "::mnFacturas"
> lHabilitado := aData[2] // .T. o .F.
> &cMenu.:lEnabled := lHabilitado
> Next
> Pero no funciona.
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> ..F.
>
> Otra opcion que probe es:
> For i=1 to Len( aData )
> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
> es ::mnFacturas
> Aadd( aHabilitado, aData[2] )
> Next
> nI := 1
> For EACH oControl IN aMenu
> oControl:lEnabled := aHabilitado[nI]
> nI++
> NEXT
>
> Gracias
>
> Juan
>
>
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
....
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> ..F.
>
Prueba esto .-
__objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
Un saludo
Xavi
Juan Castañeda escribió:
> Como logro asignar una propiedad a un objeto que tengo su nombre en una
> variable.
> Yo quiero habilitar opciones del menu segun el usuario del sistema, y para
> ello guardo en una tabla la propiedad cVarName de todo el menu y segun quien
> entre quiero asignar la propiedad lEnabled.
> Seria asi
>
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> AppData:oBase:Execute ( cSelect,,@aData)
> For i=1 to Len( aData )
> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> cVarName del menu. Tambien probe con "::mnFacturas"
> lHabilitado := aData[2] // .T. o .F.
> &cMenu.:lEnabled := lHabilitado
> Next
> Pero no funciona.
> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled := .T. o
> ..F.
>
> Otra opcion que probe es:
> For i=1 to Len( aData )
> Aadd( aMenu, aData[1] ) // pero estoy en la misma, "mnFacturas" no
> es ::mnFacturas
> Aadd( aHabilitado, aData[2] )
> Next
> nI := 1
> For EACH oControl IN aMenu
> oControl:lEnabled := aHabilitado[nI]
> nI++
> NEXT
>
> Gracias
>
> Juan
>
>
Macro de un objeto?
Sorry, se me fue la mano, mejor prueba así.-
__objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
Xavi
xAvi escribió:
> Juan,
>
>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> ....
>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>> .T. o ..F.
>>
>
> Prueba esto .-
>
> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
>
> Un saludo
> Xavi
__objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
Xavi
xAvi escribió:
> Juan,
>
>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
> ....
>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>> .T. o ..F.
>>
>
> Prueba esto .-
>
> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
>
> Un saludo
> Xavi
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Macro de un objeto?
Perfecto!!!!!
Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad de
modificar una propiedad con un dato guardado en una tabla. En Clipper
siempre use macros para todo, y eso me da mucha potencia y flexibilidad en
la programacion.
Gracias a todos
Juan
"xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Sorry, se me fue la mano, mejor prueba así.-
>
> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>
> Xavi
>
> xAvi escribió:
>> Juan,
>>
>>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
>> ....
>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>> .T. o ..F.
>>>
>>
>> Prueba esto .-
>>
>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
>>
>> Un saludo
>> Xavi
Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad de
modificar una propiedad con un dato guardado en una tabla. En Clipper
siempre use macros para todo, y eso me da mucha potencia y flexibilidad en
la programacion.
Gracias a todos
Juan
"xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Sorry, se me fue la mano, mejor prueba así.-
>
> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>
> Xavi
>
> xAvi escribió:
>> Juan,
>>
>>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
>> ....
>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>> .T. o ..F.
>>>
>>
>> Prueba esto .-
>>
>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
>>
>> Un saludo
>> Xavi
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
Macro de un objeto?
Juan:
Entonces tú código como queda después, nos puedes poner como se queda y
donde incluyes este aporte de xAvi.
José Ramón Castro.
Juan Castañeda escribió:
> Perfecto!!!!!
> Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
> Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad de
> modificar una propiedad con un dato guardado en una tabla. En Clipper
> siempre use macros para todo, y eso me da mucha potencia y flexibilidad en
> la programacion.
>
> Gracias a todos
>
> Juan
>
>
> "xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
> news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Sorry, se me fue la mano, mejor prueba así.-
>>
>> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>>
>> Xavi
>>
>> xAvi escribió:
>>> Juan,
>>>
>>>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
>>> ....
>>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>>> .T. o ..F.
>>>>
>>> Prueba esto .-
>>>
>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
>>>
>>> Un saludo
>>> Xavi
>
>
Entonces tú código como queda después, nos puedes poner como se queda y
donde incluyes este aporte de xAvi.
José Ramón Castro.
Juan Castañeda escribió:
> Perfecto!!!!!
> Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
> Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad de
> modificar una propiedad con un dato guardado en una tabla. En Clipper
> siempre use macros para todo, y eso me da mucha potencia y flexibilidad en
> la programacion.
>
> Gracias a todos
>
> Juan
>
>
> "xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
> news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Sorry, se me fue la mano, mejor prueba así.-
>>
>> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>>
>> Xavi
>>
>> xAvi escribió:
>>> Juan,
>>>
>>>> cMenu := aData[1] // por ej "mnFacturas", valor de la propiedad
>>> ....
>>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>>> .T. o ..F.
>>>>
>>> Prueba esto .-
>>>
>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó .F.
>>>
>>> Un saludo
>>> Xavi
>
>
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Macro de un objeto?
José.
Con todo gusto. Mi forma de hacerlo queda asi
En FormInitialize empiezo pidiendo el nombre de usuario y su contraseña.
Busco en la tabla de usuarios y establezco a que nivel pertenece y lo guardo
en AppData:nUsuarioNivel
Llamo a OpcionesDelMenu()
METHOD OpcionesDelMenu( oSender ) CLASS TFormMenu
// Habilita las opciones del menu segun el nUsuarioNivel, en mi caso es de 1
a 9. Por ej: 1 Administrador, 2 Vendedores, 3 Repartidores.
// la estructura de la tabla es MENU,C,20 NIVEL1,L,1 NIVEL2,L,1 hasta
NIVEL9,L,1
// los datos son por ej: "mnFacturas",.T.,.T.,.F.,.F.,.T.,.T.,.F.,.T.,.T. un
valor logico por cada nivel de usuario.
Local cSelect, aData
Local cMenu := ""
Local lHabilitado := .T.
cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
from accesos"
ConectarBase()
AppData:oBase:Execute ( cSelect,,@aData)
DesconectarBase()
// recorro todo el menu, habilitando o deshabilitando las opciones
For i=1 to Len( aData )
cMenu := Alltrim(aData[1])
lHabilitado := aData[2]
__objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', lHabilitado )
Next
Return Nil
La ventaja es que para un nuevo menu, solo hay que agregar su cVarName a la
tabla accessos y otorgarle los permisos a cada nivel de usuario.
La desventaja es si queres tener los permisos individuales para cada persona
y no por nivel. Pero creo que con 9 opciones serian mas que suficientes.
Me falta hacer la edicion de los permisos en pantalla, y para eso me voy a
basar en un formulario del amigo PEDRO DE LEON RODAS.
y listo. Ante cualquier duda, si te puedo ayudar, con todo gusto.
Juan Castañeda
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:49d0f6e3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Juan:
>
> Entonces tú código como queda después, nos puedes poner como se queda y
> donde incluyes este aporte de xAvi.
>
> José Ramón Castro.
> Juan Castañeda escribió:
>> Perfecto!!!!!
>> Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
>> Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad
>> de modificar una propiedad con un dato guardado en una tabla. En Clipper
>> siempre use macros para todo, y eso me da mucha potencia y flexibilidad
>> en la programacion.
>>
>> Gracias a todos
>>
>> Juan
>>
>>
>> "xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
>> news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Sorry, se me fue la mano, mejor prueba así.-
>>>
>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>>>
>>> Xavi
>>>
>>> xAvi escribió:
>>>> Juan,
>>>>
>>>>> cMenu := aData[1] // por ej "mnFacturas", valor de la
>>>>> propiedad
>>>> ....
>>>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>>>> .T. o ..F.
>>>>>
>>>> Prueba esto .-
>>>>
>>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó
>>>> .F.
>>>>
>>>> Un saludo
>>>> Xavi
>>
Con todo gusto. Mi forma de hacerlo queda asi
En FormInitialize empiezo pidiendo el nombre de usuario y su contraseña.
Busco en la tabla de usuarios y establezco a que nivel pertenece y lo guardo
en AppData:nUsuarioNivel
Llamo a OpcionesDelMenu()
METHOD OpcionesDelMenu( oSender ) CLASS TFormMenu
// Habilita las opciones del menu segun el nUsuarioNivel, en mi caso es de 1
a 9. Por ej: 1 Administrador, 2 Vendedores, 3 Repartidores.
// la estructura de la tabla es MENU,C,20 NIVEL1,L,1 NIVEL2,L,1 hasta
NIVEL9,L,1
// los datos son por ej: "mnFacturas",.T.,.T.,.F.,.F.,.T.,.T.,.F.,.T.,.T. un
valor logico por cada nivel de usuario.
Local cSelect, aData
Local cMenu := ""
Local lHabilitado := .T.
cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
from accesos"
ConectarBase()
AppData:oBase:Execute ( cSelect,,@aData)
DesconectarBase()
// recorro todo el menu, habilitando o deshabilitando las opciones
For i=1 to Len( aData )
cMenu := Alltrim(aData[1])
lHabilitado := aData[2]
__objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', lHabilitado )
Next
Return Nil
La ventaja es que para un nuevo menu, solo hay que agregar su cVarName a la
tabla accessos y otorgarle los permisos a cada nivel de usuario.
La desventaja es si queres tener los permisos individuales para cada persona
y no por nivel. Pero creo que con 9 opciones serian mas que suficientes.
Me falta hacer la edicion de los permisos en pantalla, y para eso me voy a
basar en un formulario del amigo PEDRO DE LEON RODAS.
y listo. Ante cualquier duda, si te puedo ayudar, con todo gusto.
Juan Castañeda
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:49d0f6e3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Juan:
>
> Entonces tú código como queda después, nos puedes poner como se queda y
> donde incluyes este aporte de xAvi.
>
> José Ramón Castro.
> Juan Castañeda escribió:
>> Perfecto!!!!!
>> Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
>> Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad
>> de modificar una propiedad con un dato guardado en una tabla. En Clipper
>> siempre use macros para todo, y eso me da mucha potencia y flexibilidad
>> en la programacion.
>>
>> Gracias a todos
>>
>> Juan
>>
>>
>> "xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
>> news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Sorry, se me fue la mano, mejor prueba así.-
>>>
>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>>>
>>> Xavi
>>>
>>> xAvi escribió:
>>>> Juan,
>>>>
>>>>> cMenu := aData[1] // por ej "mnFacturas", valor de la
>>>>> propiedad
>>>> ....
>>>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>>>> .T. o ..F.
>>>>>
>>>> Prueba esto .-
>>>>
>>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó
>>>> .F.
>>>>
>>>> Un saludo
>>>> Xavi
>>
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
Macro de un objeto?
Gracias Juan.
José Ramón Castro
Juan Castañeda escribió:
> José.
> Con todo gusto. Mi forma de hacerlo queda asi
>
> En FormInitialize empiezo pidiendo el nombre de usuario y su contraseña.
> Busco en la tabla de usuarios y establezco a que nivel pertenece y lo guardo
> en AppData:nUsuarioNivel
> Llamo a OpcionesDelMenu()
>
>
> METHOD OpcionesDelMenu( oSender ) CLASS TFormMenu
> // Habilita las opciones del menu segun el nUsuarioNivel, en mi caso es de 1
> a 9. Por ej: 1 Administrador, 2 Vendedores, 3 Repartidores.
> // la estructura de la tabla es MENU,C,20 NIVEL1,L,1 NIVEL2,L,1 hasta
> NIVEL9,L,1
> // los datos son por ej: "mnFacturas",.T.,.T.,.F.,.F.,.T.,.T.,.F.,.T.,.T. un
> valor logico por cada nivel de usuario.
>
> Local cSelect, aData
> Local cMenu := ""
> Local lHabilitado := .T.
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> ConectarBase()
> AppData:oBase:Execute ( cSelect,,@aData)
> DesconectarBase()
> // recorro todo el menu, habilitando o deshabilitando las opciones
> For i=1 to Len( aData )
> cMenu := Alltrim(aData[1])
> lHabilitado := aData[2]
> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', lHabilitado )
> Next
> Return Nil
>
> La ventaja es que para un nuevo menu, solo hay que agregar su cVarName a la
> tabla accessos y otorgarle los permisos a cada nivel de usuario.
> La desventaja es si queres tener los permisos individuales para cada persona
> y no por nivel. Pero creo que con 9 opciones serian mas que suficientes.
>
> Me falta hacer la edicion de los permisos en pantalla, y para eso me voy a
> basar en un formulario del amigo PEDRO DE LEON RODAS.
> y listo. Ante cualquier duda, si te puedo ayudar, con todo gusto.
>
> Juan Castañeda
>
>
> "José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
> en el mensaje news:49d0f6e3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Juan:
>>
>> Entonces tú código como queda después, nos puedes poner como se queda y
>> donde incluyes este aporte de xAvi.
>>
>> José Ramón Castro.
>> Juan Castañeda escribió:
>>> Perfecto!!!!!
>>> Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
>>> Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad
>>> de modificar una propiedad con un dato guardado en una tabla. En Clipper
>>> siempre use macros para todo, y eso me da mucha potencia y flexibilidad
>>> en la programacion.
>>>
>>> Gracias a todos
>>>
>>> Juan
>>>
>>>
>>> "xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
>>> news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>>> Sorry, se me fue la mano, mejor prueba así.-
>>>>
>>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>>>>
>>>> Xavi
>>>>
>>>> xAvi escribió:
>>>>> Juan,
>>>>>
>>>>>> cMenu := aData[1] // por ej "mnFacturas", valor de la
>>>>>> propiedad
>>>>> ....
>>>>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>>>>> .T. o ..F.
>>>>>>
>>>>> Prueba esto .-
>>>>>
>>>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó
>>>>> .F.
>>>>>
>>>>> Un saludo
>>>>> Xavi
>
José Ramón Castro
Juan Castañeda escribió:
> José.
> Con todo gusto. Mi forma de hacerlo queda asi
>
> En FormInitialize empiezo pidiendo el nombre de usuario y su contraseña.
> Busco en la tabla de usuarios y establezco a que nivel pertenece y lo guardo
> en AppData:nUsuarioNivel
> Llamo a OpcionesDelMenu()
>
>
> METHOD OpcionesDelMenu( oSender ) CLASS TFormMenu
> // Habilita las opciones del menu segun el nUsuarioNivel, en mi caso es de 1
> a 9. Por ej: 1 Administrador, 2 Vendedores, 3 Repartidores.
> // la estructura de la tabla es MENU,C,20 NIVEL1,L,1 NIVEL2,L,1 hasta
> NIVEL9,L,1
> // los datos son por ej: "mnFacturas",.T.,.T.,.F.,.F.,.T.,.T.,.F.,.T.,.T. un
> valor logico por cada nivel de usuario.
>
> Local cSelect, aData
> Local cMenu := ""
> Local lHabilitado := .T.
> cSelect := "select menu, nivel"+Alltrim( Str( AppData:nUsuarioNivel) )+"
> from accesos"
> ConectarBase()
> AppData:oBase:Execute ( cSelect,,@aData)
> DesconectarBase()
> // recorro todo el menu, habilitando o deshabilitando las opciones
> For i=1 to Len( aData )
> cMenu := Alltrim(aData[1])
> lHabilitado := aData[2]
> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', lHabilitado )
> Next
> Return Nil
>
> La ventaja es que para un nuevo menu, solo hay que agregar su cVarName a la
> tabla accessos y otorgarle los permisos a cada nivel de usuario.
> La desventaja es si queres tener los permisos individuales para cada persona
> y no por nivel. Pero creo que con 9 opciones serian mas que suficientes.
>
> Me falta hacer la edicion de los permisos en pantalla, y para eso me voy a
> basar en un formulario del amigo PEDRO DE LEON RODAS.
> y listo. Ante cualquier duda, si te puedo ayudar, con todo gusto.
>
> Juan Castañeda
>
>
> "José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
> en el mensaje news:49d0f6e3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Juan:
>>
>> Entonces tú código como queda después, nos puedes poner como se queda y
>> donde incluyes este aporte de xAvi.
>>
>> José Ramón Castro.
>> Juan Castañeda escribió:
>>> Perfecto!!!!!
>>> Anda perfecto. Te agradezco a vos y a todos los que me ayudaron.
>>> Yo quería hacerlo asi, no solamente por el menu, sino por la posibilidad
>>> de modificar una propiedad con un dato guardado en una tabla. En Clipper
>>> siempre use macros para todo, y eso me da mucha potencia y flexibilidad
>>> en la programacion.
>>>
>>> Gracias a todos
>>>
>>> Juan
>>>
>>>
>>> "xAvi" <jarabal_eliminar_no_spam_@gmail.com> escribió en el mensaje
>>> news:49d092e4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>>> Sorry, se me fue la mano, mejor prueba así.-
>>>>
>>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_lEnabled', .T. ) // ó .F.
>>>>
>>>> Xavi
>>>>
>>>> xAvi escribió:
>>>>> Juan,
>>>>>
>>>>>> cMenu := aData[1] // por ej "mnFacturas", valor de la
>>>>>> propiedad
>>>>> ....
>>>>>> Mi problema es como decir que mnFacturas es ::mnFacturas:lEnabled :=
>>>>>> .T. o ..F.
>>>>>>
>>>>> Prueba esto .-
>>>>>
>>>>> __objSendMsg( __objSendMsg( Self, cMenu ), '_' + lEnabled, .T. ) // ó
>>>>> .F.
>>>>>
>>>>> Un saludo
>>>>> Xavi
>