Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Немодальные формы  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Привет всем!
Работаю в FoxPro 9.0
Обнаружил, что немодальная форма не представлена объектом в среде FoxPro.
Как следствие - невозможно с ней работать из других форм, поскольку объект формы - отсутствует. Стоит сделать форму модальной, как её объект появляется.
В чём фишка?
1 мар 08, 17:32    [5358333]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Sergey Sizov.
Guest
Андрей К
Привет всем!
Работаю в FoxPro 9.0
Обнаружил, что немодальная форма не представлена объектом в среде FoxPro.
Как следствие - невозможно с ней работать из других форм, поскольку объект формы - отсутствует. Стоит сделать форму модальной, как её объект появляется.
В чём фишка?

А теперь объясните и продемонстрируйте куском кода ваше открытие.
1 мар 08, 17:59    [5358370]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Анатолий Широков
Member

Откуда: Санкт-Петербург
Сообщений: 1319
Андрей К
Привет всем!
Работаю в FoxPro 9.0
Обнаружил, что немодальная форма не представлена объектом в среде FoxPro.
Как следствие - невозможно с ней работать из других форм, поскольку объект формы - отсутствует. Стоит сделать форму модальной, как её объект появляется.
В чём фишка?


Ну, это ты что-то где-то не доглядел или чего-то недопонял.

public goMyForm

do form modalless name goMyForm linked
...
goMyForm.Hide
goMyForm.Show
1 мар 08, 19:34    [5358490]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Fox 9.0
Guest
Андрей К
Привет всем!
Работаю в FoxPro 9.0
Обнаружил, что немодальная форма не представлена объектом в среде FoxPro.
Как следствие - невозможно с ней работать из других форм, поскольку объект формы - отсутствует. Стоит сделать форму модальной, как её объект появляется.
В чём фишка?


В чем фишка - ХЗ. Но описанная ситуация в VFP 9.0 - имеет место.
Кто не верит - попробуйте вызвать из другой формы немодальную форму и найти ее как объектную переменную в окне Locals Windows Debugger или обратиться к каким-либо свойствам этой формы через эту самую объектную переменную.
1 мар 08, 19:59    [5358511]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Sergey Sizov.
Guest
Ну так и где код, демонстрирующий проблему? Предлагаете просто верить на слово? Я так тоже могу много чего наговорить.
1 мар 08, 20:09    [5358524]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Fox 9.0
Guest
Sergey Sizov.
Ну так и где код, демонстрирующий проблему? Предлагаете просто верить на слово? Я так тоже могу много чего наговорить.


А какой еще нужен код ?

1. Создаете в дизайнере модальную форму. (Устанавливаете свойство WindowType = 1)
2. Создаете в дизайнере не модальную форму. (Устанавливаете свойство WindowType = 0)
3. На модальной форме располагаете кнопку, по которой будет вызываться не модальная форма.
4. Запускаете модальную форму.
5. Нажимаете на кнопку.
6. Открываете Debugger.
7. Нажимаете на кнопку Locals window.
8. Долго и безрезультатно ищете объектную переменную не модальной формы.
9. Закрываете все.
10. Во второй форме меняете свойство на WindowType = 1
11. Повторяете пп. 4-7.
12. Удивляетесь наличию объектной переменной уже и для второй формы (которая вначале была не модальная) в окне Locals window.
1 мар 08, 20:38    [5358569]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Dima T
Member

Откуда:
Сообщений: 15271
Fox 9.0
В чем фишка - ХЗ. Но описанная ситуация в VFP 9.0 - имеет место.

Проблема в руках :)
при вызове DO FORM MyForm создается переменная MyForm (ссылка на форму) одноименная с формой, но переменная локальная (может private) но никак не глобальная как ты ожидаешь. Поэтому после завершения кода процедуры вызвавшей DO FORM переменная убивается, а форма остается.
Если нужно - ссылку сохраняй куда-нибудь. Примерно так:
do form myform
this.oChildForm = myform
1 мар 08, 20:49    [5358589]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Sergey Sizov.
Guest
Fox 9.0
Sergey Sizov.
Ну так и где код, демонстрирующий проблему? Предлагаете просто верить на слово? Я так тоже могу много чего наговорить.


А какой еще нужен код ?

Ну вот все, что описано, но в виде исходников. Я могу ведь насоздавать таких форм, с которыми еще не такие "неясности" могут быть.
Ну и еще вот тут почитай насчет модальных окон и их особенностей. А заодно предлагаю хорошенько подумать на логикой, которой должен следовать фокс при применном способе вызова.
1 мар 08, 20:51    [5358596]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Fox 9.0
Guest
Dima T

при вызове DO FORM MyForm создается переменная MyForm (ссылка на форму) одноименная с формой, но переменная локальная (может private) но никак не глобальная как ты ожидаешь. Поэтому после завершения кода процедуры вызвавшей DO FORM переменная убивается, а форма остается.


Можно ли считать данное утверждение верным как для формы у которой свойство - WindowType = 1 (модальной), так и WindowType = 0 (не модальной) или нет ?
1 мар 08, 21:01    [5358614]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Fox 9.0
Guest
Sergey Sizov.

Ну вот все, что описано, но в виде исходников. Я могу ведь насоздавать таких форм, с которыми еще не такие "неясности" могут быть.


Если есть под рукой VFP 9.0, то нужно всего лишь создать две простейшие формы, на одной из которых расположена кнопка и установить для них свойство модальности. Это должно занять не более 2-3 минут. Что здесь может считаться - "навороченным"?
1 мар 08, 21:07    [5358627]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Dima T
Member

Откуда:
Сообщений: 15271
Fox 9.0
Можно ли считать данное утверждение верным как для формы у которой свойство - WindowType = 1 (модальной), так и WindowType = 0 (не модальной) или нет ?

Можно. Для модальной переменная не удалится пока форму не закроешь, т.к. процедура вызвавшая DO FORM остановится на этом месте до закрытия формы.
1 мар 08, 21:08    [5358629]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Dima T
Member

Откуда:
Сообщений: 15271
есть еще коллекция _screen.forms для поиска нужной формы.
1 мар 08, 21:10    [5358632]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Sergey Sizov.
Guest
Fox 9.0
Sergey Sizov.

Ну вот все, что описано, но в виде исходников. Я могу ведь насоздавать таких форм, с которыми еще не такие "неясности" могут быть.


Если есть под рукой VFP 9.0, то нужно всего лишь создать две простейшие формы, на одной из которых расположена кнопка и установить для них свойство модальности. Это должно занять не более 2-3 минут. Что здесь может считаться - "навороченным"?

Тут возникает вопрос о единицах измерения простоты. Для меня форма и с двумя десятками контролов простая. Но у меня они работают. А вот у некоторых и с меньшим количеством не работают. Так может эти некоторые, наконец-то, догадаются показать свое неработающее творчество? Ведь оно не работает, а не мои формы? Тем более, что это вроде бы, правило хорошего тона - подтверждать свои вопросы и умозаключения именно кодом.
Догадки, если они нужны, выдвинул DimaT. Вполне правдоподобные и их можешь их проверить. Еще можно к гадалке сходить, может она чего подсажет.
1 мар 08, 21:24    [5358654]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Fox 9.0
Guest
Sergey Sizov.

Тут возникает вопрос о единицах измерения простоты. Для меня форма и с двумя десятками контролов простая. Но у меня они работают. А вот у некоторых и с меньшим количеством не работают. Так может эти некоторые, наконец-то, догадаются показать свое неработающее творчество? Ведь оно не работает, а не мои формы? Тем более, что это вроде бы, правило хорошего тона - подтверждать свои вопросы и умозаключения именно кодом.
Догадки, если они нужны, выдвинул DimaT. Вполне правдоподобные и их можешь их проверить. Еще можно к гадалке сходить, может она чего подсажет.


Я вот здесь пошагово написал как смоделировать данную ситуацию. Что тебе там не понятно? Правда, если туго с пониманием сути вопроса (или нежеланием в него вникнуть), то не нужно и пытаться отвечать.

Ответ от Dima T меня вполне устроил.
1 мар 08, 21:47    [5358688]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Sergey Sizov.
Guest
Fox 9.0
Я вот здесь пошагово написал как смоделировать данную ситуацию. Что тебе там не понятно? Правда, если туго с пониманием сути вопроса (или нежеланием в него вникнуть), то не нужно и пытаться отвечать.

Ответ от Dima T меня вполне устроил.

Мне там все понятно. Но это будут мои, а не твои формы и совсем не факт, что они буду работать точно также как у тебя. Это трудно понять? И контролы на них будут не твои, а мои, ведущие себя совершенно по-другому. Это трудно понять? Если у тебя ломается какая-нибудь техника ты тоже ремонтнику объясняешь какие нажимать кнопки на его аппарате для воспроизведения такого же поведения как у тебя? Даже если у него нет точно такого аппарата? Или таки несешь сам поломавшийся аппарат? Это тоже трудно понять?
Короче, читайте правила форума, они рулез.
1 мар 08, 21:57    [5358699]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
12345вышелзайчикпогулять
Guest
пример с использованием vcx-форм с подпиской на события

К сообщению приложен файл (notModal.zip - 6Kb) cкачать
3 мар 08, 09:26    [5360683]     Ответить | Цитировать Сообщить модератору
 Re: Немодальные формы  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Спасибо за обсуждение.
Создал объект-приложение как видимый везде (Public).
Завёл в нем свойства для объектов-форм.
Все формы сделал немодальными, гружу их по команде
Do Form <имя формы> name <свойство объекта-формы>
Всё работает!
3 мар 08, 09:55    [5360803]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить