Помощь - Поиск - Пользователи - Календарь
Полная версия: Компонент
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Egor Vladimirovich
Подскажите как сделать компонент системные часы?! Буду очень благодарен.Поиск юзал ни чего не нашел!
klem4
Нужно системное время выводить ? Скажем в кепшн формы ? Вот так:


Кидаешь на форму компонент 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.

Egor Vladimirovich
Спсибо klem4.
Что то вроде такого,но надо сделать свой компанент. Что бы его бросаешь но форму,жмеш Ф9 и сразу в окошке появлялось системное время,например использовать Tlabel. А твой компанент например можно увидеть в панели-закладке standart.
klem4
Зачем свой-то ... TTimer на вкладке System находится ...
Egor Vladimirovich
Цитата(klem4 @ 19.12.2006 16:23) *

Зачем свой-то ... TTimer на вкладке System находится ...

В этом и заключаеться задание,именно свой компанент!
klem4
Тоесть нужено создать и зарегистрировать в делфи свой собственный компонент (например наследник TLabel) который будет постоянно отображать системное время ?
Egor Vladimirovich
Цитата(klem4 @ 19.12.2006 22:41) *

Тоесть нужено создать и зарегистрировать в делфи свой собственный компонент (например наследник TLabel) который будет постоянно отображать системное время ?

Так точно! good.gif Поможешь?!
klem4
В общем примерно это должно выглядить вот так, но почему-то при запуске программы с такой компонентой возникает ошибка, хотя кодга в 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.
Egor Vladimirovich
Спасибо klem4! good.gif good.gif good.gif
klem4
Egor Vladimirovich , да незачто пока, не работает ведь ...
hiv
Цитата(klem4 @ 20.12.2006 19:58) *

Egor Vladimirovich , да незачто пока, не работает ведь ...

А что не работает?
К стати надо бы и деструктор переопределить...
destructor TTimerLabel.Destroy;
begin
fTimer.Enabled := false;
fTimer.Free;
inherited Destroy;
end;
klem4
Цитата
А что не работает?


hiv, а ты зарегистрировал компонент и в тестовой программе все ок ?
hiv
Вроде нашел последнее отличие моего варианта:
fTimer := TTimer.Create(Self);

PS: У меня все ок, только не регится в группе Standard (вернее регится но не показывается в списке), в любой со своим названием без проблем...
klem4
Цитата
fTimer := TTimer.Create(Self);


Вот оно smile.gif Я тоже хотел сделать именно это по задумке но не знал что написать, пробовал this но такого нет, а надо было self

yes2.gif
Egor Vladimirovich
Цитата(klem4 @ 21.12.2006 15:24) *

Вот оно smile.gif Я тоже хотел сделать именно это по задумке но не знал что написать, пробовал this но такого нет, а надо было self

yes2.gif

klem4 от вашего первого варианта нашел как запустить,на форме появлялся сам клмпанент Ttimer(часики)!.Удалил эти часы,все откомпилировалось. thx за помощь!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.