Запуск нескольких окон | |
---|---|
JellFish Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
Есть программа. В ней все формы модальные. Начальник хочет чтобы можно было запускать несколько форм одновременно. Как это сделать с минимальными потерями времени и сохранить безглючность ;) проекта
|
Re: Запуск нескольких окон | |
---|---|
Старый Новый год |
2 варианта:
1) сделать их немодальными (тогда не будет глюков), этот вариант предпочтителен, если модальность была необходима только для ограничения доступа к другим окнам. 2) если Вы сумеете запустить одновременно несколько модальных форм, то помятуя о том, что что форма является модальной только для юзера с мышью, самому организовать переход между "модальными" окнами с помощью кнопок выбора окна на каждой форме типа: FormName.Activate или FormName.Object.SetFocus - глюки неизбежны - грубое вмешательство в оконный стек. |
Re: Запуск нескольких окон | |
---|---|
JellFish Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
Давно бы так и сделал но есть осложнения. Вот фрагмент одного из приложений (ака форма)
И поэтому просто поставив Modaless не остановишь программу после Do Form ... |
Re: Запуск нескольких окон | |
---|---|
На самом деле все проще |
Уберите код закрытия таблиц в метод формы, например Release
|
Re: Запуск нескольких окон | |
---|---|
JellFish Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
Не охота Это ж сколько переделывать... Ну если другого пути нету.
|
Re: Запуск нескольких окон | |
---|---|
Проблема не в отображении |
Вывести одновременно несколько форм конечно не проблема ...
Другое дело контролировать их работу если проект был задуман как последовательный (в стиле DOS) интерфейс - переделывать не придется если убедить начальника в том, что это необходимо для сохранения целостности данных ;) |
Re: Запуск нескольких окон | |
---|---|
AlexK Автор Сообщений: 2114 Откуда: Королев,Москва Дата регистрации: 11.12.2000 |
Я думаю, что перейти просто так не удастся - нужно изначально писать под не модальный интерфейс.
|
Re: Запуск нескольких окон | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Твой подход (из того что видно по куску кода) явно не соответствует идее
независимости форм (они у тебя ещё и в одной датасесии живут наверняка ), потому без существенных переделок не обойтись - а переделывать лучше не на голом месте, а сначала создав некотоый набор классов (Framework), или начав использовать один из общедоступных - ибо писать каждую форму на базовых классах, копировать код по Crrl+C Ctrl+V и т.п. - это явно тупиковый путь - масса геморра при минимуме удобств. имея же хороший FrameWork простые формы пишутся вообще с пол-пинка (пару минут и готово ), сложные же как правило можно привести к нескольким простым, увязать их и см. выше ------------------ WBR, Igor |
Re: Запуск нескольких окон | |
---|---|
JellFish Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
Цитата: Я так понимаю что DataEnviroinment формы - отдельная сессия?! У меня все таблицы в DataEnviroinment лежат а что насчет if used()... - это для курсоров. ;) Цитата:Насчет классов - их есть у меня. Еще и поделиться могу ;) А вообще ты предлагаешь переписать заново. Я бы согласился будь у меня больше времени (и денег бы побольше платили). А что насчет самого подхода? Какие осложнения могут быть? Я так понял что нельзя использовать SetFocus при запущеных 2 одинаковых формах... |
Re: Запуск нескольких окон | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Цитата:Нет. DE формы это способ задания набора инструкций для открытия источников данных и установки всяких свойств этих источников. Сессия создаётся если Form.DataSesssion = 2 - тогда все те инструкции что описаны в DE формы будут работать в этой вновь созданной сессии. Иначе они будут работать в той сессии, которая была активна на момент создания формы (грубо говоря в той сессии, в которой создавалась форма) - если запуск из prg - то в Default-ной, если из другой формы - то в DS этой ночальной формы. Цитата:Какие курсоры ты собираешься закрывать в Init формы? Наверняка те, что были созданы в дочерней форме - т.е. явное нарушение принципов ООП - и это один из моментов почему у тебя не получится безболезненный переход... Private переменные - из той же оперы. Цитата:Какого именно? Твоего, или с независимыми формами? Второй гораздо более требователен к аккуратности написания программы, всю изоляцию форм нужно очень тщательно продумывать - все передачи инфы между блоками программы (в частности формами) - только явные... В общем тема очень обширная. Цитата:Не понял вопроса. Почему нельзя? Где нельзя? Что значит 2 одинаковые формы? - 2 экземпляра что-ли? Можно конечно, только если у тебя была привычка делать
------------------ WBR, Igor |
© 2000-2024 Fox Club  |