Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Как обратится к компоненту созданному через TCustomControl   Найти похожие ветки 

 
denmin   (2008-04-14 15:47) [0]

Пример...

При попытке остановить Timer из Button1 вылетает ошибка EAccessViolation.

Подскажите пожалуйста, как можно решить данную проблему...

type
 TMyControl = class(TCustomControl)
   private
     Timer1: TTimer;
     procedure Timer1Timer(Sender: TObject);
   public
     constructor Create(AOwner: TComponent); override;
 end;

Var
 MyControl : TMyControl;

constructor TMyControl.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 Timer1 := TTimer.Create(Self);
 Timer1.Interval := 5000;
 Timer1.OnTimer := Timer1Timer;
end;

procedure TMyControl.Timer1Timer(Sender: TObject);
begin
 showmessage("1");
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TMyControl.Create(nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//!!!! Выдается ошибка !!!
 MyControl.Timer1.Enabled:= False;
end;


 
Anatoly Podgoretsky ©   (2008-04-14 15:50) [1]

> denmin  (14.04.2008 15:47:00)  [0]

Проблема в MyControl.глобальная переменная, ничем не защищена.


 
tesseract ©   (2008-04-14 15:51) [2]


>  inherited Create(AOwner);  
> Timer1 := TTimer.Create(Self);


А таймер после уничтожения объекта точно уничтожиться ?


> //!!!! Выдается ошибка !!!  MyControl.Timer1.Enabled:= False;


MyСontrol:= TMyControl.Create(nil);


 
tesseract ©   (2008-04-14 15:52) [3]


> Проблема в MyControl.глобальная переменная, ничем не защищена.


В неё значение от TMycontrol.Create не записываеться.


 
denmin   (2008-04-14 15:59) [4]

Спасибо большое tesseract ©

> MyСontrol:= TMyControl.Create(nil);

помогло...


 
tesseract ©   (2008-04-14 16:00) [5]


> помогло...


Разбивать объекты не забудь - утечка будет нехилая.


 
Anatoly Podgoretsky ©   (2008-04-14 16:32) [6]

> tesseract  (14.04.2008 15:51:02)  [2]

Ну вот продал секрет


 
Anatoly Podgoretsky ©   (2008-04-14 16:33) [7]

> denmin  (14.04.2008 15:59:04)  [4]

Это временно, глобальность ты так и не убрал.


 
tesseract ©   (2008-04-14 16:34) [8]


> Это временно, глобальность ты так и не убрал.


Да там он половину не убрал. Таймер не разрушиться, сам компонент тоже. Глобальность тут - наиментшее из всех зол ИМХО.


 
evvcom ©   (2008-04-14 16:38) [9]


> Anatoly Podgoretsky ©   (14.04.08 16:33) [7]

Думаю, автор еще не догадывается, что экземпляров TForm1 можно создать более одного. До такой попытки ошибка не проявится, можно быть спокойным :)


 
MsGuns ©   (2008-04-14 16:54) [10]

Чисто спортивный интерес - зачем для того, чтобы создать простой таймер, надо непременно вместе  с ним соорудить еще некий таинственный объект-"обертку" MyControl ?


 
Anatoly Podgoretsky ©   (2008-04-15 12:16) [11]

> tesseract  (14.04.2008 16:34:08)  [8]

Намекаешь - переписать все нафиг.


 
tesseract ©   (2008-04-15 13:54) [12]


> Намекаешь - переписать все нафиг.


Намекаю почитать что - нибудь :-)



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
11-1198575794
vastani
2007-12-25 12:43
2009.03.29
Прошу учесть и исправить ошибку в компоненте KOLHTTPDownload


3-1215762007
Viod
2008-07-11 11:40
2009.03.29
Stream and AdoCommand


15-1232851838
Vjik
2009-01-25 05:50
2009.03.29
Очень важные сообщения


2-1233959281
GrieVeR-13
2009-02-07 01:28
2009.03.29
Цвета элементов на форме


6-1201601068
Maloj2007
2008-01-29 13:04
2009.03.29
Отправка пакетов