Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Capturar la tecla Enter en una Notebook, sin tener que presionar Shift o Ctrl. (https://www.clubdelphi.com/foros/showthread.php?t=83018)

Subliminalz 03-05-2013 02:26:41

Capturar la tecla Enter en una Notebook, sin tener que presionar Shift o Ctrl.
 
Hola muchachos(as), tengo un pequeño problema, se trata sobre la tecla Enter, en una computadora normal, el código funciona de maravilla, pero en una Notebook tengo que acompañar la tecla Enter con la tecla Shift, logre, aunque no se si fue un logro, hacer que trabaje con la tecla Ctrl, en vez de Shift, pero es lo mismo... el código que uso tambien captura otras teclas (números,+,-,*,/)...

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin case key of
      VK_NUMPAD1:FormClick(Button6);
      VK_NUMPAD2:FormClick(Button7);
      VK_NUMPAD3:FormClick(Button8);
      VK_NUMPAD4:FormClick(Button9);
      VK_NUMPAD5:FormClick(Button10);
      VK_NUMPAD6:FormClick(Button11);
      VK_NUMPAD7:FormClick(Button12);
      VK_NUMPAD8:FormClick(Button13);
      VK_NUMPAD9:FormClick(Button14);
      VK_DECIMAL:FormClick(Button15);
      VK_NUMPAD0:FormClick(Button16);
      VK_ADD:FormClick(Button2);
      VK_SUBTRACT:FormClick(Button3);
      VK_MULTIPLY:FormClick(Button4);
      VK_DIVIDE:FormClick(Button5);
      VK_RETURN:FormClick(Button1); {Enter}
      end;


Lo que trato de lograr, es que funcione de modo normal, presionando solo la tecla Enter, estaba viendo otro hilo, otro tema similar, con el mismo caso, pero dieron muchas soluciones, las cuales aplique, pero al igual que en ese Tema ninguna funciono, trabaje el mismo código en una computadora normal, una desktop, y descubri muchas cosas interesantes y si funciona directamente la tecla Enter, pero en una Notebook no funciona de manera directa...

Espero alguien me ayude, muchas gracias de antemano... tambien intente con Key:#13, otra forma que intente... pero ninguna...

TiammatMX 04-05-2013 00:46:50

Cita:

Empezado por Subliminalz (Mensaje 459746)
....tambien intente con Key:#13, otra forma que intente... pero ninguna...

Pues es que es lo que podría funcionarte..., ¿Y probaste Key = #13?

nlsgarcia 04-05-2013 01:02:16

rrf,

Cita:

Empezado por rrf
...en una Notebook tengo que acompañar la tecla Enter con la tecla Shift...
...Lo que trato de lograr, es que funcione de modo normal, presionando solo la tecla Enter...

Revisa este link:
Cita:

Detectar pulsación de teclas Ctrl, Alt y Shift y teclas virtuales : http://www.clubdelphi.com/foros/showthread.php?t=70559
Adicionalmente te sugiero usar el evento OnKeyDown de un control TEdit para determinar que código de tecla se activa al presionar unicamente la tecla Enter del equipo en cuestión.

Espero sea útil :)

Nelson.

Subliminalz 05-05-2013 06:48:52

"Tiammat" claro que si. Gracias por la recomendación.
"NLSGarcia" muy interesante lo que posteo el usuario "RRF"... de hecho me va a servir para practicar la combinación de teclas... asi que gracias...

Cita:

Empezado por nlsgarcia (Mensaje 459792)
Adicionalmente te sugiero usar el evento OnKeyDown de un control TEdit para determinar que código de tecla se activa al presionar unicamente la tecla Enter del equipo en cuestión.

Con este comentario me hiciste pensar un rato, "unicamente" fue la palabra magica...

Gracias a ello detecte la falla y es que estaba a simple vista, solo faltaba mirar un poco más y aumentar un poco el brillo a la pantalla, jeje, se debe a que estoy utilizando un código que cuando presiono las teclas del teclado númerico, también se marcan los números que estan en el Form, es decir en la interfaz que también tiene los numeros, entonces ejecuto la aplicación, introduzco un número, luego introduzco la operación, luego otro número, y presiono Enter entonces me introduce el 2do. número que marque ya que este todavia se encuentra presionado debido al código...
El código para presionar los números y que se muestre también en la interfaz es:
Código Delphi [-]
procedure TForm1.OnClick(Sender: TButton);
begin
  with (Sender as TButton) do
  begin
    Perform(WM_LBUTTONDOWN, MK_LBUTTON,0);
Sleep(100);
    Perform(WM_LBUTTONUP, MK_LBUTTON,0);
  end;
end;
Eliminando ese código y dejando solo el de Enter funciona de maravilla, el problema principal no era el acompañamiento de la tecla Enter, sino que al apretar Shift se ignoraba lo anterior dejando como tecla principal el Enter... de ahi que tenia que venir acompañada la señorita, jeje...

Fue cuando se me ocurrio la peor solución de todas, implementar un código que mantega la tecla Shift presionada, lo pongo justo debajo del código que puse arriba...
Código Delphi [-]
keybd_event(VK_SHIFT, 0, 0, 0);
Sleep(500);
Efectivamente funciona durante ese lapso de tiempo, pero no solo con la aplicación sino en todo, me abre dos Delphi, y me abre dos navegadores y cada vez que doy click a algo lo vuelve a abrir, jaja, se vuelve loco todo, estas cosillas que uno aprende en el camino...

Entonces amigos(as), como le puedo hacer, jeje, esta medio complicado esto, o a ese código como le hago pero que funcione solo en la aplicación, ya que si quito el tiempo, entonces permanece activo siempre, complicado para mi, el novato, jeje...

Bueno muchas gracias, de paso alguien me indica que le aumento a ese primer código para que deje las teclas como sino se hubieran presionado y también como hacer para forzar que se presione la tecla Enter sin importar que otra tecla este activa, si se puede claro...

Muchas gracias en verdad...


La franja horaria es GMT +2. Ahora son las 00:44:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi