Форум: "Основная";
Текущий архив: 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.043 c