From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

GetCtrlVal ¿utilizacion correcta?

Hola otra vez, amigos con paciencia. Os digo mi problemilla. Tengo dos paneles. En el primero (PANEL) tengo un botón que al darle me abre el segundo panel (PANEL_2) he utilizado el InstallPopup para ello. En este segundo panel tengo un TEXTBOX en el que tengo que poner un número. Ahora viene el problema. Tengo que poner este número introducido por el usuario en otro TEXTBOX (TEXTBOX_2) que está en un tercer panel(PANEL_3). ¿Cómo hago para leer ese número del TEXTBOX del PANEL_2 y que lo escriba en el TEXTBOX_2 del PANEL_3? Yo he utilizado GetCtrlVal y luego un SetCtrlVal pero siempre me da error.et

 

int x; 

CtrlVal(PANEL_2,PANEL_2_TEXTBOX,&x);
SetCtrlVal(PANEL_3,PANEL_3_TEXTBOX_2,);

 

Es obvio que hago algo mal, pero no se que, sería de gran utilidad vuestra ayuda.Ah, y gracias Roberto, tu ayuda sobre el serial ha sido util.

 

Gracias

0 kudos
Mensaje 1 de 2
2.821 Vistas

Bueno motores, me alegra saber que mi contestación te ha sido útil.

Ahora bien, en tu caso hay que aclarar algunos conceptos del CVI: cada panel que se visualiza en el video es una instancia independiente de los otros paneles que posiblemente son activos en un momento en tu programa (en tu caso, por ejemplo, habrà tres aneles activos en un dato momento). Cada panel es identificado por un handle (vamos a llamarlo manillar, aunque no sé si es el término correcto en español Guiño ) que es diferente del nombre asociado a cada panel en el UIR editor (en tu caso PANEL, PANEL_" y PANEL_3): el manillar es el valor que retorna la instrucción LoadPanel; de heco, tu podrías cargar un panel más que una vez en la memoria usando muchos LoadPanel: todos ellos serán iguales pero cada uno de ellos será un objet independiente (esto es, podrás maniobrar los controles en un panel sin que esto afecte a los otros).

 

Ahora bien, aparte del LoadPanel, que precisamente utiliza el panel name para identificar quál de los paneles en un archivo UIR se va a cargar, para maniobrar los controles en los paneles siempre se va a usar el manillar. Esto es, en tu código deberán aparecer las siguientes instrucciones:

 

// Cargamiento de los paneles

int x, handle1, handle2, handle3; 

handle1 = LoadPanel (0, "archivo.uir", PANEL);

handle2 = LoadPanel (0, "archivo.uir", PANEL_2);

handle3 = LoadPanel (0, "archivo.uir", PANEL_3);

 

// Visualización del primero y tercero panel

DisplayPanel (handle1);

DisplayPanel (handle3);

 

// Callback del botón en el primer panel

InstallPopup (handle2);

 

// Lectura del segundo panel y escritura en el tercero

GetCtrlVal (handle2, PANEL_2_TEXTBOX, &x);

SetCtrlVal (handle3, PANEL_3_TEXTBOX_2, x);

 

La callback del botón debe conocer la variable handle3, si no no puede escribir el valor en el panel: el método más simple para hacer esto es declararar los manillares al inicio de tu código, de manera que sean conocidos por todal las funciones en el mismo archivo fuente.



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 2 de 2
2.819 Vistas