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: 

Evento "ESC"

Hola,

hay alguna posibilidad de que al apretar la tecla "ESC" sea reconocido como un evento?, talvez alguien me pueda dar un ejemplo.

Gracias.

Abel.

 

PS. Trabajo con LabWindows CVI.

0 kudos
Mensaje 1 de 5
2.959 Vistas

Hola oabel5,

 

      CVI genera un evento conocido como EVENT_KEYPRESS cuando el usuario presiona una tecla y manda este evento a una función de callback. En la siguiente página encontrarás más información acerca de cómo utilizar este evento en CVI.

 

http://zone.ni.com/reference/en-XX/help/370051P-01/cvi/uiref/cvieventkeypress/

 

      Asimismo, hay una función que te permite simular cuando un usuario presiona una tecla. Esta función se conoce como FakeKeystroke y en la siguiente página podrás encontrar más información acerca de cómo utilizarla.

 

http://zone.ni.com/reference/en-XX/help/370051T-01/cvi/uiref/cvifakekeystroke/

 

      Espero que la información te sirva para resolver tu problema.

 

Saludos,

 

Héctor Rojas

0 kudos
Mensaje 2 de 5
2.912 Vistas

Más simple aún es poner un botón "Terminar" en la pantalla y ponerle el Esc como shortcut key: presionar la tecla será equivalente al click en el botón y su callback será ejecutada con evento EVENT_COMMIT.



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?
Mensaje 3 de 5
2.910 Vistas

 

 

Hola,

gracias por las respuestas; aunque la de Roberto me parece mas sencilla, lamentablemente no consigo que la CVICALLBACK sea llamada, cuando presiono ESC.

Mi Función:

int CVICALLBACK Terminar (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
						  SetPanelAttribute (popuphandle_ini, ATTR_VISIBLE, 0);
						  
		break;
	}
	return 0;
}

Naturalmente que en el Control activé el Shortcut Key:

Sin título.png 

Donde estoy cometiendo un error?

Saludos.

Abel 

0 kudos
Mensaje 4 de 5
2.836 Vistas

Lo que puede pasar es que el panel en el que está el botón no sea el panel activo en este momento.

Creo recordar que estás desarrollando una interfaz con un tab control: si por ejemplo el botón está en el panel principal pero el usuario estaba interactuando con una de las páginas del tab aquella es el panel activo y el que recibe los eventos, así que la tecla Esc no actúa. Si este es el caso, creo que lo mejor es seguir la solución de Hector y instalar una callback en el panel principal (aquello en el que está el tab).

 

EDIT: mirando al panel handle me acordé de esta discusión tuya. Si esta pregunta se refiere a aquella situación yo si tu instalaría una callback en el panelito, ocultándolo cuando el panel ya no es activo (EVENT_LOST_FOCUS) u si el usuario cliquea sobre él (EVENT_LEFT_CLICK).



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 5 de 5
2.831 Vistas