Página 1 de 1

Mas sobre menus.

Publicado: Lun Dic 11, 2006 6:42 pm
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

Mas sobre menus.

Publicado: Lun Dic 11, 2006 7:04 pm
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

Mas sobre menus.

Publicado: Lun Dic 11, 2006 7:28 pm
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

Mas sobre menus.

Publicado: Lun Dic 11, 2006 7:32 pm
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