Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать модальными 2 формы верхнего уровня ? / 17 сообщений из 17, страница 1 из 1
15.03.2013, 08:48
    #38185018
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Есть 2 формы, обе "As top-level". Вторая форма вызывается из первой. В этом случае я свободно могу переходить от 1 формы к другой (переключаться между ними), а необходимо сделать так, чтобы переход на 1-ю форму был невозможен пока не закроется 2-я. Т.е. сделать ее модальной.
...
Рейтинг: 0 / 0
15.03.2013, 08:55
    #38185025
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Вторая должна иметь тип "In top-level".
...
Рейтинг: 0 / 0
15.03.2013, 09:08
    #38185030
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Тут другая проблема возникает. 2-я форма по размеру больше первой. И если сделать 1-ю "as top-level", а вторую "in top level", то 2-я форма обрежется под размеры первой. =(
...
Рейтинг: 0 / 0
15.03.2013, 09:12
    #38185034
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Или, если такой возможности нет, может можно закрывать как нибудь 2-ю форму при потере фокуса? Пробовал вставить в метод lostfocus 2-й формы thisform.release - результат нулевой, форма не закрылась.
...
Рейтинг: 0 / 0
15.03.2013, 09:18
    #38185044
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Были мысли поизвращаться немного - например, перед запуском 2-й формы, первую скрывать, потом расширять ее до размера 2-й, запускать 2-ю, после закрытия 2-й возвращать первоначальный размер 1-й. Но этот как та не очень хочется прибегать к подобным решениям, вот и спрашиваю может есть способ проще ?
...
Рейтинг: 0 / 0
15.03.2013, 09:47
    #38185082
Как сделать модальными 2 формы верхнего уровня ?
faustgreen,
1. Зачем вообще формам назначать "As top-level form"? Какой в этом сакральный смысл? Сделайте их обе "In Screen" и будет вам счастье
2. Что мешает вторую форму сделать модальной?

Создаете, блин, себе сложности. А затем героически их преодолеваете...
...
Рейтинг: 0 / 0
15.03.2013, 10:50
    #38185180
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Решил отказаться от построения приложения в окне Fox-а, а сделать все на отдельных формах, они глаз больше радуют ). А по поводу второй формы модальной я уже написал. Первая форма маленькая - форма авторизации(2-а эдита: логин и пароль, кнопка ok, кнопка выбора пользователя(чтобы не вводить логин вручную)). Так вот, форма вызываемая по нажатию "кнопки выбора пользователя", раза в 2 превышает размеры формы логина. И если сделать первую - "as top-level" , а вторую - "in top-level", то 2-я форма не сможет иметь размеры больше первой и будет видна только ее часть.
Хм... Неужели все пишут проги на фоксе только в стандартном фоксовском окне ?
...
Рейтинг: 0 / 0
15.03.2013, 11:29
    #38185262
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
faustgreenРешил отказаться от построения приложения в окне Fox-а, а сделать все на отдельных формах, они глаз больше радуют ). А по поводу второй формы модальной я уже написал. Первая форма маленькая - форма авторизации(2-а эдита: логин и пароль, кнопка ok, кнопка выбора пользователя(чтобы не вводить логин вручную)). Так вот, форма вызываемая по нажатию "кнопки выбора пользователя", раза в 2 превышает размеры формы логина. И если сделать первую - "as top-level" , а вторую - "in top-level", то 2-я форма не сможет иметь размеры больше первой и будет видна только ее часть.
Хм... Неужели все пишут проги на фоксе только в стандартном фоксовском окне ?

1. Почему форма авторизации должна быть модальной, какой в этом смысл, чем вызвано такое решение?

2. Выбор логина из списка - это не совсем правильно (хотя 1С так делает), ничего не случится если юзер свой логин наберёт руками.

3. Уже сказали, что если хотите проблем, то откажитесь от главного окна фокса :)
...
Рейтинг: 0 / 0
15.03.2013, 11:48
    #38185306
Как сделать модальными 2 формы верхнего уровня ?
faustgreenРешил отказаться от построения приложения в окне Fox-а, а сделать все на отдельных формах, они глаз больше радуют ). А по поводу второй формы модальной я уже написал. Первая форма маленькая - форма авторизации(2-а эдита: логин и пароль, кнопка ok, кнопка выбора пользователя(чтобы не вводить логин вручную)). Так вот, форма вызываемая по нажатию "кнопки выбора пользователя", раза в 2 превышает размеры формы логина. И если сделать первую - "as top-level" , а вторую - "in top-level", то 2-я форма не сможет иметь размеры больше первой и будет видна только ее часть.
Хм... Неужели все пишут проги на фоксе только в стандартном фоксовском окне ?
Ну почему же все... Совсем и не все....
1. Если уж делаете окно, заменяющее главное окно Фокса, то делайте его "нормальных" размеров или растягивайте на весь экран. Нечего окна для авторизации назначать главными... :-)

2. В той же 1С, например, выбор пользователей производится из комбо-бокса. Просто и со вкусом. Зачем Вам вторая форма - не понятно.... Или Вы хотите "врагам" выдать все тайны пользователей, кроме пароля...
...
Рейтинг: 0 / 0
15.03.2013, 11:54
    #38185325
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
У меня главная форма есть, но она запускается после формы логина =). Наверное нужно поменять, хотя задумка изначально была другая. Спасибо за советы.
...
Рейтинг: 0 / 0
15.03.2013, 12:13
    #38185372
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
автор1. Почему форма авторизации должна быть модальной, какой в этом смысл, чем вызвано такое решение?

В форму "логин" пользователь может ввести логин как в ручную, так и путем выбора из списка формы запускаемой по кнопке "выбор пользователя". И если эта форма будет не модальной, то ее могут случайно свернуть и ввести логин руками в первую форму(логин), например. Программа продолжит работать, а форма выбора пользователя(2-я форма) останется висеть.
...
Рейтинг: 0 / 0
15.03.2013, 12:18
    #38185384
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
Меня бы все устроило, если, например, можно было бы отслеживать, сколько форм запущено, какая из них активная и т.п. Чтобы можно было ими управлять, закрыть при необходимости или переключится на другую. Но в хелпе я ничего похожего не нашел(всмысле работа с окнами).
...
Рейтинг: 0 / 0
15.03.2013, 12:24
    #38185399
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
faustgreenМеня бы все устроило, если, например, можно было бы отслеживать, сколько форм запущено, какая из них активная и т.п. Чтобы можно было ими управлять, закрыть при необходимости или переключится на другую. Но в хелпе я ничего похожего не нашел(всмысле работа с окнами).

Код: sql
1.
2.
3.
_screen.forms()

_vfp.forms()
...
Рейтинг: 0 / 0
15.03.2013, 12:42
    #38185439
Дед Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
А не пробовал контрольна открытие формы сделать, если она у тебя не модальная.
....
IF TYPE("MyForm") = "O" .AND. ISNULL(MyForm) = .F.
MyForm.RELEASE
ENDIF
DO FORM MyForm NAME MyForm
.....
Это чтобы их не открывать кучу..
...
Рейтинг: 0 / 0
16.03.2013, 13:42
    #38186619
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
faustgreenТут другая проблема возникает. 2-я форма по размеру больше первой. И если сделать 1-ю "as top-level", а вторую "in top level", то 2-я форма обрежется под размеры первой. =(
Подчиненная форма должна иметь следующие настройки

Код: sql
1.
2.
3.
Desktop = .T.  && Вот эта "волшебная" настройка, позволяющая выйти "за рамки" родительской формы
ShowWindow = 1 - In Top-Level Form
WindowType = 1 - Modal


Хотя согласен со всеми остальными. Для FoxPro режимом по умолчанию при проектировании приложений является использование в качестве главного окна приложения основного окна FoxPro. Разумеется, заменив системное меню и ToolBar на нужные в приложении. Соответственно все формы отображаются в режиме по умолчанию ShowWindow = 0 - In Screen

Стандартное решение проблемы ввода логина/пароля - это основная (главная) форма приложения развернутая на весь экран и внутри нее маленькая модальная формочка с двумя полями для ввода логина/пароля

Кроме того, описанный Вами интерфейс, потенциально глючный. Именно в силу того, что стартовая форма не видна "под" подчиненной. Это крайне не удачный интерфейс.
...
Рейтинг: 0 / 0
16.03.2013, 13:45
    #38186621
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
faustgreenМеня бы все устроило, если, например, можно было бы отслеживать, сколько форм запущено, какая из них активная и т.п. Чтобы можно было ими управлять, закрыть при необходимости или переключится на другую. Но в хелпе я ничего похожего не нашел(всмысле работа с окнами).
Кроме уже названный коллекций _VFP.Forms() и _SCREEN.Forms() никто не мешает самостоятельно сделать список открытых форм. Просто каждую команду открытия/закрытия формы сопровождать соответствующей записью в своей собственной коллекции
...
Рейтинг: 0 / 0
16.03.2013, 22:15
    #38186941
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать модальными 2 формы верхнего уровня ?
ВладимирМfaustgreenМеня бы все устроило, если, например, можно было бы отслеживать, сколько форм запущено, какая из них активная и т.п. Чтобы можно было ими управлять, закрыть при необходимости или переключится на другую. Но в хелпе я ничего похожего не нашел(всмысле работа с окнами).
Кроме уже названный коллекций _VFP.Forms() и _SCREEN.Forms() никто не мешает самостоятельно сделать список открытых форм. Просто каждую команду открытия/закрытия формы сопровождать соответствующей записью в своей собственной коллекции

Это поучения новичку или есть в реале?

ЗЫ. Сколько, лет десять, вы воюете с этими коллекциями - когда для работы с ними достаточно ваши коды собрать в один класс.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать модальными 2 формы верхнего уровня ? / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]