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

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

Как найти все созданные формы ? Перечислить. [D7, WinXP]


Dreamse ©   (2007-07-03 05:13:00) 

Создаю динамически формы

form:=TNewForm.create(nil);

Сколько форм создано неизвестно, так же неизестно их название. Известен только клас TNewForm

Что нужно : Уничтожить все созданные формы т.е form.free;

Как осуществить ? Если не известно сколько форм создано.


Плохиш   (2007-07-03 13:14:00) [1]


> Инс ©   (03.07.07 12:26) [14]

Ну всё ясно...


Инс   (2007-07-03 12:26:00) [2]


> А пост sniknik-а читал? Обдумал?


А пост [10] внимательно читал? Обдумал? ;)


Anatoly Podgoretsky   (2007-07-03 12:26:00) [3]


> А пост sniknik-а читал? Обдумал?

Ну это особая провокация


Инс   (2007-07-03 12:24:00) [4]


> И AV не боишься?


Я ничего не боюсь, ибо такой хренью не страдаю, а кому надо - сам пошевелит мозгами.


Плохиш   (2007-07-03 12:24:00) [5]


> Инс ©   (03.07.07 12:21) [10]
>
> > [7] ЮЮ ©   (03.07.07 11:56)
>
>
> +1.

А пост sniknik-а читал? Обдумал?


Инс   (2007-07-03 12:21:00) [6]


> [7] ЮЮ ©   (03.07.07 11:56)


+1. FormsCount - 1, если для кого-то это не очевидно.


> т.е form.free;

А почему именно Free. Можно Release и все будет тип-топ ;)


Anatoly Podgoretsky   (2007-07-03 12:21:00) [7]

> Инс  (03.07.2007 11:46:06)  [6]

И AV не боишься?


Anatoly Podgoretsky   (2007-07-03 12:19:00) [8]

> Dreamse  (03.07.2007 05:13:00)  [0]

Что за формы, для чего они нужны, для чего нужна переменная form?


sniknik   (2007-07-03 12:01:00) [9]

> и Acess Violation на последнем шаге цикла :)
раньше... т.к.
> Что нужно : Уничтожить все созданные формы т.е form. free;
будет использовано в деструкторе
 for i:=0 to Screen.FormsCount do
   Screen.Forms[i]. Free;


ЮЮ   (2007-07-03 11:56:00) [10]

> [6] Инс ©   (03.07.07 11:46)
> for i:= 0to Screen. FormsCountdo
> Screen.Forms[i]


и Acess Violation на последнем шаге цикла :)
P.S. И зачем твои буквы после правильного ответа?


Инс   (2007-07-03 11:46:00) [11]

for i:=0 to Screen.FormsCount do
 Screen.Forms[i]


Плохиш   (2007-07-03 11:36:00) [12]

Скока многа букав надолбили после правильного ответа, что придётся его повторить :-)

> TUser ©   (03.07.07 07:00) [1]
> Screen.Forms


Desdechado   (2007-07-03 10:52:00) [13]

> Сколько форм создано неизвестно, так же неизестно их название.
А что мешает запоминать указатели на них? И что мешает давать им названия? Ведь ты их создаешь, тебе и карты в руки.
А то звучит так: "Пришел я на пляж, насобирал камней и рассыпал их вокруг. Какие же мои?"

SlymRO ©   (03.07.07 10:37) [3]
Имхо, некошерно это. Не должен конструктор-деструктор знать о каких-то внешних списках. Вот в обработчики создания/удаления можно вставить, но тоже не гуд, имхо.


SlymRO   (2007-07-03 10:37:00) [14]

в TNewForm.Create добавлять себя в определенный список
в TNewForm.Destroy удалять себя из списка...


Amoeba   (2007-07-03 10:26:00) [15]


> form:=TNewForm.create(nil);

Нехорошо так делать. Какой-такой скрытый смысл в намеренном отсутствии владельца, какая цель этим преследуется?

В твоем случае может быть целесообразным помещать это неизвестное число форм в TObjectList: тогда все они всегда будут доступны, и их количество всегда будет известно.


TUser   (2007-07-03 07:00:00) [16]

Screen.Forms

Создавай их через Application.CreateForm, или во всяком случае Application - владельцем.


Наверх

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