Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 00:44   #1
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
Сообщение Закрыть вторую форму

Возникла проблема, помогите решить.

Как закрыть вторую форму ?

Есть Form1, а из неё вызывается Form2.

в Form2 есть Edit1, в который я вписал какой-то текст, затем закрыл форму через крестик, затем, открыв её сново (из Form1), я вижу то что я написал в Edit1.

Мне нужно, чтобы если я закрыл форму на крестик, форма подгружалась чистой.

Всё дело в том что на второй форме куча элементов, поработав с ними, пользователь закрывает форму, но если он её опять откроет, то форма должна быть полностью первоначальной.

Form2.Close - открывается уже с инфой
Form2.Hide - ну естественно просто скроется

Как только запускаю Form1 и запускаю из неё Form2, то вторая форма еще и выплывает, а если я её закрою и открою опять, то она просто как будто из Хайда выйдет и уже с изменениями пользователя.

Как её вернуть в первоначальный вид ?!
WhiteForge вне форума Ответить с цитированием
Старый 02.11.2012, 00:51   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

убивать надо и пересоздавать.
а вторая как модальное окно работает?
eval вне форума Ответить с цитированием
Старый 02.11.2012, 00:53   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Если форма открывается не модально, то в обработчике события формы OnClose, параметру Action можно просто присвоить значение caFree, т.е.
Код:
Action := caFree;
А вобще стоит почитать про работу с формами в Delphi, т.к. есть некоторые нюансы...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 02.11.2012, 01:00   #4
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
По умолчанию

Да, но это я уже перепробовал

что Free что Form2.Destroy - её просто уничтожают и больше её не открыть
WhiteForge вне форума Ответить с цитированием
Старый 02.11.2012, 01:06   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Потому что ее надо выбросить из автосоздаваемых, также удалить переменную Form2. И начать работать правильно.
eval вне форума Ответить с цитированием
Старый 02.11.2012, 02:06   #6
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
Form2.Edit1.Clear;
end;

Если я правильно понял...
FleXik вне форума Ответить с цитированием
Старый 02.11.2012, 11:53   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Народ чё вы паритесь. Вот код:
Код:
//процедура с которой ты вызываешь форму
Form2.Show;
Form2.Edit1.Text:='';
Незабудь прописать Unit от ВТОРОЙ ФОРМЫ.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 02.11.2012, 21:22   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

саша40, хороший код, если на форме 2-3 едита... а если 20-30?


P.S. Не смейтесь и не бейте сильно, но у нас на работе есть такая программа, в которой на форме порядка 30 полей (правда, писана на эклипсе)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 02.11.2012, 21:27   #9
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
саша40, хороший код, если на форме 2-3 едита... а если 20-30?


P.S. Не смейтесь и не бейте сильно, но у нас на работе есть такая программа, в которой на форме порядка 30 полей (правда, писана на эклипсе)
Ну так по очереди в коде каждый Edit очищяешь

Edit1.Clear; или Edit1.Text:='';
Edit2.Clear; или Edit2.Text:='';
Edit3.Clear; или Edit3.Text:='';
Edit4.Clear; или Edit4.Text:='';
Edit5.Clear; или Edit5.Text:='';
Edit6.Clear; или Edit6.Text:='';
Edit7.Clear; или Edit7.Text:='';
Edit8.Clear; или Edit8.Text:='';
Edit9.Clear; или Edit9.Text:='';
Edit10.Clear; или Edit10.Text:='';

и так далее...
FleXik вне форума Ответить с цитированием
Старый 02.11.2012, 21:35   #10
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Не проще использовать цикл и findcomponent?
Кольша вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поместить вторую форму в Delphi Kreadlling Общие вопросы Delphi 5 06.04.2012 17:26
Закрыть и открыть форму Swatch Microsoft Office Access 1 31.05.2010 23:04
Как запустить вторую форму нажатием кнопки на первой на с#? mr Vi Общие вопросы C/C++ 1 24.05.2010 07:53
Как в С# вызывать вторую форму по F1 Linore Общие вопросы .NET 20 15.02.2010 09:35
С++. Открыть вторую форму ЛУНА55 Помощь студентам 2 10.12.2009 11:35