Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

panel sobre otro panel

Hola,

tengo la siguiente pregunta. En mi trabajo utilizamos un programa acabado; lo único que hace este programa es mostrar algunos datos leídos de diferentes aparatos de medición. Las funciones que leen estos datos, las escribo yo. Lo que yo quisiera, es por ejemplo que una de mis funciónes, me muestre un subpanel, en el que pueda realizar diferentes acciones. Lo que quiero es por ejemplo mostrar algunas fotos o propios dibujos, osea resumiendo que mi funcion cree un panel pequeño, el cual pueda seguir programando.

Gracias por cualquier respuesta.

Abel.

0 kudos
Mensaje 1 de 3
2.924 Vistas

Hola,

estuve experimentando y acerca de mi pregunta hice lo siguiente:

Dentro de mi funcion escribí:

 

 panelHandle2 = LoadPanel (0, "Panel2.uir", PANEL);

 DisplayPanel (panelHandle2);
 RunUserInterface ();
 DiscardPanel (panelHandle2);

 

esto naturalmente carga otro panel cuando llamo a mi funcion, lo que no sé es cómo vuelvo a mi Panel principal?

Qué exáctamente ocasiona el RunUserInterface (); ,porque quitando esto logro salir del subpanel.

Gracias por toda respuesta.

Abel

0 kudos
Mensaje 2 de 3
2.916 Vistas

Escrito por oabel5:

 

 panelHandle2 = LoadPanel (0, "Panel2.uir", PANEL);

 DisplayPanel (panelHandle2);
 RunUserInterface ();
 DiscardPanel (panelHandle2);

 


 

Bueno, esto ya aclara el lenguaje que estás usando Guiño

 

Como ya has visto, para visualizar casa panel se usa el DisplayPanel; para quitarlo puedes poner en este un botón en cuya función simplemente haya:

 

int ButtonCallback (int panel, int control, int event, void *callbackData, int eventData1, int evntData2)

{

    if (event != EVENT_COMMIT) return 0;

 

    DiscardPanel (panel);

 

    return 0;

}

 

esto hace que el panel desaparezca del video (y de la memoria también: ya no podràs obrar sobre él ni leer el contenido de sus controles).

 

Otra manera de hacerlo es asociar una callback al panel y en esta manejar el evento EVENT_DISCARD para quitar el panel presionando el icono rojo en el ángulo superior derecho.

 

De todas maneras, no es necesario llamar al RunUserInterface más que una vez en toda tu aplicación: este comando abilita el procesamiento de los eventos del usuario, como por elemplo la presión en los botones y usualmente se pone solamente en el main ( ); poner esta instrucción más que una vez puede ingenerar confusión el en programa y un procesamiento incorrecto de los eventos.

Mensaje editado por Roberto Bozzolo


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 3 de 3
2.908 Vistas