Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
ВнизКак найти все созданные формы ? Перечислить. Найти похожие ветки
← →
Dreamse (2007-07-03 05:13) [0]Создаю динамически формы
form:=TNewForm.create(nil);
Сколько форм создано неизвестно, так же неизестно их название. Известен только клас TNewForm
Что нужно : Уничтожить все созданные формы т.е form.free;
Как осуществить ? Если не известно сколько форм создано.
← →
TUser © (2007-07-03 07:00) [1]Screen.Forms
Создавай их через Application.CreateForm, или во всяком случае Application - владельцем.
← →
Amoeba © (2007-07-03 10:26) [2]
> form:=TNewForm.create(nil);
Нехорошо так делать. Какой-такой скрытый смысл в намеренном отсутствии владельца, какая цель этим преследуется?
В твоем случае может быть целесообразным помещать это неизвестное число форм в TObjectList: тогда все они всегда будут доступны, и их количество всегда будет известно.
← →
SlymRO © (2007-07-03 10:37) [3]в TNewForm.Create добавлять себя в определенный список
в TNewForm.Destroy удалять себя из списка...
← →
Desdechado © (2007-07-03 10:52) [4]> Сколько форм создано неизвестно, так же неизестно их название.
А что мешает запоминать указатели на них? И что мешает давать им названия? Ведь ты их создаешь, тебе и карты в руки.
А то звучит так: "Пришел я на пляж, насобирал камней и рассыпал их вокруг. Какие же мои?"
SlymRO © (03.07.07 10:37) [3]
Имхо, некошерно это. Не должен конструктор-деструктор знать о каких-то внешних списках. Вот в обработчики создания/удаления можно вставить, но тоже не гуд, имхо.
← →
Плохиш © (2007-07-03 11:36) [5]Скока многа букав надолбили после правильного ответа, что придётся его повторить :-)
> TUser © (03.07.07 07:00) [1]
> Screen.Forms
← →
Инс © (2007-07-03 11:46) [6]for i:=0 to Screen.FormsCount do
Screen.Forms[i]
← →
ЮЮ © (2007-07-03 11:56) [7]> [6] Инс © (03.07.07 11:46)
> for i:=0 to Screen.FormsCount do
> Screen.Forms[i]
и Acess Violation на последнем шаге цикла :)
P.S. И зачем твои буквы после правильного ответа?
← →
sniknik © (2007-07-03 12:01) [8]> и Acess Violation на последнем шаге цикла :)
раньше... т.к.
> Что нужно : Уничтожить все созданные формы т.е form.free;
будет использовано в деструкторе
for i:=0 to Screen.FormsCount do
Screen.Forms[i].Free;
← →
Anatoly Podgoretsky © (2007-07-03 12:19) [9]> Dreamse (03.07.2007 05:13:00) [0]
Что за формы, для чего они нужны, для чего нужна переменная form?
← →
Инс © (2007-07-03 12:21) [10]
> [7] ЮЮ © (03.07.07 11:56)
+1. FormsCount - 1, если для кого-то это не очевидно.
> т.е form.free;
А почему именно Free. Можно Release и все будет тип-топ ;)
← →
Anatoly Podgoretsky © (2007-07-03 12:21) [11]> Инс (03.07.2007 11:46:06) [6]
И AV не боишься?
← →
Инс © (2007-07-03 12:24) [12]
> И AV не боишься?
Я ничего не боюсь, ибо такой хренью не страдаю, а кому надо - сам пошевелит мозгами.
← →
Плохиш © (2007-07-03 12:24) [13]
> Инс © (03.07.07 12:21) [10]
>
> > [7] ЮЮ © (03.07.07 11:56)
>
>
> +1.
А пост sniknik-а читал? Обдумал?
← →
Инс © (2007-07-03 12:26) [14]
> А пост sniknik-а читал? Обдумал?
А пост [10] внимательно читал? Обдумал? ;)
← →
Anatoly Podgoretsky © (2007-07-03 12:26) [15]
> А пост sniknik-а читал? Обдумал?
Ну это особая провокация
← →
Плохиш © (2007-07-03 13:14) [16]
> Инс © (03.07.07 12:26) [14]
Ну всё ясно...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c