Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Forma de escribir las teclas presionadas (https://www.clubdelphi.com/foros/showthread.php?t=23899)

YaninaGenia 01-08-2005 22:22:42

Forma de escribir las teclas presionadas
 
Hay una forma de escribir los nombres de algunas teclas, lo necesito para el evento onkeypress, en donde pondría
if (key = #13) then (#13 equivale a Enter)
Sabe alguno cual sería el número de la tecla Tab?

Yanina Genia

delphi.com.ar 01-08-2005 22:33:43

Entendí mal tu pregunta, simplemente te recomiendo utilizar las constantes a las que hace referencia lucasarts_18, definidas en la unit Windows:
Código Delphi [-]
  { Virtual Keys, Standard Set }
  ...   
  VK_TAB = 9;
  ...   
  VK_RETURN = 13;
  ...


Cita:

Empezado por delphi.com.ar.... Respuesta errónea
A ver si te gusta:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMKeyDown(var Message: TWMKeyDown);
var
  PBuff: PChar;
begin
  PBuff := StrAlloc(MAX_PATH);
  try
    GetKeyNameText(Message.KeyData, PBuff, MAX_PATH);
    Caption := PBuff;
  finally
    StrDispose(PBuff);
  end;
end;

end.

http://www.clubdelphi.com/foros/show...36&postcount=2

Saludos!

lucasarts_18 01-08-2005 22:37:42

Hola:

En la ayuda de delphi salen todas las teclas definidas como una constante.
Busca por constant key o algo similar.

Saludos.

RER 01-08-2005 22:42:34

hola: Intenta con #9

jorge1987 02-08-2005 03:42:49

Yo cuando programaba juegos, necesite saber como eran los botones, asi que un amigo me recomendo algo, y fue asi de sencillo, a un label en un formulario le pongo de caption el en el evento on key press lblteclas.caption := key, alguna duda solo pregunten.
Saludos :D:D

PD: este era mi programa:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label4.Caption := IntToStr(key);
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label5.Caption := IntToStr(key);
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Label6.Caption := Key;
end;

YaninaGenia 02-08-2005 14:06:30

Hola...
 
Es como si no tomara la tecla Tab como una tecla, ni siquiera entra en el evento onKeyPress!! Alguno sabe que pasa?

delphi.com.ar 02-08-2005 15:09:33

Mmm... Podrías darnos algo mas de info, por ejemplo: ¿El KeyPress de que control es el que estas capturando?... ¿Esta sobre un TForm standard?... ¿Este no tiene KeyPreview = True?...

Saludos!

YaninaGenia 02-08-2005 15:39:31

Si...
 
Es un form que no tiene nada raro, un par de campos a completar, pero en tiempo de ejecución tengo que cambiarlos de lugar, dependiendo desde donde se acceda. Al hacer esto, si se presiona la tecla "Tab", el cursor se va moviendo en el orden en que los edit fueron creados, o sea, del campo 1 se va al 3, luego al 4 y luego al 2.
Quiero evitar usar el setfocus en el evento "OnExit" de cada edit porque si por ejemplo estoy en el campo 3 y hago click con el mouse sobre el campo 1, se mueve al 4!!
Por eso para facilitarme la vida pensé usar el onkeypress para que no se confunda con el onClick y con el onExit (un quilombo).
Ahora, la cosa anda con el key = #13 (si el usuario toca Enter, OnKeyPress), pero no anda para la tecla Tab, es como si no la tomaba como tecla presionada.

delphi.com.ar 02-08-2005 16:03:32

Cita:

Empezado por YaninaGenia
Es un form que no tiene nada raro, un par de campos a completar, pero en tiempo de ejecución tengo que cambiarlos de lugar, dependiendo desde donde se acceda. Al hacer esto, si se presiona la tecla "Tab", el cursor se va moviendo en el orden en que los edit fueron creados, o sea, del campo 1 se va al 3, luego al 4 y luego al 2.

Cuando utilizas tab, el foco pasa de control en control no necesariamente por el orden de creación, sino por el TabOrder (orden de tabulación) que por defecto es igual al orden de creación de los componentes que aceptan foco.
Si te fijas en los componentes, los que aceptan foco tienen la propiedad TabOrder que es el índice de tabulación y TabStop que indica si acepta o no foco de la tabulación. Si querés ordenarlo en forma sencilla, haces click derecho sobre el form o sobre un contenedor, te sale un menú desplegable donde tenes la opción "Tab Order" y ahí podes mover el orden de tabulación en forma visual. Es bueno tener en cuenta que cada contenedor (control que puede contener visualmente otros controles) tiene su propio TabOrder.



Cita:

Empezado por YaninaGenia
Por eso para facilitarme la vida pensé usar el onkeypress para que no se confunda con el onClick y con el onExit (un quilombo).
Ahora, la cosa anda con el key = #13 (si el usuario toca Enter, OnKeyPress), pero no anda para la tecla Tab, es como si no la tomaba como tecla presionada.

En el KeyPress no vas a poder obtener el Tab:
Código Delphi [-]
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_TAB) and ((Shift = []) or (Shift = [ssShift])) then
    Caption := 'KeyUp' + IntToStr(GetTickCount);
end;

Saludos!

YaninaGenia 02-08-2005 16:59:39

Anduvo!!
 
Gracias Delphi, anduvo bien lo de TabOrder, era lo que me tocaba aprender hoy!!

Yanina Genia


La franja horaria es GMT +2. Ahora son las 12:03:06.

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