el 05-13-2011 03:56 AM
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
¡Resuelto! Ir a solución.
el 05-13-2011 04:39 AM
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
el 05-13-2011 04:58 AM
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.
05-13-2011 05:35 AM - editado 05-13-2011 05:37 AM
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...
el 05-13-2011 06:08 AM
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.,