Fórum Teclas - Timer - Delphi #604142
01/08/2019
0
Como descubro a diferença de tempo apertado entre duas teclas?
Exemplo aperto a tecla 1 = Tempo ???
Aperto em seguida a Tecla 2 = tempo???
Resultado - Diferença do tempo = a ?????????
Obrigado
Trevis Souza
Curtir tópico
+ 0Post mais votado
05/08/2019
type
TForm5 = class(TForm)
LabelDiferenca: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FTeclaPressionada: Word;
FDataHoraPressinamento: TDateTime;
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TForm5.FormCreate(Sender: TObject);
begin
FTeclaPressionada := 0;
FDataHoraPressinamento := Now;
end;
procedure TForm5.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Horas, Minutos, Segundos, MSegundos: word;
begin
if FTeclaPressionada > 0 then
begin
DecodeTime(FDataHoraPressinamento - Now, Horas, Minutos, Segundos, MSegundos);
labelDiferenca.caption := 'Diferença entre os pressionamentos de '+Chr(FTeclaPressionada)+' e '+Chr(Key)+' foi de : '+IntToStr(Horas)+' horas, '+IntToStr(Minutos)+' minutos, '+IntToStr(Segundos)+ ' segundos e '+IntToStr(MSegundos)+' milésimos.';
end;
FDataHoraPressinamento := Now;
FTeclaPressionada := Key;
end;
end.OBSERVAÇÃO IMPORTANTE: para funcionar corretamente, a propriedade KeyPreview do form precisa estar como True.
Emerson Nascimento
Gostei + 1
Mais Posts
01/08/2019
William Maciel
Segue um pequeno exemplo.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lblDiferenca: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tmptime1 : TTime;
tmptime2 : TTime;
implementation
{$R *.dfm}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Hour, Min : Word;
Sec, MSec : Word;
begin
tmptime1 := tmptime2;
tmptime2 := time;
if (tmptime1 <> 0) and (tmptime2 <> 0) then
begin
DecodeTime(tmptime2-tmptime1,Hour,Min,Sec,MSec);
lblDiferenca.caption :='Diferença entre os pressionamentos foi de : '+IntToStr(Min)+' minutos '+IntToStr(Sec)+ ' segundos e '+IntToStr(Msec)+' milésimos.';
end;
end;
initialization
tmptime1 := 0;
tmptime2 := 0;
end.
Gostei + 0
05/08/2019
Trevis Souza
Segue um pequeno exemplo.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lblDiferenca: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tmptime1 : TTime;
tmptime2 : TTime;
implementation
{$R *.dfm}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Hour, Min : Word;
Sec, MSec : Word;
begin
tmptime1 := tmptime2;
tmptime2 := time;
if (tmptime1 <> 0) and (tmptime2 <> 0) then
begin
DecodeTime(tmptime2-tmptime1,Hour,Min,Sec,MSec);
lblDiferenca.caption :='Diferença entre os pressionamentos foi de : '+IntToStr(Min)+' minutos '+IntToStr(Sec)+ ' segundos e '+IntToStr(Msec)+' milésimos.';
end;
end;
initialization
tmptime1 := 0;
tmptime2 := 0;
end.
Obrigado
não funcionou bem.
Acho que deve ter faltado algum código para o Timer?
Consegue adaptar o código para trabalhar no evento Keyopress
usando as teclas 1 e 2
e calculando o tempo?
grato mais uma vez
Gostei + 0
19/08/2019
Trevis Souza
type
TForm5 = class(TForm)
LabelDiferenca: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FTeclaPressionada: Word;
FDataHoraPressinamento: TDateTime;
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TForm5.FormCreate(Sender: TObject);
begin
FTeclaPressionada := 0;
FDataHoraPressinamento := Now;
end;
procedure TForm5.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Horas, Minutos, Segundos, MSegundos: word;
begin
if FTeclaPressionada > 0 then
begin
DecodeTime(FDataHoraPressinamento - Now, Horas, Minutos, Segundos, MSegundos);
labelDiferenca.caption := 'Diferença entre os pressionamentos de '+Chr(FTeclaPressionada)+' e '+Chr(Key)+' foi de : '+IntToStr(Horas)+' horas, '+IntToStr(Minutos)+' minutos, '+IntToStr(Segundos)+ ' segundos e '+IntToStr(MSegundos)+' milésimos.';
end;
FDataHoraPressinamento := Now;
FTeclaPressionada := Key;
end;
end.OBSERVAÇÃO IMPORTANTE: para funcionar corretamente, a propriedade KeyPreview do form precisa estar como True.
Muito obrigado amigo!
Tudo ok!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)