Подскажите как сделать компонент системные часы?! Буду очень благодарен.Поиск юзал ни чего не нашел!
Нужно системное время выводить ? Скажем в кепшн формы ? Вот так:
Кидаешь на форму компонент TTimer
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 1000; // 1c
Timer1.Enabled := true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Caption := FormatDateTime('hh:mm:ss', Now);
end;
end.
Спсибо klem4.
Что то вроде такого,но надо сделать свой компанент. Что бы его бросаешь но форму,жмеш Ф9 и сразу в окошке появлялось системное время,например использовать Tlabel. А твой компанент например можно увидеть в панели-закладке standart.
Зачем свой-то ... TTimer на вкладке System находится ...
Тоесть нужено создать и зарегистрировать в делфи свой собственный компонент (например наследник TLabel) который будет постоянно отображать системное время ?
В общем примерно это должно выглядить вот так, но почему-то при запуске программы с такой компонентой возникает ошибка, хотя кодга в Design mode кидаю этот лейбл на форму он уже начинает отображать текущее время, а вот при запуске программы выдает class TTimer not found ... Что не верно ?
unit TimerLabel;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls,
ExtCtrls;
type
TTimerLabel = class(TLabel)
private
fTimer: TTimer;
protected
procedure MyOnTimer(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('klem4', [TTimerLabel]);
end;
constructor TTimerLabel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fTimer := TTimer.Create(AOwner);
fTimer.OnTimer := MyOnTimer;
fTimer.Interval := 1000;
fTimer.Enabled := true;
end;
procedure TTimerLabel.MyOnTimer(Sender: TObject);
begin
Caption := FormatDateTime('hh:mm:ss', Now);
end;
end.
Спасибо klem4!
Egor Vladimirovich , да незачто пока, не работает ведь ...
destructor TTimerLabel.Destroy;
begin
fTimer.Enabled := false;
fTimer.Free;
inherited Destroy;
end;
Вроде нашел последнее отличие моего варианта:
fTimer := TTimer.Create(Self);