![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вовремя исполнения Form:=nil [D7, WinXP]
Всилий © (2006-08-10 12:28:00)Не могу понять почему вовремя работы формы сама форма равна nil.
Unit1
procedure TForm1.btn_SomeClick(Sender: TObject);
begin
with Tfrm_Some.Create(Self) do
try
ShowModal;
finally
Free;
end;
end;
SomeFormUnit
procedure Tfrm_Some.ButtonClick(Sender: TObject);
begin
frm_Some.Width:=100; // AV, т.к. frm_Some:=nil
end;
В опциях проекта frm_Some - Available forms
MaxDAG (2006-08-10 13:27:00) [1]Не хотите, можете не писать
нагляднее так
Джо (2006-08-10 13:15:00) [2]> [5] MaxDAG © (10.08.06 13:10)
> Внутри создаваемой формы все ее свойства/методы ВСЕГДА меняй/вызывай
> через Self.ИзменяемоеСвойство:= Значение;
Категорично. Но зачем-же Self?
Kolan (2006-08-10 13:13:00) [3]
> Чтой-то вдруг так категорично - "всегда" ?)
Это из серии "делить на 0 недьзя" (ц)
Сергей М. (2006-08-10 13:12:00) [4]
> MaxDAG © (10.08.06 13:10) [5]
> ВСЕГДА меняй/вызывай через Self
Чтой-то вдруг так категорично - "всегда" ?)
MaxDAG (2006-08-10 13:10:00) [5]Для начала:
- объявить => frm_Some в области видимости TForm1
- потом "frm_Some:= Tfrm_SomeCreate(Self);" там, где и было задумано
Внутри создаваемой формы все ее свойства/методы ВСЕГДА меняй/вызывай через Self.ИзменяемоеСвойство:= Значение;
Сергей М. (2006-08-10 12:36:00) [6]Не туда смотришь.
В Auto-Create forms нужно искать свою форму.
К тому же ссылки на переменную frm_Some в телах Tfrm_Some-методов вредны и во многих случаях бесполезны/бессмысленны.
Плохиш (2006-08-10 12:33:00) [7]frm_Some - это не форма, а переменная типа типизированный указатель.
> procedure Tfrm_Some.ButtonClick(Sender: TObject);
> begin
> frm_Some.Width:=100; // AV, т.к. frm_Some:=nil
> end;
За такое вырываю руки без разговоров.
Ketmar (2006-08-10 12:33:00) [8]а чему ещё должны быть равна переменная? что-то я не заметил тут операции присваивания.
Desdechado (2006-08-10 12:33:00) [9]frm_Some.Width:=100;
перепиши
Width:=100;
или
Self.Width:=100;
есть подозрения, что в области видимости оказалась другая переменная с таким именем.