Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 17-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Poné en un form un TTimer un TProgressBar y un TLabel y probá si este código hace más o menos lo que buscas:
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    ProgressBar1: TProgressBar;
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    FLapsoIni: Int64;
    FDTIni: TDateTime;
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

uses DateUtils;

function ObtenerLapso(const Ini,Fin: TDateTime): Int64;
var
  h,m,s: Word;
begin
  h:= 0;
  if DaysBetween(Ini,Fin) > 0 then
    h:= DaysBetween(Ini, Fin) * 24;
  h:= h + HourOf(Ini - Fin);
  m:= MinuteOf(Ini - Fin);
  s:= SecondOf(Ini - Fin);
  Result:= h*3600+m*60+s;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
{ Aca tendrías que asignar a FDTIni los valores de los SpinEdits,
  para simplificar el ejemplo lo asigno directamente sumando 2 minutos }
  FDTIni:= IncMinute(Now, 2); //  sumo 2 minutos
  FLapsoIni:= ObtenerLapso(Now, FDTIni); // Obtener lapso inicial
  Timer1.Enabled:= False;
  Timer1.Interval:= 1000;
  ProgressBar1.Max:= FLapsoIni;
  ProgressBar1.Step:= 1;
  Timer1.Enabled:= True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  LapsoAct: Int64;
begin
  LapsoAct:= ObtenerLapso(Now, FDTIni); // Obtener estado actual
  ProgressBar1.StepIt;
  Label1.Caption:= Format('%3.0f %%',[100-LapsoAct/FLapsoIni*100]);
  if  LapsoAct <= 0 then
  begin
    Timer1.Enabled:= False;
    MessageBeep(MB_ICONEXCLAMATION);
  end;
end;

end.
Como verás las pruebas las hice con minutos, si usaba días u horas estaría más seguro, pero la respuesta hubiera llegado un poco tarde...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-05-2011 a las 08:04:52.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
porcentaje restante entre dos fechas - delphi amo3k OOP 6 13-02-2010 16:08:54
mostrar un porcentaje o progressbar rzf1983 Varios 8 25-10-2007 19:05:13
tiempo restante fedeloko Varios 3 30-11-2004 18:49:51
mostrar porcentaje con CGauge del texto de un Edit garth C++ Builder 3 26-03-2004 12:23:25
Matemáticas: Calcular porcentaje DarkByte Varios 9 01-02-2004 17:42:08


La franja horaria es GMT +2. Ahora son las 11:18:16.


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
Copyright 1996-2007 Club Delphi