Форум: "Компоненты";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
ВнизКомпилятор говорит, что нет таймера Найти похожие ветки
← →
TStas © (2005-07-21 19:19) [0]Написал объект, как просто объект он отлично работает. Это потомок метки, только текст в ней бежит. Решил попробовать сделать из него компонент. Делал все, вроде, по Фленову.
Сохранил в отдельной папке, так компилятор говорит, что ему незнаком 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;
← →
DimaBr (2005-07-22 19:16) [1]Думаю, что в Create нужно создать этот таймер, иначе откуда ему взяться.
← →
tesseract © (2005-07-23 20:12) [2]У тебе в описании компонента нет никакого таймера.
в private добавь MyTimer:Ttimer
в
constructor TrunningString.Create;
begin
inherited Create;
MyTimer:=TTimer.Create;
end;
destructor TrunnigString.Destroy;
begin
MyTimer.free;
inherited Destroy;
end;
← →
Джо © (2005-07-24 02:48) [3]TStas © (21.07.05 19:19)
> Компилятор говорит, что нет таймера
Где и как говорит? В том куске кода, что ты привел (интерфейс класса), все OK.
← →
Ilg (2005-08-03 13:04) [4]Действительно, надо в 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 - посмотри внимательней (самая первая декларация)
← →
Antonn © (2005-08-03 13:49) [5]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;
← →
TStas © (2005-08-04 02:06) [6]Вот что и интеренсно. Если пользоваться кодом, как обычным объектом, т. е. создавать программно, он работает, разумеется, что и таймер создается. Может, я что-то не правильно делал, когда добавлял его как компонент, но на форме в дизайн тайме он появлялся, но при запуске программы компилятор ругался, что таймера нет.
(csDesigning in ComponentState) у меня не было написано в Create
← →
Antonn © (2005-08-04 06:40) [7]
> (csDesigning in ComponentState) у меня не было
> написано в Create
я бы добавил. по крайней мере в Дизайн тайме таймер не появлялся бы, а создавался "уже в екзешнике".
И вообще, сам с нуля компонент делал? может это чей то проект, и там в try..except стоит messagedlg("Нет таймера",mterror,[mbOK],0). Обработчик OnTimer покажи.
← →
TStas © (2005-08-04 21:05) [8]Писал, конечно, с нуля сам, да там просто все. Ошибку нашел и она глупейгая просто. Когда добавлял компонет, он добавился, но как CLX ну и оттуда остальное.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c