--- En t-gtk@yahoogroups.com, Sebastián N. Lalaurette <bit@t...> escribió:
> > > ¿Cómo puedo hacer?
> > Vamos haber, dependiendo de como estas haciendo la aplicacion, en POO
> > o nativamente.
>
> No termino de comprender cuál es la diferencia. Si creo la ventana
con DEFINE WINDOW frmMain, creará un widget frmMain al que puedo
pasarle mensaje s de GTK, ¿verdad? Es lo que Joaquim me decía sobre
cómo cambiar la propiedad show_arrow de un objeto toolbar (que no me
funcionó, y le pregunté por qué en otro mensaje). Entonces, programar
por POO y nativamente no tienen tanta diferencia, ¿o sí?
>
Si que hay diferencia, puesto que para facilitaros la vida para
programar, controlamos determinadas cosas, que de otra forma, tendreis
que realizar vosotros.
Nosotros determinamos como y cuando se puede o se debe hacer
determinadas cosas, eso no implica que vosotros useis o determinais
como deberian ser ;-)
> > TOOLBAR ACTION ( Salir(), oWnd:End() )
>
> No entiendo. ¿Dónde tendría que ubicar ese código? Creo que no he
visto en la guía ni en la documentación un comando TOOLBAR ACTION.
>
Mirate el ejempo /tests/gclass/toolbar , ahi tienes un ejemplo de
lo que te estoy diciendo:
DEFINE TOOLBUTTON oToolButton ;
TEXT "ICONS";
STOCK_ID GTK_STOCK_STOP ;
ACTION oWindow:End();
OF oToolBar
> > Si lo que quieres es una una funcion salir() general , la unica opcion
> > seria que donde tengas el DEFINE WINDOW oWnd, dicha variable sea
> > static al prg y tener la funcion salir donde este la variables oWnd,
> > asi, de esta forma, puedes tranquilamente llamar a Salir y matará
a la
> > ventana principal.
>
> Bueno, pero quisiera saber, Rafa, si hay alguna manera de obtener el
objeto que corresponde a la ventana principal o a la actual, como se
puede hacer en Visual FoxPro, por ejemplo, con THISFORM, o el objeto
actual, con THIS, o el contenedor del objeto actual, con THIS.Parent.
>
> De esa manera, creo (corrígeme si estoy equivocado) que podría
escribir una función Salir() que simplemente diga: THIS:Window:End(),
o algo similar.
>
> Agradezco nuevamente tu paciencia. :)))))
Tan facil como esto:
Static oWnd_principal
Function Main()
DEFINE WINDOW oWnd_Principal
.... ......
return nil
Function GetOBjWndPrincipal(); Return oWnd_Principal
A partir de ahora, desde cualquier sitio, puedes coger el objeto
de la ventana principal, y hacer un :
Local oWnd := GetOBjWndPrincipal()
oWnd:End()
Esto deberia de funcionarte sin problemas.
Pero la verdad es que no se porque le das tantas vueltas a un
tema, aparentemente simple.
No he querido implementar una data de ventanas que me diga cual
es la ventana principal, aunque se podria hacer.
La razon, pues tan simple como lo que te he explicado arriba, hacerlo
uno propio es tan simple, que prefiero no tener que cargar los objetos
de gClass.
Saludos
Rafa Carmona
>
>
> Saludos,
> Sebastián