|
|
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Надо с помощью Public Sub позакрывать все формы открытые юзером. Сначала определить загружена ли форма и если она открыта закрыть ее. Но вот как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 12:04 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
свойство isloaded у объектов семейcтва allforms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 12:06 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
этого свойства что то не нашел. Public Sub CloseAllForms() Dim allfrm As AllForms ????? End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 12:49 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
For each xForm in Forms Unload xForm next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 12:59 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Sub CloseAllForms() Do Until Forms.Count = 0 DoCmd.Close acForm, Forms(0).Name Loop End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 13:28 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. Действует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 14:00 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Сергей ГавриловDo Until Forms.Count = 0 DoCmd.Close acForm, Forms(0).Name Loop Только это не будет работать с несколькими экземплярами формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 19:14 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
GeoТолько это не будет работать с несколькими экземплярами формы. У меня работает. Что я неправильно делаю? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 10:39 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
У меня тоже работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:18 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
А вы точно несколько экземпляров одной формы открываете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:24 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
проверили. Работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:38 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
А если в коллекции нет ни одной формы хотя бы в одном экземпляре, то значит нет и в нескольких экземплярах? :-) утверждение А бывают формы, которые открыты, но в коллекции не значатся (типа приехали в москву и живут без регистрации :-) шутка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:55 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторА если в коллекции нет ни одной формы хотя бы в одном экземпляре, то значит нет и в нескольких экземплярах? :-) Осторожнее надо, чуть голову не сломал, читая это :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 14:23 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Странно. На работе (а97 sr1) не работает. Дома (a97 sr2, aXP sp 2) работает. Вывод - ставьте сервис-паки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:44 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
GeoDoCmd.Close acForm, Forms(0).Name Если открыто 10 форм под названием MyForm и я делаю DoCmd.Close acForm, "MyForm" то закрывается произвольная из 10? Разве это может кого-то устраивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:59 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
2ВС Когда надо закрыть все формы, то может. А если при этом выскакивает ошибка, то не может :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 19:08 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Секундочку. У меня принципиальный вопрос. Прошу прощения, что задаю его тут, а не в специальном топике про экземпляры форм. DoCmd.Close acForm, имя - это единственный способ закрыть форму??? Только по имени??? И в кнопке "Выход" тоже??? Если открыто 10 форм под названием MyForm и у каждой в кнопке "Выход" написано DoCmd.Close acForm, Me.Name то кнопка "Выход" закрывает произвольную форму из 10??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 19:22 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторDoCmd.Close acForm, имя - это единственный способ закрыть форму??? Только по имени?? Ну почему, есть и кнопка X :) Если форма открыта через объектную переменную, то тоже понятно как ее можно закрыть. авторЕсли открыто 10 форм под названием MyForm и у каждой в кнопке "Выход" написано DoCmd.Close acForm, Me.Name то кнопка "Выход" закрывает произвольную форму из 10??? Да, действительно, кнопка закрывает первую из форм. Т.е. нажимаем кнопку выход (в которой DoCmd.Close acForm, Me.Name) на одной форме, а может закрытся другая (проверено). Правда, можно закрывать форму командой DoCmd.Close. Тогда закрывается активная форма. Но мне кажется, что иногда бываю глюки, может просто кажется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 22:56 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Глюки действительно бывают. Поэтому я приучился писать DoCmd.Close acForm, Me.Name, а не просто DoCmd.Close. И выходит, что на форме, открываемой в нескольких экземплярах, невозможно сделать кнопку "Выход"??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:04 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Меняй ей Caption при открытии, а потом проверяй его на соответствие в For Each ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:08 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторИ выходит, что на форме, открываемой в нескольких экземплярах, невозможно сделать кнопку "Выход"??? Ну почему? Кнопку-то можно, только код делать другой, например, вызывающий действие по сбросу объектной переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:10 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
У студентов как всегда богатая фантазия... :^( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:10 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Это было Темному. 2 Serge Gavrilov: А как из формы сослаться на объектную переменную, которая ссылается на эту форму? Сработает ли такое: for each o in mycollection if o.form is me then... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:14 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторМеняй ей Caption при открытии, а потом проверяй его на соответствие в For Each Только как это поможет закрыть конкретную форму? Все формы и так закрываются по по приведеному мной коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:17 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Ну дай побуйствовать фантазии А все формы можно и kill process msaccess закрыть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:19 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Ну схемы же могут быть разные. Сейчас я обычно делаю ссылку на форму в самой форме. Private mfrmMe As Access.Form Private Sub Form_Open(Cancel As Integer) Set mfrmMe = Me End Sub Тогда на кнопку "Выход": Private Sub cmdClose_Click() Set mfrmMe = Nothing End Sub И все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:29 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Сам спросил и сам ответил. Слава Всевышнему, это работает. Вот что я написал: 1. Класс fff: Код: plaintext 1. 2. 2. В произвольном модуле: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 3. В форме Form1: Код: plaintext 1. 2. 3. 4. 5. 6. Открылись 10 форм. Кликаю по ним и получаю разные числа от 1 до 10. Да здравствует Is Me! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:39 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторSet mfrmMe = Nothing Но это только если mfrmMe является последней ссылкой на форму. А где та ссылка, при помощи которой форма была открыта? Она ведь была открыта через Set...New? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:41 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторНо это только если mfrmMe является последней ссылкой на форму. Как понять последней? Она является единственной для данного экземпляра формы. автор А где та ссылка, при помощи которой форма была открыта? Она ведь была открыта через Set...New? Она сделала свое дело и давно умерла. Это же рассматривалось в топике топике экземпляры форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:45 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторОна сделала свое дело и давно умерла. Ну, ОК. Об этом надо дополнительно заботиться. Ведь если я буду пользоваться одной переменной для открывания всех этих форм, то в каждый момент времени эта переменная будет содержать ссылку на последнюю открытую форму. Это был бы красивый баг, если бы не удавалось закрыть именно ту форму, которая открыта последней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 23:52 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
автор автор Она сделала свое дело и давно умерла. Ну, ОК. Об этом надо дополнительно заботиться. Ведь если я буду пользоваться одной переменной для открывания всех этих форм, то в каждый момент времени эта переменная будет содержать ссылку на последнюю открытую форму. Это был бы красивый баг, если бы не удавалось закрыть именно ту форму, которая открыта последней. Извини Владимир Саныч (ты вроде просил не использовать местоимение вы), но ты, мне кажется не совсем понял. В каждый момент времени этой переменной просто нет поэтому и ссылки она содержать не может. Вот примерная процедура открытия экземпляра формы Public Function OpenFormInstance() Dim frm As Form_Form1 Set frm = New Form_Form1 frm.Initialize Set frm = Nothing End Function В Initialize я кое что проверяю и делаю форму видимой. Заметь, что ссылка приватная и убивается. А форма живет своей жизнью с помощью ссылки, которая содержится в ней самой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 00:08 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Я все понимаю. В этом примере все нормально. Но кто-нибудь может, не подумав, написать так: Public frm As Form_Form1 Public Function OpenFormInstance() Set frm = New Form_Form1 frm.Initialize End Function И это будет баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 00:16 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторИ это будет баг. Конечно, поэтому я это и не рассматривал, а привел одну из схем, кажущуюся мне наиболее простой и легко управляемой. Не надо ни за чем следить (например за коллекций форм), форма сама себя контролирует. Согласись, ведь это самый простой вариант. И кнопка "Выход" работает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 00:22 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Спасибо Владимир Саныч за общение, но надо еще немного поработать и спать, а то время у меня уже половина третьего :( Спокойной ночи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 00:27 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
Да, согласен. Спокойной ночи и с добрым утром! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 00:40 |
|
||
|
Как закрыть все открытые юзером формы через For Each ?
|
|||
|---|---|---|---|
|
#18+
авторДа здравствует Is Me! 1. На этом форуме видел обсуждение проблемы в 97 с операторм IS и несколькими ссылками (т.е. разными объектными переменными) на ОДНУ и ТУ же форму (вернее - на один и тот же экземпляр одной формы). Т.ч. не очевидно, что Is Me будет работать всегда в 97. 2. а для непронумерованных (в классе-коллекции форм) можно сделать (если не работает без сервис паков DoCmd.Close acForm, F.name): Код: plaintext 1. 2. 3. глюки DoCmd.Close бывают, кажется, в разных ассинхронных ситуациях (шибко заметны в сетке - на одной машине все ок, а на другой - в 100% закрывается другое окно(форма/отчет)), но при явной передаче фокуса есть надежда на безглючность. При этом неприятность может состояться, если обе конструкции (IS me и DoCmd.Close acForm, F.name) глючат в одной и той же версии 97. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 11:26 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1676478]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 481ms |

| 0 / 0 |
