Модальность формы | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
У меня такая ситуация:
запускается приложение, в нем запускается справочник, форма немодальная. Затем вызывается модальная форма (добавления/редактирования) в справочник записи. Все вроде логично. Но эта форма (добавления/редактирования) содержит элементы, которые использует класс формы. Этот элемент открывает новую форму и хотелось эту форму спрятать. Т.е. если мимо формы кликаем (потеря фокуса), то свойство Visible = .F.. Но формочка не прячется и все виснет из-за того что родительская форма (добавления/редактирования) является модальной. Если форму (добавления/редактирования) сделать немодальной, то все работает. Но ее надо делать модальной по логике. Что-то идеология программирования у меня неправильная. Дайте советы. |
Re: Модальность формы | |
---|---|
rhs72 Сообщений: 1934 Откуда: Алматы - Чарджоу Дата регистрации: 21.03.2007 |
Попробуйте :
Thisform.hide do form Child_form thisform.show ------------------ "Знание того, что считать ответом, равносильно знанию ответа". |
Re: Модальность формы | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Пока решил так:
Форму (добавления/редактирования) делаю немодальной. Но в коде, где она вызывается прописал:
|
Re: Модальность формы | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Цитата:Если некуда деться, то можно использовать такой прием для немодальной формы - при потере фокуса форма автоматически закрывается. Также можно использовать NAME LINKED. ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. Исправлено 3 раз(а). Последнее : Влад Колосов, 02.08.07 13:20 |
Re: Модальность формы | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Владимир, создаётся впечатление, что ты пытаешься нарисовать приложение без goApp - главного класса-менеджера приложения, который в частности и объекты создаёт, и полученные ссылки хранит/удаляет и много ещё чего... Если я угадал, то перестань заниматься ерундой, а начинай рисовать своё приложение "как надо"... ну если ты не просто балуешься, конечно... ;) ------------------ С уважением, Михаил Дроздов, Пермь, Россия |
Re: Модальность формы | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Модальностью можно вполне рулить в Init'e формы
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Модальность формы | |
---|---|
sphinx Сообщений: 31184 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
> а начинай рисовать своё приложение "как надо"
Михаил, поясните, пожалуйста, "как надо" рисовать свое приложение? На сайте Алексея Климова описана технология построения клиент-серверного приложения? Как-то так или у Вас своя идеология? ------------------ "Veni, vidi, vici!"(с) |
Re: Модальность формы | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Проблема в том, что любая форма вызванная из модальной автоматически становится модальной. А модальная форма "не отпускает" от себя никого. Как следствие, мимо модальной формы кликнуть просто невозможно!
Где-то здесь недавно было обсуждение, как закрыть модальную форму, когда кликнули мышкой вне ее. |
Re: Модальность формы | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Достоточно сложный вопрос... отвечая на который, пожалуй можно написать толстенную книгу... ;) Но, какова бы не была архитектура приложения (файл/серверная, клиент/серверная, трёх/(много/)слойная) приложение обычно имеет интерфейс пользователя к данных (UI) так вот, я пытался сказать об организации только последнего... Если допустить, что код FrameWork-ов на VFP т.с. "третьих производителей" недоступен (ну типа нет ни бабок ни желания на преобретение и копания в чужом коде), то для VFP-программистов существует по краней мере два источника, где можно подсмотреть "готовые решения" (ну прежде чем "с нуля" самому "городить огород"), это: - приложения, создаваемые через Tools/Wizards/Application... (с использование библиотеки классов /FFC/*.*|Wizards/*.*, а также серия шаблонов в /Wizards/Template/*.* для этого типа приложений) - общеивестное (но к сожалению переставшее входить в поставку VFP 8.0 и выше) приложение TasTrade (исходники для поставки с VFP 7.0 есть на http://vfpdev.narod.ru/util_r.html - tastrade.zip [17.01.2005] (910KB) - код примера tastrade из поставки VFP 7.0) эти приложения с файл-серверной архитектурой (хотя есть некоторые зачатки клиент/сервера в виде использования ХП) написаны несколько по-разному, но и в том и в другом случае класс-приложения (экземпляр в глобальной переменной goApp) организует работу всего приложения, в т.ч. goApp.DoForm() где через параметры указывает - что/как будет запущено - ссылка на полученный экземпляр будет сохранена в массив/коллекцию для дальнейшего использования Я не говорю, что "нужно использовать" именно "это", я утверждаю, что "для начала" вам нужно хотя бы знать "как это написано"... и в сообщении выше, я хотел оттенить именно "только этот смысл"... ------------------ С уважением, Михаил Дроздов, Пермь, Россия Исправлено 1 раз(а). Последнее : MichaelD, 02.08.07 15:49 |
Re: Модальность формы | |
---|---|
shumik73 Сообщений: 515 Откуда: Алматы Дата регистрации: 10.05.2006 |
Как я понял тут трехслойный пирог НЕМОДАЛ - МОДАЛ - НЕМОДАЛ Конечно глюкать будет Крутись как хочешь но, но все что нужно уложи в одну форму (добавления - редактирования) или НЕМОДАЛ - МОДАЛ - МОДАЛ Это всё ерунда. Я вот открываю журнал-немодальный развернутый на весь экран, а из него модальный диалог с списком отчетов. Выбираю нужный отчет и на просмотр в два столбца (как появилось в VFP9) Наглядно крассиво - модно. Ан нет - как закрою окно просмотра - так журнал до минимальных размеров сворачивается Такая фигня злит до безобразия - хоть опять к дедовскому просмотру возвращаяйся А ничего поделать ни могу |
Re: Модальность формы | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
А если это так:
то это называется: "найти себе приключения на ровном месте... на одно место"... ;) ------------------ С уважением, Михаил Дроздов, Пермь, Россия |
Re: Модальность формы | |
---|---|
sphinx Сообщений: 31184 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Михаил, спасибо за исчерпывающий ответ!
------------------ "Veni, vidi, vici!"(с) |
Re: Модальность формы | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Э... а приложение как построено? Ну я имею ввиду - на VFP-main window - или As Top-Level Form? ------------------ С уважением, Михаил Дроздов, Пермь, Россия |
Re: Модальность формы | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Как я уже писал когда-то: судя по некоторому поведению - модальной становится не форма, а весь интерфейс целиком. Отсюда и
Цитата:Т.е. на самом деле она модальной не становится, иначе нельзя было бы потерять фокус формы. Модальность достигается "замораживаением" главного окна и неактивных окон. По идее, модальная форма не должна терять фокус ни при каких обстоятельствах. Цитата:Нельзя ли пример посмотреть? ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: Модальность формы | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Я взял решение IECombo «пример комбобокса по аналогии с Internet Explorer» (Готовского Дмитрия (aries)). Но он использует в нем Fox-овский стандартный компонент ListBox. Я заменил ListBox на TreeView ActiveX, плюс подкорректировал код (конечно его надо еще будет пооптимизировать, но это потом). И так получился компонент что-то типа ComboTreeView. [attachment 4871 CombTreeView.PNG] При активизации компонента создается окно с TreeView. Все вроде удовлетворило. Тестировал компонент кидая на немодальную форму, все хорошо. Но мне надо чтобы компонент работал на модальной форме. Т.к. в этой форме идет формирование информации для составления записи в журнал. Тыркался - мыркался и пришел к выводу, что буду использовать немодальную форму. Но тут я приобрел кучу других проблем. Поэтому и код при вызове формы в которой используется этот компонент:
1. Отказаться от использования компонента TreeView. Использовать стандартные компоненты VFP. Но ведь хотелось как красивее. 2. Мучаться с этим. 3. .... Может быть есть советы? М.б. у кого есть аналогичный компонент, но работает в модальной форме? Хотелось бы посмотреть. |
Re: Модальность формы | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Любая ActiveX-компонента - имееет/работает в своём окне - таже ей нужно, чтобы "насос событий" работал исправно оба этих момента противоречать модальности формы: - не должна давать открывать новое окно - все "события приложения", в т.ч. и в меню заморожены/остановлены Обычно в таких случаях устраивают "псевдо-модальность", т.е. делают недоступными все окна, кроме активного, а по закрытию последнего снимают этот режим...
Как писал выше, меня насторожило "безалаберное" использование тобой public-переменной-ссылкой, которую ты в коде проверяешь на существование... Это косвенно указывает на то, что архитектура создаваемого тобой приложения "просто безобразна".... это если мягко сказать... Впрочем, дело твоё конечно... ;) ------------------ С уважением, Михаил Дроздов, Пермь, Россия Исправлено 1 раз(а). Последнее : MichaelD, 03.08.07 10:38 |
Re: Модальность формы | |
---|---|
shumik73 Сообщений: 515 Откуда: Алматы Дата регистрации: 10.05.2006 |
В качестве главного окна использую "VFP-main window"
ни каких "As Top-Level Form" - глюкают, не помню даже по какой причине Скриншот проги [attachment 4873 111.jpg] Первая форма - контрагентов (не модал) Вторая форма - диалог печати со списком отчетов (модал) При нажатии кнопки "печать" происходит выполнение кода:
Получаю свой отчет на просмотр Всё бы ничего, но что дальше происходит меня не устраиват 1) Форма просмотра _reportlistener развернута на весь экран - MDIform=.T. 2) При её закрытии она как бы сворачивается и соответсвенно сворачивает все MDI-формы открытые на тот момент. Тоесть моя форма контрагентов тоже свернется 3)Форма просмотра исчезает, но мой родительский журнал оказывается уже свернут Чтобы прекратить сворачивание родительского журнала иду на хитрость: где Thisform-диалога печати, а Thisform.oparent. - журнал
Моргает, но работает...но коряво |
Re: Модальность формы | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Э... если я правильно понял, по вызову отчёта диалог закрывается... если так, то - не пробовал "вызов отчёта" повесить "на пункт меню/клавишу", в случае клавиши вызывать соотвествующий макрос... - по кнопке [Ok] взводить флаг (в goApp), типа: отчёт запустить, и запускать отчёт средствами goApp сразу после закрытия формы при наличии признака... ес-но перед открытием модальной формы флаг сбрасывать... ------------------ С уважением, Михаил Дроздов, Пермь, Россия |
Re: Модальность формы | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Я раньше всегда писал:
Буду задавать вопросы. |
Re: Модальность формы | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Немного кода бы "псевдо-модальности". |
© 2000-2024 Fox Club  |