|
многооконный интерфейс (как дотянуться до объекта) VFP6
|
|||
---|---|---|---|
#18+
дано формы 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.
цепочка вызова frmCheck - > frmResault и обратно работает frmPass-> frmCheck - > frmResault обратно не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2003, 13:55 |
|
многооконный интерфейс (как дотянуться до объекта) VFP6
|
|||
---|---|---|---|
#18+
Не очень понятно, что из чего ты вызываешь, но попытаюсь помочь ;) Дело, видимо, в том, что соответствующие переменные живут только в той процедуре, в которой ты их создал, т.к. по умолчанию имеют область видимости private. Решить вопрос "одним махом" можно, объявив переменные как глобальные, где-нибудь в начале программы. Public frmPass, frmCheck, frmResult Однако, использование глобальных переменных является плохим стилем. Лучше создать объект-менеджер форм, который будет хранить ссылки на запущенные формы. И обращаться к формам не напрямую, а через этот менеджер. Если используешь VFP8, то такой менеджер очень удобно создать на основе класса Collection. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 00:07 |
|
многооконный интерфейс (как дотянуться до объекта) VFP6
|
|||
---|---|---|---|
#18+
а если писать _screen.frmCheck.Show а не frmCheck.Show в этой строке из frmResault.Unload ( frmCheck.Show --!!!!!!!!!!! not fount object frmCheck ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 10:29 |
|
многооконный интерфейс (как дотянуться до объекта) VFP6
|
|||
---|---|---|---|
#18+
В базовом классе экземпляров формы которым ты пользуешься прикрути свойсво, что-то типа 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 10:59 |
|
многооконный интерфейс (как дотянуться до объекта) VFP6
|
|||
---|---|---|---|
#18+
спасибо отцы может че посоветуете читануть популярную литеру ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 14:34 |
|
|
start [/forum/topic.php?fid=41&fpage=420&tid=1598183]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 286ms |
total: | 430ms |
0 / 0 |