powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вернуть значение из модальной формы ?
25 сообщений из 65, страница 2 из 3
Как вернуть значение из модальной формы ?
    #33502568
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ:

нет. не работает. главного окна-то нет, черт бы его побрал

придется далать DO FORM, а затем READ EVENTS

а тут уже ниче не поделать - форма релизится.. :(
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33502645
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМВообще-то, я не понял самой постановки задачи.
Форма ввода логина и пароля ЧТО должна сделать?
Я всегда считал, что эта форма дает пользователю ввести 2 значения и по нажатию кнопки Ok делает вывод о допустимости или не допустимости дальнейшей работы этого пользователя.

Т.е. эта проверка делается ВНУТРИ формы, а вовсе не в основной программе. Ну, или как минимум, из этой формы организуется вызов внешней процедуры проверки.

Другими словами, ЧТО предполагается возвращать из этой формы? Какой смысл в этом самом возвращаемом значении?

Значит, логика работы совершенно другая. Эта форма вообще ничего не возвращает, а только САМА принимает решение: продолжить дальнейшую работу с программой или завершить.

Уважаемый --Eugene-- обратите внимание на эту цитату ВладимираМ!
Именно так и надо делать (только я делаю проверку в событии QueryUnload формы Login, а не в событии Click кнопки OK, но это суть не меняет).
Подключение к серверу и проверка пароля производится в форме Login и только там! А способ вызова этой формы, это дело вкуса.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33503660
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально проверил.

Если _SCREEN не видимо, то модальность InTop-Level формы игнорируется. Что логично.

Если контейнер (_SCREE) в котором открывается объект скрыт, то элемент контейнера (форма) по логике тоже должен быть скрыт. А скрытая (невидимая) форма не может быть модальной.

Как только я делаю _SCREEN видимым, тут же "включается" модальность.

Так что, у тебя 2 варианта действий:

Либо оставить _SCREEN видимым (тогда работает модальность), либо "подвешивать" форму логина через READ EVENTS.

При этом, способ создания формы не играет никакой роли. Не важно, будет ли это класс или DO FORM.
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33503786
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KПодключение к серверу и проверка пароля производится в форме Login и только там!я же это отлично понимаю. но при чем тут именно логин ? а если я хочу показать форму ввода даты, например ? или просто свой собственный абстрактный инпутбокс. да мало ли что

вобщем, ясно
всем спасибо, товарищи
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33503869
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--я же это отлично понимаю. но при чем тут именно логин ? а если я хочу показать форму ввода даты, например ? или просто свой собственный абстрактный инпутбокс. да мало ли что

вобщем, ясно
всем спасибо, товарищи
Пожалуйста, но Login является хорошим примером, так как запускается, как правило, в самом начале работы приложения, когда еще приложение полностью не "раскрутилось". А во всех других вариантах, диалоговая форма является "подчиненной" какой то другой формы и я использую передачу параметров в диалоговую форму ссылку на главную (THISFORM) и (или) PRIVATE (не PUBLIC) переменные.
С уваженем, Алексей.
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33506320
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi All!

2 Aleksey
Передавать ThisForm - это жёстко себя привязывать к формам - предпочитаю
(если уж это действительно надо) передать ссылку на Thisform в свойстве
ParameterObject-а, а заодно возможно и ссылку на контрол откуда идёт вызов
подчинённой формы. Подчёркиваю - ЕСЛИ ЭТО НУЖНО - обычно у меня вызываемая
форма не знает ничего о вызывающем её коде, и тем более не делает
предположений насчёт того что будет передана форма, или ссылка на контрол...
Хотя принципиальной разницы в том что форма или контрол сами служат в
качестве ParameterObject (а не отдельный объект) нету.
Как уже замечено это позволяет вызывать форму из prg (там то по любому
придётся создать объект - прочём IMHO Custom для этого лучше подходит чем
Form - а в свежих версиях фокса там в вовсе Empty есть). Также проще
работать с "несохраняемым" ParameterObject - т.е. отработала вторая форма,
мы получили что хотели и объект уничтожился - а так все данные останутся в
свойствах Form... Кстати удалить свойство штатным образом можно стало только
начиная с VFP8. Насчёт добавления методов не понял - зачем это надо, и чем
тут Form выигрывает по сравнению с Custom (ну точнее классы от них
производняе конечно) - если метод есть, его можно вызвать, если же его нету,
то ни о каком "добавлении метода" речи не идёт.
Кстати для уточнения - scx форма - это особого рода подкласс (правда с рядом
ограничений по сравнению с vcx, и с "довеском" в виде "встроенного" DE
Object - который кстати ведёт себя не совсем вменяемо - например его метод
OpenTables зачем-то вызывается до Init - и вообще есть масса нюансов с DE
который в scx форме живёт) - так что некорректно говороить о том, что эта
форма есть нечто "базовое".
Кстати использование goApp в качестве "точки вызова" формы Login по сути
мало отличается от main.prg методы goApp можно рассматривать как
общедоступные процедуры, а его свойства как Public переменные (со всеми
вытекающими из этого нюансами использования).

2 --Eugene--
Неважно где будет "создаваться" значение свойств - т.е. у тебя по закрытию
формы (кнопка, "крестик" и т.п.) нужно лишь установить какие-то свойства
формы и всё. И т.к. у тебя в форме в Init была строка This.Show(1) - то
управление вернётся в Init (это трюк конечно, но он вполне работает) - и
можно будет присвоить значения параметрам переданным по ссылке. Я не
призываю так делать, но это вполне возможно.
Насчёт VarType+Isnull - да, это избыточно, но если заменить это нa
Type+Isnull - то будет в самый раз! Дело в том, что Vartype
(oSomeObject.oSomeProperty) - может вызвать ошибку - если собственно объекта
oSomeObject не существует - тогда как TYPE() ошибки поглощает, что весьма
удобно - НО Type имеет проблему - он возвращает "реальный" тип - т.е. если у
тебя была где-то ссылка на объект, скажем форму, а потом ОБЪЕКТ уничтожили
(ссылка при этом зануляется автоматом) - то ТИП остаётся "O" - несмотря на
то, что "значение" там будет .NULL. Обходят это второй проверкой через
Isnull, или "усложнив" проверку в Type скажем так:
Type("oSomeObject.oSomeProperty.Name") = "C" - ну или проверив иное
гарантированно имеющееся у соответствующего объекта свойство (если оно есть,
значит и объект жив).

2 Владимир&Aleksey
Я считаю что как раз ТАК делать и не стоит - что текое форма - это элемент
UI - сегодня это одна форма, завтра другая, послезавтра третья - а вот
логика авторизации - это отдельная вещь - причём она также может меняться
много раз - НЕЗАВИСИМО от изменения формы ввода (сегодня в DBF храним логин
и пароль - завтра на SQL сервере, или просто способ хэширования пароля
поменяли, или ещё что) - и я бы ни в коем случае не советовал "совмещать"
эти 2 вещи. Форма ввода должна... ввести данные и вернуть их в точку
вызова - т.е. быть не более "навороченной" (не в плане UI конечно - там
можно хоть радугу и фанфары сделать? или чтоб она подпрыгивала и
пританцовывала при наборе) чем Inputbox() - а уже в точке вызова и должен
проходить анализ - при этом конечно это должен быть метод класса goApp, или
отдельный объект... А саму форму можно оставить висеть на время проверки,
выведя туда прогрессбар или анимацию или ещё чего - но всё-же разделить 2
задачи (UI и собственно авторизацию) стоит.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33506550
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi All!

2 Aleksey
Передавать ThisForm - это жёстко себя привязывать к формам
- предпочитаю
(если уж это действительно надо) передать ссылку на Thisform в свойстве
ParameterObject-а, а заодно возможно и ссылку на контрол откуда идёт вызов
подчинённой формы. Подчёркиваю - ЕСЛИ ЭТО НУЖНО - обычно у меня вызываемая
форма не знает ничего о вызывающем её коде, и тем более не делает
предположений насчёт того что будет передана форма, или ссылка на контрол...
Хотя принципиальной разницы в том что форма или контрол сами служат в
качестве ParameterObject (а не отдельный объект) нету.

У меня как раз все наоборот. Как правило (за очень редким исключением), диалоговые формы не универсальные, и "ЗНАЮТ" (в том числе и через передаваемую ссылку), что за форма ее вызывает.

Igor Korolyov
Насчёт добавления методов не понял - зачем это надо, и чем
тут Form выигрывает по сравнению с Custom (ну точнее классы от них
производняе конечно) - если метод есть, его можно вызвать, если же его нету,
то ни о каком "добавлении метода" речи не идёт.

Я имел в виду, что через ссылку на вызывающую форму я могут использовать ее методы в диалоговой, чтобы не дублировать их.
Igor Korolyov
Кстати использование goApp в качестве "точки вызова" формы Login по сути
мало отличается от main.prg методы goApp можно рассматривать как
общедоступные процедуры, а его свойства как Public переменные (со всеми
вытекающими из этого нюансами использования).

А в чем проблема использование PUBLIC переменных с "широко известными" всем объектам программы именами, на которые можно ссылаться из любого места приложения, в том числе и из FRX файлов, меню и пр.
У меня в приложении всего два таких PUCLIC объекта: oApp и oError (обработчик ошибок). И ничего плохого в том, что они PUBLIC я не вижу. Опасность использования таких объектов не том, что они PUBLIC,а в бесконтрольном их создании.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33506857
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я нашел-таки легкий выход из сложившейся ситуации.

в форме диалога делаю следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
PROCEDURE Login.Init
thisform.AddProperty("ReturnValue", "")
ENDPROC

PROCEDURE Login.btnOK.Click
thisform.ReturnValue = "Была нажата кнопка OK"
CLEAR EVENTS
ENDPROC

PROCEDURE Login.btnCancel.Click
thisform.ReturnValue = "Была нажата кнопка Cancel"
CLEAR EVENTS
ENDPROC
а в вызывающем коде пишу:
Код: plaintext
1.
2.
3.
4.
DO FORM login NAME oLogin LINKED
READ EVENTS
m.MyReturnedValue = oLogin.ReturnValue
oLogin.Release()
только теперь встала другая проблема - проблема с закрытием формы крестиком [x] в правом верхнем ее углу.
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33506891
фдуч11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CLEAR EVENTS

написши в дестрой напиши

а из кликов кнопок убери
а в кликах вместо напиши thisform.release()


какое-то шаманство
творишь
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33506938
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точно.. о дестрое я как-то не подумал..
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507063
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
PROCEDURE Login.Init
thisform.AddProperty("ReturnValue", "")
thisform.ReturnValue = "Была нажата кнопка Cancel"
ENDPROC

PROCEDURE Login.btnOK.Click
thisform.ReturnValue = "Была нажата кнопка OK"
CLEAR EVENTS
ENDPROC

PROCEDURE Login.btnCancel.Click
CLEAR EVENTS
ENDPROC
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507096
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Maltsev Max
а если крестиком закрыли ?
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507240
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет --Eugene--

а если крестиком закрыли ?

form.controlbox=.f.
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507253
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
valeryka

привет,
у тебя метод прям как у хирурга-онколога
шучу
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507261
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://forum.foxclub.ru/read.php?32,177198,177219#msg-177219
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507328
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valeryka
а если крестиком закрыли ?

form.controlbox=.f.ну ты прям как oldschool программер, начавший еще в далеком прошлом с FPW2.6
так нельзя с юзерами обращаться. они тоже люди
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507344
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWisthttp://forum.foxclub.ru/read.php?32,177198,177219#msg-177219я в курсе про QueryUnload(). но она же не вызывается при релизе(). дублировать код подтверждения закрытия формы в релизе() и в QueryUnload() ?
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507453
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene-- PaulWisthttp://forum.foxclub.ru/read.php?32,177198,177219#msg-177219я в курсе про QueryUnload(). но она же не вызывается при релизе(). дублировать код подтверждения закрытия формы в релизе() и в QueryUnload() ?

Код: plaintext
1.
2.
3.
* Событие QueryUnload
NODEFAULT
ThisForm.btnCancel.Click()
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507468
ffffffff____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene-- valeryka
а если крестиком закрыли ?

form.controlbox=.f.ну ты прям как oldschool программер, начавший еще в далеком прошлом с FPW2.6
так нельзя с юзерами обращаться. они тоже люди

это почему? у меня на каждой форме есть кнопка с дверью и типсом ВЫХОД.. а крестики заблочены..
патамучто я так хочу..
так сказать проверки юзерофф на сообразительность.. заметил странную весчь.. несмотря на наличие двери все норовят в окно.. ой на крест закрывать.. вот оно лекционное = "окна в виндовозе закрываются на крест"
но ниче потыкался на крестне зукрывается - вишь и кнопку с дверями увидел....
не знаю почему - но после такого создается впечатление, что рядовые пользователи - не люди а роботы - сказали на крест - записал в память и везде крест ищет...., а кнопка ВЫход как-то не видна.. странно это все.. думать умеют?
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507477
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет Алекс!


у тебя метод прям как у хирурга-онколога


А ТО!
Не позволяйте пользователям баловаться, на кнопуньки давить
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507493
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фдуч11100CLEAR EVENTS напиши в дестрой, а из кликов кнопок убери. а в кликах вместо напиши thisform.release()хм, ввел-таки меня в заблуждение. в этом случае получается, что :
Код: plaintext
1.
2.
3.
4.
DO FORM login NAME oLogin
READ EVENTS

?TYPE("oLogin")
U
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507494
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, так их и по кумполу им по-кумполу


а недавно Влад Колосов предложил
формочку бегающую нарисовать

юзер тычит в кнопку, а она от него убегает
во прикольно


"Вдруг из маминой из спальни кривоногий и хромой ... "


шучу
"ну и шутки у Вас ..."
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507496
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас нарисую

по-позже выложу

положите юзерам
интересно прибьют??? или посмеются???
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507500
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм, ввел-таки меня в заблуждение. в этом случае получается, что :

а ты мой золотой костыль юзай
...
Рейтинг: 0 / 0
Как вернуть значение из модальной формы ?
    #33507540
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ffffffff____а крестики заблочены.. патамучто я так хочу.. думать умеют?твоя должность - программист. человек интелектуального труда. тот, кто облегчает людям жизнь. - это раз.
стандарты пользовательского интерфейса - они для того и сделаны, чтобы юзер всегда на интуитивном уровне знал куда тыкать. а ты обламываешь им всю интуицию (кстати с легкой руки чуваков из Visual FoxPro Team)
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 2 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вернуть значение из модальной формы ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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