Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber cuando una tecla sigue pulsada (https://www.clubdelphi.com/foros/showthread.php?t=59681)

angelmsf 04-09-2008 12:54:41

Saber cuando una tecla sigue pulsada
 
Hola a todos,

Me gustaria saber si alguien de ustedes me puede ayudar en saber como hago para saber cuando una tecla x se mantiene pulsada. Pues necesito que el programa me vaya cambiando de botones en el encabezado cuando mantengo alguna tecla x pulsada y cuando le suelto y no la presino constantemente pues me navegue en otros botones.

aguien me da una idea?

Caro 04-09-2008 13:16:00

Hola angelmsf, en tu formulario necesitas que la propiedad KeyPreview este en True, ahora digamos que tenemos 2 botones y si presionamos las teclas de fecha izquierda (<-) y flecha derecha (->) se mueva entre nuestros botones.

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 Case key of
  vk_left : Button1.SetFocus;
  vk_Right: Button2.SetFocus;
 end;
end;

Saluditos

angelmsf 04-09-2008 18:49:33

El asunto es saber cuando una tecla se ha dejado presionada por unos cuantos segundo.
 
Que tal [Caro],

El asunto no es tan sencillo, pues lo que quiero es saber cuando una tecla la dejas pulsada por unos cuantos segundos que el programa te mueva el foco a otro item, no es solo presionarla y ya.

es saber cuando una tecla se ha dejado presionada por unos cuantos segundo.

me entiendes ahora?

adeszeus 22-04-2010 01:36:27

Espero sea util
 
Espero te funcione:
bueno espero y este codigo te funcione
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Timer1: TTimer;
    procedure FormKeyDwn(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  tiempo:integer;
implementation

{$R *.dfm}

procedure TForm1.FormKeyDwn(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
timer1.Enabled:=true;// activamos el reloj
if key=vk_left then
  if tiempo>5 then
  begin
  showmessage('La tecla duro mas de 5 segundos oprimida');
  button1.SetFocus;
  tiempo:=0;
  timer1.Enabled:=false;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
tiempo:=0; //inicializamos la variable para contabilizar el tiempo
// el reloj tiene un intervalo de 1000 milisegundos
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
tiempo:=tiempo+1;// acumulamos el valor de tiempo
// donde desde que se creo vale 0

end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
tiempo:=0;
timer1.Enabled:=false;
// en caso de levantar la tecla pues la cuenta de reinicia y debemos de tener
// en cuenta que debemos detener el reloj
end;

end.


La franja horaria es GMT +2. Ahora son las 08:48:03.

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