Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Компилятор говорит, что нет таймера


TStas ©   (2005-07-21 19:19:00) 

Написал объект, как просто объект он отлично работает. Это потомок метки, только текст в ней бежит. Решил попробовать сделать из него компонент. Делал все, вроде, по Фленову.
Сохранил в отдельной папке, так компилятор говорит, что ему незнаком TTimer. Проверил, Таймер живет в ExtCtrls, который подключен. Что же ему не нравится?

Компонет хотел сделать для пробы.

uses
 SysUtils, Classes, Controls, StdCtrls, ExtCtrls;

type
 TRunningString = class(TLabel)
 private
   { Private declarations }
 FTimer:TTimer;
   FText: String;  //Текст, который и будет бежать
   FTextLength: Byte; //Длинна бегущего текста
   FTextVelosity: Byte; //Букв в секунду
   procedure SetText(const Value: String);
   procedure SetTextLength(const Value: Byte);
   procedure SetTextVelosity(const Value: Byte);
   procedure Move(Sender:TObject);
 protected
   { Protected declarations }
 public
   { Public declarations }
 constructor Create(AOwner:TComponent); override;
 destructor Destroy; override;
 procedure RunText; //Запускает бег текста
 procedure StopText; //Останавливает текст
 published
   { Published declarations }
 property Text:String read FText write SetText;
 property TextLength:Byte read FTextLength write SetTextLength;
 property TextVelosity:Byte read FTextVelosity write SetTextVelosity;
 
 
end;


TStas   (2005-08-04 21:05:00) [1]

Писал, конечно, с нуля сам, да там просто все. Ошибку нашел и она глупейгая просто. Когда добавлял компонет, он добавился, но как CLX ну и оттуда остальное.


Antonn   (2005-08-04 06:40:00) [2]


> (csDesigning in ComponentState) у меня не было
> написано в Create

я бы добавил. по крайней мере в Дизайн тайме таймер не появлялся бы, а создавался "уже в екзешнике".

И вообще, сам с нуля компонент делал? может это чей то проект, и там в try..except стоит messagedlg('Нет таймера',mterror,[mbOK],0). Обработчик OnTimer покажи.


TStas   (2005-08-04 02:06:00) [3]

Вот что и интеренсно. Если пользоваться кодом, как обычным объектом, т. е. создавать программно, он работает, разумеется, что и таймер создается. Может, я что-то не правильно делал, когда добавлял его как компонент, но на форме в дизайн тайме он появлялся, но при запуске программы компилятор ругался, что таймера нет.
(csDesigning in ComponentState) у меня не было написано в Create


Antonn   (2005-08-03 13:49:00) [4]

Ilg   (03.08.05 13:04) [4]
думаю еще можно при создании делать так:

if not (csDesigning in ComponentState) then begin
    FTimer:=TTimer.Create(nil);
    FTimer.Interval := 333;
    FTimer.Enabled := false;
    FTimer.OnTimer := OnTimerrrrr;
  end;


Ilg   (2005-08-03 13:04:00) [5]

Действительно, надо в Create его создать и задать свойства.
Типа:
constructor TrunningString.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FTimer:=TTimer.Create;
FTimer.Interval:=500;
...

end;

destructor TrunnigString.Destroy;
begin
FTimer.free;
inherited Destroy;
end;


2tesseract:
У него в Private есть таймер FTimer - посмотри внимательней (самая первая декларация)


Джо   (2005-07-24 02:48:00) [6]

TStas ©   (21.07.05 19:19)
> Компилятор говорит, что нет таймера

Где и как говорит? В том куске кода, что ты привел (интерфейс класса), все OK.


tesseract   (2005-07-23 20:12:00) [7]

У тебе в описании компонента нет никакого таймера.
в private добавь MyTimer:Ttimer

в
constructor TrunningString.Create;
begin
 inherited Create;
 MyTimer:=TTimer.Create;

end;

destructor TrunnigString.Destroy;
begin
MyTimer.free;
inherited Destroy;
end;


DimaBr   (2005-07-22 19:16:00) [8]

Думаю, что в Create нужно создать этот таймер, иначе откуда ему взяться.


Наверх

Титульная страница Поиск, карта сайта Написать письмо