![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Leklerk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Добрый день! Подскажите пожалуйста, как создать 2 экземпляра одной формы? Если писать
то компилятор ругается. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 2 Всего: 146 |
Пропиши переменную Form2 в Unit1.pas там где находится описание переменной Form1. В свойствах формы выстави Visible в true. И всё должно заработать.
А есть ещё второй способ создать форму:
|
|||
|
||||
| Leklerk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Спасибо за ответ!
|
|||
|
||||
| gesper |
|
||||||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Хочу немного иначе обьяснить ситуацию автору темы. Мне в свое время тоже так отвечали, и я долго тупил как работают формы, не понимая принципа классов и переменных. Может где то сбивчиво, но попробую.
Форма создается на основе базового класса TForm. Если нужна форма, то среда Delphi создает форму для тебя на основе этого класса и дает ему имя, в соответствии с именем которое ты дал форме. Если ты в свойствах формы назовешь ее FMyFirstForm, то зайдя в ее модуль (myfirstform.pas), ты увидешь в начале описание класса TFMyFirstForm. И далее на основе этого класса при запуске программа создает форму, когда видит команду
Это справедливо для одной копии, поскольку везде где прицеплен модуль твоей формы, есть доступ к переменной FMyFirstForm. Это просто переменная, в которой хранится адрес к доступу к твоей форме. Она своего рода глобальная. Если же тебе нужны в ходе работы одинаковые формы, то убираем выше приведенный способ создания формы и делаем вот так
Далее нужно понять, что ты будешь делать с ней. Если ты хочешь с ней поработать и закрыть, чтобы ее содержимое не сохранилось, то в процедуре Close формы нужно тебе прописать Action:=caFree; тогда форма сама себя разрушит, и то что по завершении выполнения TForm1.Button1Click у тебя потеряется ссылка на доступ к форме, не будет проблемой. Если ты эту же форму с данными в ней открыть снова, то тебе нужно будет продумать где и как ты будешь делать уничтожение формы и переменну
нужно обьявить в переменных основной формы, а не внутри процедуры кнопки. Если форм несколько одинаковых, то несколько переменных. --------------------
...И приколется обломившийся и oбломится приколовшийся... |
||||||
|
|||||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Вообще, автоматическое добавление переменной типа созданной формы (которая легко становится глобальной) и автоматическое же создание этой формы при старте программы - одна из не очень хороших особенностей Делфи. Лего начинать, но портит стиль.
Еще очень не люблю такую вещь как - главная форма проекта. Приходится при старте ее прятать и запускать свой класс управления окнами. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |