Ver la Versión Completa : Saber cuando una tecla sigue pulsada
angelmsf
04-09-2008, 12:54:41
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?
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.
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
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 te funcione:
bueno espero y este codigo te funcione
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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.