Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Показать форму модально 
V
    Опции темы
Mina
  Дата 26.5.2008, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Есть модальная форма (Form1) с кнопкой, при нажатии на которую должна закрыться форма (Form1) и открыться другая форма (Form2), но тоже модально. Что то типа 
Код

procedure TForm.ButtonClick(Sender: TObject);
begin
  Form1.Close;
  Form2.ShowModal;
end;

но так не годиться потому, что не закрывается форма Form1, а это нужно обязательно.
Подскажите как можно сделать?
PM MAIL   Вверх
ama_kid
Дата 26.5.2008, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Mina, как вариант: там где ты вызываешь Form1.ShowModal - после этого вставляй Form2.ShowModal. Отработает первая - пойдет на исполнение вторая...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Sanchezzz
  Дата 26.5.2008, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 5
Всего: 60



если form1 у тебя родительская форма (главная то приложение закроется) ;
может тебе подойдет нечто: 

Код

ShowWindow(form1.handle , sw_hide);
form2.showmodal;




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Mina
Дата 26.5.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Цитата(ama_kid @  26.5.2008,  08:42 Найти цитируемый пост)
пойдет на исполнение вторая

Нет так мне не подойдет, вторая форма открывается не всегда.

Цитата(Sanchezzz @  26.5.2008,  08:48 Найти цитируемый пост)
если form1 у тебя родительская форма

Form1 - не главная форма , она тоже вызывается модально.
Попробывал код, срабатывает, Form1 закрывается как и надо, но при закрытии Form 2, виснет вся прграмма.
PM MAIL   Вверх
ama_kid
Дата 26.5.2008, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(Mina @  26.5.2008,  09:00 Найти цитируемый пост)
вторая форма открывается не всегда
Ну вызывай по условию...



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Mina
Дата 26.5.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Цитата(ama_kid @  26.5.2008,  09:31 Найти цитируемый пост)
Ну вызывай по условию...

Спасибо за идею, надо будет подумать. 

Может есть какие еще варианты?
PM MAIL   Вверх
ama_kid
Дата 26.5.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(Mina @  26.5.2008,  09:44 Найти цитируемый пост)
Может есть какие еще варианты? 
При таких исходных данные вариантов не так уж и много...  smile 
Цитата(Mina @  26.5.2008,  09:00 Найти цитируемый пост)
Попробывал код, срабатывает, Form1 закрывается как и надо, но при закрытии Form 2, виснет вся прграмма.
Программа не виснет, просто форма 1 - не закрывается, а прячется, следовательно, при использовании такого варианта - надо при закрытии формы 2 делать SW_SHOW форме 1...




--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Mina
Дата 26.5.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Цитата(ama_kid @  26.5.2008,  10:01 Найти цитируемый пост)
При таких исходных данные вариантов не так уж и много

Попробую поподробнее. На главной форме есть кнопка вызова модальной формы (здесь пользователь заполняет поля своими данными), на этой форме тоже есть кнопка (что вроде "Дополнительные данные"), так вот при нажатии на нее, все что запонил пользователь на Form1, должно сохраниться, форма Form1 закрыться (обязательно) и открыться вторая форма. Вот примерно так.
PM MAIL   Вверх
ama_kid
Дата 26.5.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(Mina @  26.5.2008,  10:13 Найти цитируемый пост)
форма Form1 закрыться (обязательно)
А можно узнать чем вызвана такая жёсткая необходимость? Может имеет смысл просто вызывать поверх форму2 для ввода дополнительных параметров? И юзабилити вроде привычное, и велосипед изобретать не надо... Единственное - если тока какое-то требование нестандартное...

Добавлено через 6 минут и 4 секунды
Цитата(Mina @  26.5.2008,  10:13 Найти цитируемый пост)
На главной форме есть кнопка вызова модальной формы (здесь пользователь заполняет поля своими данными), на этой форме тоже есть кнопка (что вроде "Дополнительные данные"), так вот при нажатии на нее, все что запонил пользователь на Form1, должно сохраниться, форма Form1 закрыться (обязательно) и открыться вторая форма. Вот примерно так.
Ну и если все-таки требование жесткое - тогда предлагаю второй вариант:
на форме1 в обработчике OnClose пишешь:
Код
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caFree;
end;
В обработчике OnDestroy пишешь:
Код
procedure TForm2.FormDestroy(Sender: TObject);
begin
 Form3.ShowModal;
end;
Теперь при закрытии модальной формы она будет уничтожаться и параллельно вызываться форма2 в модальном режиме... 



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Mina
Дата 26.5.2008, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Цитата(ama_kid @  26.5.2008,  10:25 Найти цитируемый пост)
А можно узнать чем вызвана такая жёсткая необходимость


Попробую. 
При закрытии Form1 часть данных (несколько полей записи таблицы) сохраняется в базе (Firebird), а большой текст (также поле этой же записи - RichEdit на Form2) при закрытии Form2. Все дело в том что пока редактируется текст в RichEdit, данные которые изменяются в Form1, за это время могут изменить другие пользователи. 
Не знаю понятно объяснил или нет. 

PM MAIL   Вверх
ama_kid
Дата 26.5.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(ama_kid @  26.5.2008,  10:25 Найти цитируемый пост)
Теперь при закрытии модальной формы она будет уничтожаться и параллельно вызываться форма2 в модальном режиме... 
Еще забыл добавить, что вызов первоначальной формы надо заменить на что-то подобное
Код
  Application.CreateForm(TForm2,Form2);
  Form2.ShowModal;
Естессно, не забыв убрать соответствующую форму из списка автосоздаваемых в настройках проекта...



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Mina
Дата 26.5.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Да, теперь закрывается Form1, при открытии Form2, но при любом закрытии Form1, всегда открывается  Form2.
PM MAIL   Вверх
ama_kid
Дата 26.5.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(Mina @  26.5.2008,  11:06 Найти цитируемый пост)
Да, теперь закрывается Form1, при открытии Form2, но при любом закрытии Form1, всегда открывается  Form2. 
А, ну да, надо условно вызывать вторую форму... смотри аттач, я пример наклепал...

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Test.rar 159,67 Kb


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Mina
Дата 26.5.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



ama_kid, спасибо за помощь, все сделал.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1134 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.