![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как найти все созданные формы ? Перечислить. [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 - владельцем.