Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

Как обратится к компоненту созданному через 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
2-1233348637
Тимоха
2009-01-30 23:50
2009.03.29
класс TThread и api


15-1232646153
AlexDan
2009-01-22 20:42
2009.03.29
Простые числа и пятница.


15-1232421567
Slider007
2009-01-20 06:19
2009.03.29
С днем рождения ! 20 января 2009 вторник


4-1207047506
kolj
2008-04-01 14:58
2009.03.29
Tapi -> CallBackFunction


2-1233934102
SashaNikulin
2009-02-06 18:28
2009.03.29
Помогите решить простую задачу! SOS!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский