powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / многооконный интерфейс (как дотянуться до объекта) VFP6
6 сообщений из 6, страница 1 из 1
многооконный интерфейс (как дотянуться до объекта) VFP6
    #32194472
alwil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дано формы

1-frmPass
2-frmCheck
3-frmResault

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 1  option ***Worked
 ----------
 
из frmCheck  ( do form frmResault) 

из frmResault.Unload  ( frmCheck.Show
                         frmResault.Release  ) 


 2 -option ***Error
 ----------
 
из frmPassword  ( do form frmCheck) 

из frmCheck  ( do form frmResault) 

из frmResault.Unload  ( frmCheck.Show   --!!!!!!!!!!! not fount object frmCheck
 
                        frmResault.Release  ) 




цепочка вызова frmCheck - > frmResault и обратно работает

frmPass-> frmCheck - > frmResault обратно не работает
...
Рейтинг: 0 / 0
многооконный интерфейс (как дотянуться до объекта) VFP6
    #32194601
karly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не очень понятно, что из чего ты вызываешь, но попытаюсь помочь ;)

Дело, видимо, в том, что соответствующие переменные живут только
в той процедуре, в которой ты их создал, т.к. по умолчанию имеют область
видимости private.
Решить вопрос "одним махом" можно, объявив переменные
как глобальные, где-нибудь в начале программы.
Public frmPass, frmCheck, frmResult

Однако, использование глобальных переменных является плохим стилем.
Лучше создать объект-менеджер форм, который будет хранить ссылки
на запущенные формы. И обращаться к формам не напрямую, а через
этот менеджер.

Если используешь VFP8, то такой менеджер очень удобно создать на основе
класса Collection.
...
Рейтинг: 0 / 0
многооконный интерфейс (как дотянуться до объекта) VFP6
    #32194740
Фотография brahew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если писать _screen.frmCheck.Show а не frmCheck.Show в этой строке
из frmResault.Unload ( frmCheck.Show --!!!!!!!!!!! not fount object frmCheck
...
Рейтинг: 0 / 0
многооконный интерфейс (как дотянуться до объекта) VFP6
    #32194767
Flex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В базовом классе экземпляров формы которым ты пользуешься прикрути свойсво, что-то типа oOwner , при вызове дочерней формы в Init() или другим способом пихай туда ссылку на родителя, таким образом у тебя будет возможность рулить полной цепочкой экземпляров форм.

*1--
Local loOwn
loOwn = (thisform) && Если запускаешь из родительской , дочернюю или
loOwn = .null. && если нечего передвать
F1 = createobject('Frm',loOwn)
F1.show()


Define Class Frm as Fom
oOwher = .NULL.
Procedure Init
Lparameter poOwner
thus.oOwner = poOwner
EndProc
Enddefine

*2--

Local loOwn
loOwn = (thisform) && Если запускаешь из родительской , дочернюю или
loOwn = .null. && если нечего передвать
F1 = createobject('Frm')
F1.oOwher = loOwn
F1.show()


Define Class Frm as Fom
oOwher = .NULL.
Enddefine

Вот через это свойсво и будешь обмениваться нотификационными сообщениями
между экземплярами.

Дергай свои цепочки как хочешь. А для достоверности того что твой предок не "умер" и не ругался так "--!!!!!!!!!!! not fount object frmCheck"
, вообще-то его надо проверять , типа так:

if vartype(frmCheck) # "O" or isNULL(frmCheck)
*-- нету твоей формы
Return .F.
endif
*-- а тут можешь с ней поработать

frmCheck.Show
...
Рейтинг: 0 / 0
многооконный интерфейс (как дотянуться до объекта) VFP6
    #32195077
alwil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо отцы

может че посоветуете читануть популярную литеру
...
Рейтинг: 0 / 0
многооконный интерфейс (как дотянуться до объекта) VFP6
    #32195511
1234567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай Менахем Базиян и др., "Использование Visual FoxPro 6"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / многооконный интерфейс (как дотянуться до объекта) VFP6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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