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.

Creando Toolbar desde Codigo

Foro público de Xailer en español
Responder
Williams Pacheco
Mensajes: 165
Registrado: Mié Jul 08, 2009 5:26 pm

Creando Toolbar desde Codigo

Mensaje por Williams Pacheco »

Estimados amigos
He creado una toolbar desde codigo sin problemas asignado el evento onClick
de la siguiente forma:
-----
WITH OBJECT ::oToolBar
::oHelp := :AddItem( "", 1, "Ayuda", .T. )
::oHelp:OnClick := { || ShowHelp("1") }
END
-----
En esta oportunidad necesito crear una barra de botones a partir de una base
de datos, para ello tengo el siguiente codigo ejemplo
-----
aData := { { 1, "Ayuda", "::GoHelp()", 1, 1 }, ;
{ 2, "-", NULL, 1, 0 } ;
{ 3, "Videos", "::GoVideo()", 1, 2 } ;
}
FOR EACH oLnk IN aData
WITH OBJECT ::oToolBar
IF oLnk[2] = "-"
:AddSeparator()
ELSE
bOnClick := "{ || " + oLnk[3] + " }"
oBtn := :AddItem( "", oLnk[5], oLnk[2], .T. )
oBtn:OnClick := Eval(&(bOnClick))
ENDIF
END
NEXT
-----
Este codigo me genera un error que indica que no existe la variable self.
Estoy de acuerdo con eso ya que estoy llamando a metodos de una clase a
traves de macrosustitución. Si creo el bloque de codigo sin macrosustitución
funciona correcto (como en el primer ejemplo) pero de esta manera no. De que
forma deberia implementar el evento Onclick?
Gracias
--
Saludos
Williams Pacheco
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Creando Toolbar desde Codigo

Mensaje por zeasoftware »

Yo lo uso asi:
With Object :AddItem("&Nota Venta", ID_NOTAS_VTAS, "Notas de Venta" )
:lAutoSize := AppData:lBarwName
//:nID_Check := ID_NOTAS_VTAS
//:cID_Check := "Notas de Venta"
:OnClick := {|| ::Launch(TNotasVenta())} //"NotasVenta"
//:OnCheckState := {|| AppData:lConected .And.
AppData:lAlmacenConect .And. ;
// AppData:TAppUser:ItemEnabled(
ID_NOTAS_VTAS ) }
End With
Saludos..
"Williams Pacheco" escribió en el mensaje de
noticias:4d9db898$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Estimados amigos
He creado una toolbar desde codigo sin problemas asignado el evento onClick
de la siguiente forma:
-----
WITH OBJECT ::oToolBar
::oHelp := :AddItem( "", 1, "Ayuda", .T. )
::oHelp:OnClick := { || ShowHelp("1") }
END
-----
En esta oportunidad necesito crear una barra de botones a partir de una base
de datos, para ello tengo el siguiente codigo ejemplo
-----
aData := { { 1, "Ayuda", "::GoHelp()", 1, 1 }, ;
{ 2, "-", NULL, 1, 0 } ;
{ 3, "Videos", "::GoVideo()", 1, 2 } ;
}
FOR EACH oLnk IN aData
WITH OBJECT ::oToolBar
IF oLnk[2] = "-"
:AddSeparator()
ELSE
bOnClick := "{ || " + oLnk[3] + " }"
oBtn := :AddItem( "", oLnk[5], oLnk[2], .T. )
oBtn:OnClick := Eval(&(bOnClick))
ENDIF
END
NEXT
-----
Este codigo me genera un error que indica que no existe la variable self.
Estoy de acuerdo con eso ya que estoy llamando a metodos de una clase a
traves de macrosustitución. Si creo el bloque de codigo sin macrosustitución
funciona correcto (como en el primer ejemplo) pero de esta manera no. De que
forma deberia implementar el evento Onclick?
Gracias
--
Saludos
Williams Pacheco
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
Williams Pacheco
Mensajes: 165
Registrado: Mié Jul 08, 2009 5:26 pm

Creando Toolbar desde Codigo

Mensaje por Williams Pacheco »

Gracias Ramon
Como te puedes dar cuenta, el método que indicas es similar al que yo coloco
en la primera parte del email. Entiendo que de esa forma el bloque de codigo
se resuelve en tiempo de compilación, cosa que no pasa de la forma que
indico en el segundo ejemplo
Mi intención es lograr crear el llamado a un método de la clase a través de
macrosustitucion (o algo similar), esto es porque el "action" del evento lo
cargo desde la base de datos.
Alguien tiene otra solución?
Saludos
WP
"Ramón Zea" <zeasoftware@hotmail.com> wrote in message
news:[email=4d9de32a@svctag-j7w3v3j....]4d9de32a@svctag-j7w3v3j....[/email]
> Yo lo uso asi:
>
> With Object :AddItem("&Nota Venta", ID_NOTAS_VTAS, "Notas de
> Venta" )
> :lAutoSize := AppData:lBarwName
> //:nID_Check := ID_NOTAS_VTAS
> //:cID_Check := "Notas de Venta"
> :OnClick := {|| ::Launch(TNotasVenta())} //"NotasVenta"
> //:OnCheckState := {|| AppData:lConected .And.
> AppData:lAlmacenConect .And. ;
> // AppData:TAppUser:ItemEnabled(
> ID_NOTAS_VTAS ) }
> End With
>
>
> Saludos..
>
>
> "Williams Pacheco" escribió en el mensaje de
> noticias:4d9db898$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Estimados amigos
>
> He creado una toolbar desde codigo sin problemas asignado el evento
> onClick
> de la siguiente forma:
>
> -----
> WITH OBJECT ::oToolBar
> ::oHelp := :AddItem( "", 1, "Ayuda", .T. )
> ::oHelp:OnClick := { || ShowHelp("1") }
> END
> -----
>
> En esta oportunidad necesito crear una barra de botones a partir de una
> base
> de datos, para ello tengo el siguiente codigo ejemplo
>
> -----
> aData := { { 1, "Ayuda", "::GoHelp()", 1, 1 }, ;
> { 2, "-", NULL, 1, 0 } ;
> { 3, "Videos", "::GoVideo()", 1, 2 } ;
> }
>
> FOR EACH oLnk IN aData
> WITH OBJECT ::oToolBar
> IF oLnk[2] = "-"
> :AddSeparator()
> ELSE
> bOnClick := "{ || " + oLnk[3] + " }"
> oBtn := :AddItem( "", oLnk[5], oLnk[2], .T. )
> oBtn:OnClick := Eval(&(bOnClick))
> ENDIF
> END
> NEXT
> -----
>
> Este codigo me genera un error que indica que no existe la variable self.
> Estoy de acuerdo con eso ya que estoy llamando a metodos de una clase a
> traves de macrosustitución. Si creo el bloque de codigo sin
> macrosustitución
> funciona correcto (como en el primer ejemplo) pero de esta manera no. De
> que
> forma deberia implementar el evento Onclick?
>
> Gracias
>
> --
> Saludos
>
> Williams Pacheco
>
> Ramón Zea
> 01.993.231-62-29
> http://www.paginasprodigy.com/zeasoftware/
> zeasoftware@hotmail.com
> zeasoft.movil@hotmail.com
Responder