Discusiones sobre Productos NI

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

adquirir datos de un control nuevo

¡Resuelto!
Ir a solución

Hola,

uso el LabWindows CVI 9.0.

Escribí un programa en el que creo un Control nuevo:

 

 control_nuevo=NewCtrl(panelHandle, CTRL_POPUP_MENU_RING_LS, "Control Nuevo", y, x);

 

en este inserto diferentes valores en forma de Texto

 

InsertListItem (panelHandle, control_nuevo, index, "un texto nuevo",index++);

 

mi problema radica en que cuando quiero leer los textos de ese nuevo control, por ejemplo de esta forma:

 

char str[200];

GetValueFromIndex (panelHandle, control_nuevo, 0, str);

 

me dice que str debería ser un "int" y no un "char".

Alguien puede darme una solucion?

Gracias.

Abel

0 kudos
Mensaje 1 de 5
3.075 Vistas

Hola,

si quieres leer el texto asociado a un elemento tienes que usar el GetLabelFromIndex y no el GetValueFromIndex. Cualquier control ring tiene una cupla texto/valor para cada elemento, y tu puedes leer sea el valor que el texto, pero con funciones distintas.

 

En tu código cuando insertas un elemento le das el mismo valor que su índice, pero igualmente podrías asignarle un valor diferente, de manera que:

- el index te da la posición del elemento en la serie de los elementos; la posición puede cambiar (por ejemplo si insertas un elemento nuevo al principio de la lista)

- el valor es un int asociado a cada elemento

- el texto es la etiqueta que viene mostrada al usuario en el control para cada elemento



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 5
3.073 Vistas
Solución
Aceptado por el autor del tema oabel5

Gracias Roberto,

tienes razón, siempre me confundo con eso del Index y el Label.

lo que hasta ahora no logro hacer, es cambiar el Font de esos Labels. En otro hilo Hector Rojas me había aconsejado usar este comando:

 

SetCtrlAttribute (panelHandle,control_nuevo,ATTR_TEXT_FONT,"ARIAL");

 

pero este parece que no funciona para controles nuevos.

Saludos.

Abel.

0 kudos
Mensaje 3 de 5
3.070 Vistas

A mi me parece que la solución de Victor es correcta.

Pega estas instrucciones en la ventana de ejecución inmediata, corre el código y mira el resultado:

 

 

#include <userint.h>
static int		i, ph, ch;

// Create a panel and a ring control
ph = NewPanel (0, "Prova", 100, 100, 200, 200);
ch = NewCtrl (ph, CTRL_POPUP_MENU_RING_LS, "Prova", 50, 50);

// Add items to the ring
for (i = 0; i < 10; i++)
	InsertListItem (ph, ch, -1, "Item", i);
// Change text font and size
SetCtrlAttribute (ph, ch, ATTR_TEXT_FONT, "Comic Sans MS");
SetCtrlAttribute (ph, ch, ATTR_TEXT_POINT_SIZE, 22);
// Change label font and size
SetCtrlAttribute (ph, ch, ATTR_LABEL_FONT, "Arial");
SetCtrlAttribute (ph, ch, ATTR_LABEL_POINT_SIZE, 16);
// Ring control must not generate commit events
SetCtrlAttribute (ph, ch, ATTR_CTRL_MODE, VAL_NORMAL);

// Create a exit command button
NewCtrl (ph, CTRL_SQUARE_COMMAND_BUTTON_LS, "Quit", 150, 150);

// View panel
DisplayPanel (ph);

// Handle quit event and exit
GetUserEvent (1, 0, 0);
DiscardPanel (ph);

 

 

PS Probablemente te has equivocado en indicar la solución a tu pregunta... Guiño

 



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 4 de 5
3.065 Vistas

Hola Roberto,

en el otro hilo ya explique que por culpa de un "if", estaba cambiando el atributo al control en otro lugar, por eso no me resultaba.

Gracias de nuevo.

Abel.

PS.

está especificado en algún lugar los diferentes Fonts que podemos utilizar?: "arial", "courier", "etc.,

0 kudos
Mensaje 5 de 5
3.061 Vistas