![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компилятор говорит, что нет таймера
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 нужно создать этот таймер, иначе откуда ему взяться.