Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM? Если запустить форму из меню (DEFINE ..), то форма закрывается автоматически. Как изменить данное поведение, чтобы форма не закрывалась ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 11:52 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 17:58 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Схема вызова форм такая : форма Form2 (немодальная, MDI) вызывается из формы Form1 (немодальная, MDI). В debug видно, что как только окно показано (вызван матод Show) и управление передано Form1, форма Form2 тут же закрывается. По идее все MDI-окна одновременно видны и реагируют на действия пользователя. Предложенная статья, ровным счетом, ничего не говорит - общее описание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:47 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
А не пробовали использовать Toolbar в который уже вставлять Menu? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:54 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
ToolBar или контекстное меню значения не имеет, задача в том, чтобы выяснить такое непонятное для меня поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:02 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Действительно странно... Но по приведенному Вами описанию я так ничего и не понял. Нельзя ли поподробнее - привести пример кода и среды... Кстати, вот пример с MS сайта - тут две формы, причем перемещаяся по Grid в 1 форме, иэменения происходят во 2 форме (VFP 8.0) и ничего не закрывается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 12:09 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
->Sergey Ch Что-то вроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. И Form1, и Form2 являются дочерними(MDI) окнами главного окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:09 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
->Sergey Ch Что-то вроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. И Form1, и Form2 являются MDI-окнами, скажем главного окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:09 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Ваша ошибка в том, что вы при создании новой MDI формы связываете её с той же (видимо, глобальной) переменной _form . Естественно, что ранее связанная с этой пернеменной форма уничтожается при создании новой формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:44 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
_form - это локальная переменная: Код: plaintext ->Вячеслав Клепинин Сомнение: всегда ли выражение _ref_form = 0 означает удаление объекта(т.е. вызов Release)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 14:08 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
to ilya_sql По поводу Вашего сомнения. Метод Release может быть вызван только явно. При присваивании переменной, ссылающейся на объект (форму), любого иного значения (в т.ч. ссылки на другой объект) метод Release не вызывается - см. окно свойств, чтобы увидеть, что Release не есть обработчик событий (как и метод Show, в котором вы так же можете писать любой код). Когда ссылочная переменная получает новое значение, то для связанного с ней объекта выполняются события: Destroy Event QueryUnload Event Unload Event В вашем примере используются, как вы пишете, локальные переменные. Но это никак не следует из приведённого кода. В частности, в методе RightClick формы Form1 переменная _form не объявлена как локальная, следовательно, она является PRIVATE и видна только в создавшем её методе и всех методах (процедурах), вызываемых из этого метода. Поэтому при завершении метода RightClick переменная _form уничтожается (вместе со связанной с ней немодальной формой). Вот если бы запускаемая форма была модальной, то выполнение метода RightClick было бы приостановлено до завершения работы с этой модальной формой. Использование локальных переменных здесь так же недопустимо. Что нужно сделать: 1. Используйте разные переменные для связывания с запускаемыми формами 2. Эти переменные д.б. либо глобальными, либо являться свойствами той формы, из которой запускаются ваши немрдальные формы. 3. Есть некоторые моменты при работе с немодальными формами, которые необходимо учитывать. Как уже сказано выше, немодальная форма не прекращает выполнение процедуры, её вызвавшей. Поэтому весь код, расположенные после оператора вызова такой формы, будет выполнен до конца, после чего программа перейдёт в состояние ожидания событий. Успехов!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 14:34 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Это что же получается, что форма , как объект, не может существовать сама посебе - ей обязательно нужен 'поводырь', т.е. переменная. И если я обнуляю эту переменную - это значит я удалаяю форму?! Более того, если есть необходимость, чтобы форма жила сколь угодно долго - ее [переменную] необходимо объявлять ГЛОБАЛЬНОЙ . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:34 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Ну почитай ты ту статью которая "ровным счетом, ничего не говорит - общее описание". Только читай внимательно! Форма МОЖЕТ существовать БЕЗ переменной. Форма МОЖЕТ быть привязана к переменной так, что БЕЗ переменной она существовать не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:47 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Форма МОЖЕТ существовать БЕЗ переменной Когда форма создана, например, в конструкторе форм (файлы .SCX и SCT), и запускается командой DO FORM MyForm то фокс создаёт ссылочную переменную с именем аргумента команды (здесь - MyForm). Например, такая конструкция нормально работает: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 12:08 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Вячеслав, не надо путать Илью. Он и так плохо понимает о чем идет речь. Да, при создании формы (если речь идет о DO FORM) создается ссылочная переменная. НО! По-умолчанию, эта переменная не связана с формой в том смысле, что уничтожение этой переменной не приводит к уничтожению формы. Для организации такой "жесткой" связи необходимо использовать опцию LINKED. Если переменная не ассоциирована с формой, то после удаления такой переменной ссылку на форму можно вытащить только через коллекцию _SCREEN.Forms(). Впрочем, обо всем этом написано по приведенной ссылке в разделе "Именование форм" Однако в данном случае создается объект через CreateObject(), а тут ни о какой "незваисимости" не может быть речи. Форма жестко ассоциирована с переменной. Но это вопрос не собственно формы. Такое поведение характерно для ЛЮБОГО объекта. Опять же в приведенной статье была высказан идея о создании "менеджера" форм. В простейшем случае - это глобальный объект, содержащий ссылки на ВСЕ открытые формы проекта. Обращение к формам через этот глобальный объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 12:30 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Эх! дайте и мне пару камушков кинутб в беседу. У меня есть формы которые живут сами по себе и им не нужна накакая ссылочность на переменные т.е. именно Форма МОЖЕТ существовать БЕЗ переменной Только в Init формы есть код This.AddProperty("SELF",THIS) И живет же безо всяких переменных :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 12:42 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
->Вячеслав Клепинин В любом случае неявно создается переменная 'MyForm'. Если Вы заметели я использую NewObject(..) и Show(..) , т.к. для меня они более понятны и не использую конструкцию 'DO FORM ..'. Видимо при использовании NewObject происходит привязка (LINKED) формы к переменной, потому как если я присваиваю NULL, происходит удаление объекта (а не Hide, как я думал раньше). Мне приходится 'следить', чтобы не произошла ситуация, когда ни одна переменная не указывает на этот объект, иначе я безвозвратно теряю его. Я сделал вывод, что такое поведение свойственно всем объектам FoxPro, и к форме(Form) в частности. Думаю, теперь уважаемый ВладимирМ меня поймет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 12:56 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
to ВладимирМ Ну спасибо, разъяснили! :))) to piva Вы о чём? Или поговорим о том, что означают синонимы THIS, THISFORM и т.д.? (при всём моём огромном уважении!!!) to ilya_sql Я полагаю, что достаточно подробно рассмотрел Вашу проблему. Команда DO FORM есть наследие ещё со времён dBase, и вполне естественно пользоваться механизмом ООП (одобряю). Но проблема-то была: 1. в области видимости переменных 2. в непонимании работы механизма ссылок на объекты. И я не вижу, в каком месте мог ввести Вас в заблуждение. Так что всем большой привет! :))) P.S. Я не писал, что "В любом случае неявно создается переменная 'MyForm'." Это Вы уже от себя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 13:16 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
->Вячеслав Клепинин В любом случае неявно создается переменная 'MyForm'. Если Вы заметели я использую NewObject(..) и Show(..) , т.к. для меня они более понятны и не использую конструкцию 'DO FORM ..'. Видимо при использовании NewObject происходит привязка (LINKED) формы к переменной, потому как если я присваиваю NULL, происходит удаление объекта (а не Hide, как я думал раньше). Мне приходится 'следить', чтобы не произошла ситуация, когда ни одна переменная не указывает на этот объект, иначе я безвозвратно теряю его. Я сделал вывод, что такое поведение свойственно всем объектам FoxPro, и к форме(Form) в частности. Думаю, теперь уважаемый ВладимирМ меня поймет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 14:28 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
->ВладимирМ Поясните более подробно " Форма жестко ассоциирована с переменной ". Не означает ли это, что данная операция приведет к удалению формы: Код: plaintext 1. 2. 3. П.С. Мои благодарности всем за разьяснение данного вопроса. Я выяснил, что основная моя ошибка была в обнулении ссылки на форму (в свое время я искал описание десруктора объекта, но как оказалось явно его нет - все очень просто присваиваешь NULL и нет проблем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 15:04 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
to ilya_sql А можно, я отвечу за Владимира? Самому слабо запустить этот код на выполнение, а потом посмотреть, на что ссылается _oForm1 ? Насчёт образного выражения Владимира "Форма жестко ассоциирована с переменной" - так это то, что вы получаете в результате выполнения функции NewObject (или CreateObject - кому как нравится). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 15:30 |
|
||
|
OPEN SHORTCUT MENU->SHOW FORM->CLOSE SHORTCUT MENU => AUTO CLOSE FORM?
|
|||
|---|---|---|---|
|
#18+
Никто никого не принуждает к беседе. Посмотрите сколько человек прочитало эту тему, и что? каждый будет проверять ('проверять' будешь уже в реальном коде). Узнать мнение специалиста бывает гораздо оптимальнее , чем идти методом проб и ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32558763&tid=1596347]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 374ms |

| 0 / 0 |
