Здравствуйте, Diouzshev, Вы писали:
D>Hello, tim_!
D>You wrote on Tue, 23 Dec 2003 10:23:11 GMT:
t>> Что самое интересное, так это то, что ошибка обращения по адресу
t>> происходит внутри собственного обработчика события, где, как казалось
t>> бы, переменная уже должна была быть правильно инициализирована.
D>не должна. С чего бы это переменная обязательно должна указывать на объект?
D>По сути получается так, что в методе FormShow класса TfrmOperPlan используется переменная ( frmOperPlan.Height := 162;) которая к классу толком-то и отношения не имеет...
Вот в том-то и дело, что переменная не имеет совершенно никакого отношения к классу, а по сути является лишь указателем. Я лишь сказал, что (выражаясь более примитивно) frmOperPlan := nil или frmOperPlan := TfrmOperPlan(Random(MaxInt)) ну и т. д.

вызовет ту же ошибку в обработчике.
D>Что мешает программисту сделать так:
D>D>var
D> FRM : TfrmOperPlan;
D>begin
D> FRM := TfrmOperPlan.Create(Application);
D> FRM.FormShow(nil);
D>end;
D>
D>и что по твоему сделает вышеприведенное присваивание?
D>Правильно, AV, если, конечно, frmOperPlan не инициализирована. Если инициализирована, то соответственно значение будет присвоено другому объекту, а вовсе не тому на который ссылается переменная FRM.
При чем тут ваш пример?! Sender в прилагаемом коде вообще не используется. Речь шла о переменной frmOperPlan!
t>> Ну а все, что нужно сделать вам, уважаемый Magic, так это выяснить
t>> как случается так, что вызов события объекта происходит до создания
t>> его экземпляра или после его уничтожения.
D>Уважаемуму Magic нужно перестать использовать левые переменные внутри методов класса, без особой на это надобности, что он, судя по всему, уже понял.
D>With best regards, Alexander Diouzshev-Maltsev.