Discusiones sobre Productos NI

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

Mover un caracter double a un Textbox char

¡Resuelto!
Ir a solución
Hola otra vez: Tengo un pequeñísimo problema, a ver si podéis ayudarme.Primero, tengo un dato (double x;) en un NUMERIC. Ese dato, escrito por el usuario, quiero enviarlo a otro panel (panel_handle) a un TextBox de ese panel. En ese TextBox tiene que haber algo escrito por defecto.Es decir, tengo que añadir el dato introducido por el usuario en NUMERIC y enviarlo al Textbox del panelhandle inmediatamente detrás del texto escrito en él. Al compilar, me sale un error: "Invalid argument type:found "double",expected "pointer to char" ¿Cómo puedo pasar ese dato y meterlo detrás del texto del Textbox?¿Que instrucción tengo que utilizar para que no me de ese error?: A continuación os pongo el código que he escrito: double x; movimientomotor=LoadPanel(0,"Menu+Serial.uir",movmot); GetCtrlVal(panelmotores,PANEL_PASOS,&x); /Tomo el valor del NUMERIC/ if (x>-200 & x<200) { estado = ConfirmPopup("Va Usted A Mover El Motor","¿Está Seguro De Los Pasos A Mover?"); if (estado==1) { InstallPopup(panel_handle); /Cargo el panel_handle/ SetCtrlVal(panel_handle,SERIAL_TBOX_SEND,x); /AQUI ME DA EL ERROR,ES EL TEXTBOX AL QUE QUIERO MANDAR EL DATO ESCRITO EN PANEL_PASOS/ } El texto que va en el Text box es simple: Solo pone "ma". Resumiendo, lo que quiero que aparezca en el textbox es "ma 20000" el 20000 es el numero que introduce el usuario en NUMERIC(PANEL_PASOS). Espero que haya quedado claro y podais ayudarme.GRACIAS
0 kudos
Mensaje 1 de 2
2.991 Vistas
Solución
Aceptado por el autor del tema motores
Bueno, un textbox solamente acepta como valor un texto (string), esto es, debes de formatear tu número en un un texto antes de pasarlo al textbox. Ten en cuenta que un textbox actúa en manera particular que al momento a ti te va bien: si le das un SetCtrlVal el texto se añade al contenido actual del control. Para ponerle un texto completamente nuevo que substituya al precedente debes de usar ResetTextBox.

Ahora bien, aquí va tu código con lo que se necesita para formatear el texto antes de pasarlo al control; he movido el LoadPanel también para cargar en memoria el panel tan sólo cuándo se va a utilizar efectivamente. Igualmente he subrayado algunos otros detalles que he corregido:

 

double x;
char msg[16];
GetCtrlVal (panelmotores, PANEL_PASOS, &x); //Tomo el valor del NUMERIC
if (x > -200.0 && x < 200.0) {
    estado = ConfirmPopup ("Va Usted A Mover El Motor", "¿Está Seguro De Los Pasos A Mover?");
    if (estado == 1) {
movimientomotor = LoadPanel (0, "Menu+Serial.uir", movmot);
InstallPopup (panel_handle); //Cargo el panel_handle
sprintf (msg, "%.1f ", x);  // Formateo el texto con 1 dígito detrás del coma
SetCtrlVal (panel_handle, SERIAL_TBOX_SEND, msg);
    }

 



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.984 Vistas