Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вовремя исполнения 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;

есть подозрения, что в области видимости оказалась другая переменная с таким именем.


Наверх

Титульная страница Поиск, карта сайта Написать письмо