![]() |
|
|
#1
|
|||
|
|||
|
Многоуважаемые форумчане, высококлассные программисты и просто хорошие люди!.. Сегодня понедельник, (хотя это никакого отношения к делу не имеет), хотелось бы узнать как провернуть одно дело, а точнее - два дела...
Дело первое : динамически создаем энное количество форм.., ладно с этим справился. При клике на определенную буттону, появляется новая форма с порядковый номером в caption. Дальше - всё несколько сложнее... Дело второе : при определенных условиях какая-то из форм должна тихо и мирно завершить своё бренное существование, т.е. быть попросту закрыта. Так вот, как закрыть из двадцати форм, скажем, девятую? Если будет у кого время, обратите ваш взор на мою проблему. Заранее благодарю. Буду ждать ответ. |
|
#2
|
||||
|
||||
|
Все зависит от того как ты их создавал.
|
|
#3
|
|||
|
|||
|
создавал я их вот таким не хитрым способом
form5:= TForm5.Create(Application); form5.caption:= inttostr(number); form5.show; |
|
#4
|
||||
|
||||
|
Код:
... Form9.Free; // или Form9.Destroy; ... |
|
#5
|
|||
|
|||
|
Цитата:
ну я написал как я их создавал, и что ? |
|
#6
|
|||
|
|||
|
Цитата:
![]() Последний раз редактировалось RobinStone, 26.05.2014 в 09:44. |
|
#7
|
||||
|
||||
|
Код:
with FormX do if Caption:= '9' then Free; З.Ы. А кстати, нужно закрыть (Form.Close) или уничтожить (Form.Free)? - при первом варианте форма скрывается оставаясь в АП сборки, а во втором она разрушается и к ней доступ прекращается, для повторного вызова её нужно снова создавать |
|
#8
|
|||
|
|||
|
Цитата:
дааа, видимо мои познания в среде делфи ниже чем я думал. Но уж коли Вы всё ж упорно решили мне помочь, (за что Вам отдельное спасибо), так помогайте уже и до конца. Поясняю задачу : можно код и не писать, просто объясните на пальцах, как система видит созданные формы? Как к ним можно обратиться, зная только их caption, ну или каким другим способом? Ещё раз спс за Ваше терпение ![]() |
|
#9
|
|||
|
|||
|
У объекта Screen есть свойство Forms и FormCount. В списке Forms находятся все созданные в приложении формы.
Код:
for i:=Screen.FormCount-1 downto 0 do begin
if Screen.Forms[i] проверка чего-нибудь, например Caption='9'
then
Screen.Forms[i].Free
end |
| Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
RobinStone (26.05.2014)
| ||
|
#10
|
|||
|
|||
|
Просто громаднейшее Вам спасибо. Вы просто не представляете как мне помогли
, блин, мог бы - денег бы выслал , ещё раз - громаднейшее спс. И извините, что так путано объяснял что мне нужно. ![]() |
|
#11
|
||||
|
||||
|
В добавок функция FindWindow возвращает хендл окна с указанным заголовком
|