Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Bonivur



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
 
unit FarWatchClock;
 
interface
 
uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls, DateUtils;
 
 
type
  TWatchView = (wvClock, wvInterval, wvClockInterval,
                 wvIntClock, wvClockIntClock);
 
type
  TFarWatchClock = class(TCustomLabel)
  private
    FInterval: Integer;
    FOnWatchTime: TNotifyEvent;
    FTimer: TTimer;
    FWatchTime: TDateTime;
    FWatchView: TWatchView;
    procedure SetInterval(Value: Integer);
    procedure SetWatchTime(Value: TDateTime);
    procedure SetWatchView(Value: TWatchView);
  protected
    procedure Timer(Sender: TObject); // ВОТ ЭТА ПРОЦЕДУРА
  public
    constructor Create(AOwner : TComponent); override;
    procedure Paint; override;
  published
    property Align;
    property Color;
    property Font;
    property Interval: Integer read FInterval write SetInterval;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnMouseMove;
    property OnWatchTime: TNotifyEvent read FOnWatchTime write FOnWatchTime;
    property ParentColor;
    property ParentFont;
    property ParentShowHint;
    property ShowHint;
    property Visible;
    property WatchTime: TDateTime read FWatchTime write SetWatchTime;
    property WatchView: TWatchView read FWatchView write SetWatchView;
  end;
 
 
procedure Register;
 
implementation
 
 
procedure Register;
begin
  RegisterComponents('Samples',[TFarWatchClock]);
end;
 
{
******************************************************** TFarWatchClock ********************************************************
}
constructor TFarWatchClock.Create(AOwner : TComponent);
begin
  inherited;
  FTimer := TTimer.Create(Self);
  FTimer.OnTimer := Timer;
  FTimer.Enabled := True;
  Caption := TimeToStr(Time);
end;
 
procedure TFarWatchClock.Paint;
var
  S: string;
begin
  inherited;
  S := TimeToStr(Time);
  if FWatchTime <> 0 then
  begin
    FInterval := SecondsBetween(Time, FWatchTime);
    case FWatchView of
    wvInterval: S:= Format ('%Sc',[FloatToStrF(FInterval,ffNumber,15,0)]);
    wvClockInterval: S:= Format ('%S  %Sc',[S, FloatToStrF(FInterval,ffNumber,15,0)]);
    wvIntClock: S:=TimeToStr(FWatchTime - Time);
    wvClockIntClock: S:=Format('%S  %S',[S, TimeToStr(FWatchTime - Time)]);
 
    end;
  end;
 
  Caption:=S;
end;
 
procedure TFarWatchClock.SetInterval(Value: Integer);
begin
  if Value<>FInterval then
  begin
    FInterval := Value;
      if Value = 0 then
        FWatchTime := 0
      else
        FWatchTime := Time + Value / (24 * 3600);
    Invalidate;
 
  end;
end;
 
procedure TFarWatchClock.SetWatchTime(Value: TDateTime);
begin
  if Value <> FWatchTime then
  begin
    FWatchTime := Value;
    Invalidate;
  end;
end;
 
procedure TFarWatchClock.SetWatchView(Value: TWatchView);
begin
  if Value <> FWatchView then
  begin
    FWatchView := Value;
    Invalidate;
  end;
end;
 
procedure TFarWatchClock.Timer(Sender: TObject);
begin
  if FInterval > 0 then Dec(FInterval);
  Invalidate;
 
  if (TimeToStr(Time)=TimeToStr(FWatchTime)) and (Assigned(FOnWatchTime)) then
  begin
    FOnWatchTime(Self);
    Interval := 0;
  end;
end;
 
 
initialization
end.
 

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 12:02 07-09-2012
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru