Ver Mensaje Individual
  #9  
Antiguo 03-04-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ZaneMS,

Cita:
Empezado por ZaneMS
...Necesito crear un temporizador que se active cuando pulse un botón y me cuente cuantos segundos estoy pulsando el botón hasta que lo suelte y me lo guarde en una variable con el tiempo que he estado pulsándolo (no tiene por qué ser segundos)...
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Frequency, Start, Stop: Int64;

implementation

{$R *.dfm}

// Inicio de Conteo de Tiempo (Pulsa el botón del Mouse)
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   QueryPerformanceFrequency(Frequency);
   QueryPerformanceCounter(Start);
end;

// Fin de Conteo de Tiempo (Libera el botón del Mouse)
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

var
   Hours, Minutes, Seconds, Milliseconds : Int64;
   TotalTime : TDateTime;
   TimeLapse : String;

begin

   QueryPerformanceCounter(Stop);

   // Calculo del Tiempo Total del Proceso expresado en Milisegundos
   Milliseconds := (Stop-Start) * 1000 div Frequency;

   // Conversión de Milisegundos a Horas, Minutos, Segundos y el resto en Milisegundos
   Hours := Milliseconds div (1000*60*60);
   Minutes := Milliseconds mod (1000*60*60) div (1000*60);
   Seconds := Milliseconds mod (1000*60*60) mod (1000*60) div 1000;
   Milliseconds := Milliseconds mod (1000*60*60) mod (1000*60) mod 1000;

   // Conversión de las variables de tiempo a TDateTime
   TotalTime := EncodeTime(Hours,Minutes,Seconds,Milliseconds);

   // Formateo del tiempo calculado
   TimeLapse := 'El Tiempo de Pulsación fue : ';
   TimeLapse := TimeLapse + FormatDateTime('hh:nn:ss:zzz', TotalTime);

   // Visualización del Tiempo Trascurrido
   MessageDlg(TimeLapse,mtInformation,[mbOK],0);

end;

end.
El código anterior permite registrar el tiempo de pulsación del botón del Mouse en formato HH:MM:SS:ZZZ.

Te sugiero revisar también este link:
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 03-04-2014 a las 00:17:11.
Responder Con Cita