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.

Mas sobre menus.

Foro público de Xailer en español
Responder
Thefull
Mensajes: 70
Registrado: Lun Oct 11, 2004 4:44 pm

Mas sobre menus.

Mensaje por Thefull »

Por lo que veo, un objeto TForm1, contiene un objeto oMenu, pero esto no
sale reflejado en la ayuda ni en el IDE. ¿ Es correcto ?
Intentado crear un menu a una ventana, veo que se realiza:
METHOD FormInitialize()
MENU ::oMenu
// Mis menus
ENDMENU
Y ya esta, tengo mi menú en la ventana.
Pregunta tonta: ¿ Esto es asi ?
Ahora bien, si creo un componente del tipo TMenu, en un form,
¿ este se comportará como oMenu ?
Pero mi pregunta tambien es:
¿ Como puedo usar ese componente Menu con codigo fuente ?
Es decir, esto no funciona:
MENU ::oMenu1
// Mis menus
ENDMENU
Y no entiendo muy bien el porque no, si esta asociado a una TForm1
Saludos
Rafa Carmona
Thefull
Mensajes: 70
Registrado: Lun Oct 11, 2004 4:44 pm

Mas sobre menus.

Mensaje por Thefull »

Veo que TForm1 hereda de TWinControl, y este es el que posee la DATA
oMenu....
Sugerencia, que no se si esta soportado:
Mostrar los valores asignables en el IDE, de los componentes heredados,
es decir, poder VER oMenu en un TForm, porque, realmente existe como
tal, aunque no se veo, y no se ve, porque no es de TForm1, pero como si
lo fuese, no se si me explico , jejeje.
¿ Es correcto lo que digo ?
Saludos
Rafa Carmona
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Mas sobre menus.

Mensaje por jfgimenez »

Rafa,
> Por lo que veo, un objeto TForm1, contiene un objeto oMenu, pero esto no
> sale reflejado en la ayuda ni en el IDE. ¿ Es correcto ?
Exactamente. oMenu es una propiedad del formulario donde se guarda un objeto
menú.
> Intentado crear un menu a una ventana, veo que se realiza:
>
> METHOD FormInitialize()
>
> MENU ::oMenu
> // Mis menus
> ENDMENU
>
> Y ya esta, tengo mi menú en la ventana.
>
> Pregunta tonta: ¿ Esto es asi ?
;-)
Esa es la forma más fácil de hacer un menú por código.
> Ahora bien, si creo un componente del tipo TMenu, en un form,
> ¿ este se comportará como oMenu ?
Sí. Si te fijas, los comandos MENU ... / MENUITEM / ENDMENU lo que hacen es
encapsular una serie de llamadas a funciones auxiliares que construyen
objetos TMenu (o TPopupMenu) y TMenuItem
> Pero mi pregunta tambien es:
> ¿ Como puedo usar ese componente Menu con codigo fuente ?
> Es decir, esto no funciona:
> MENU ::oMenu1
> // Mis menus
> ENDMENU
>
> Y no entiendo muy bien el porque no, si esta asociado a una TForm1
Bueno, ::oMenu1 es simplemente un componente declarado en el propio
formulario, pero no actua como menú hasta que lo asignas a la propiedad
oMenu del formulario. Es decir, para que te funcione como tú esperas sólo
tienes que poner al final:
::oMenu := ::oMenu1
Si lo haces en modo diseño, es decir, que el propio IDE te genera todo el
código dentro del fichero .xfm, entonces no hace falta.
--
Un saludo,
José F. Giménez
http://www.xailer.com
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Mas sobre menus.

Mensaje por jfgimenez »

Rafa,
> Veo que TForm1 hereda de TWinControl, y este es el que posee la DATA
> oMenu....
>
> Sugerencia, que no se si esta soportado:
> Mostrar los valores asignables en el IDE, de los componentes heredados,
> es decir, poder VER oMenu en un TForm, porque, realmente existe como tal,
> aunque no se veo, y no se ve, porque no es de TForm1, pero como si lo
> fuese, no se si me explico , jejeje.
Sí, es así. Toda propiedad de una clase es heredada por sus clases hijas,
incluido su ámbito de visibilidad. Lo que pasa es que la propiedad oMenu
tiene ámbito PUBLIC, y no PUBLISHED, y por eso no aparece en el inspector.
Como aclaración... el ámbito PUBLISHED es exactamente igual que PUBLIC, pero
además aparece en el inspector, tanto si es una propiedad como si es un
evento.
--
Un saludo,
José F. Giménez
http://www.xailer.com
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder