|
|
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Access 2000, ADP, MS SQL Server 2000. В проете 15 форм, причем 14 из них могут быть одновременно открыты. Задача: при открытии 15-й (Админской) формы проверять, открыти ли остальные, и если открыты, то все позакрывать с сохранением данных, чтобы осталась толко одна (админская). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 08:58 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ну по крайней мере я бы делал так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 09:06 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Сейчас попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 09:39 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Уточнение :) Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:03 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:46 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Ну цикл по Forms.Count (да еще и в обратном порядке) - это наворот (ИМХО) А, то что форма не правильно закрывается - это факт Спасибо, а то я скопировал, а не посмотрел :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:50 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Уточнение :) Если неактивная(да еще может быть невидимая) форма была открыта не через DoCmd а как экземпляр через Set, то Docmd.Close AcForm, Forms(i).Name работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:53 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Блин - Nektov - ну кто так пишет? И са напортачил и мну с толку сбил :) Зачем по всем формам-то бежать? Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:56 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
LatukЕсли неактивная(да еще может быть невидимая) форма \r была открыта не через DoCmd а как экземпляр через Set, \r то Docmd.Close AcForm, Forms(i).Name работать не будет.\r У меня работает. Что я неправильно делаю? :-)\r /topic/76552&pg=-1\r \r paparomeНу цикл по Forms.Count (да еще и в обратном порядке) - это наворот (ИМХО) \r \r Это не наворот а необходимость при работе с коллекцией, когда число членов коллекции меняется. Ваш способ может не закрыть все формы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 11:14 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Это не наворот а необходимость при работе с коллекцией, когда число членов коллекции меняется. Ваш способ может не закрыть все формы Пример можно, а то что-то мало вериться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 11:17 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
авторПример можно, а то что-то мало вериться Можно, откройте штук пять форм и закройте способом For Each ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 11:27 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
ОК Согласен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 11:33 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
>Docmd.Close AcForm, Forms(i).Name работать не будет. >У меня работает. Что я неправильно делаю? :-) Экземпляры форм попадают в коллекцию Forms с одинаковыми именами Поэтому Docmd.Close AcForm, Forms(i).Name закроет не ту которая Forms(i), а ту которая Forms(i).Name="XXX" и приэтом она первая в коллекции Моделируем ситуацию Форма Forms(2).Name="XXX" и еще один экземпляр Forms(5).Name="XXX" Если Forms(2) активна мы ее проскочим Forms(5) не активна попытавшись ее закрыть мы закроем Forms(2) С удивлением обнаруживаем,что закрыли активную форму, а не активная осталась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 11:48 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
авторУ меня работает. Что я неправильно делаю? :-) :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 11:51 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
2Latuk авторС удивлением обнаруживаем,что закрыли активную форму, а не активная осталась. С этим я не спорю... В предыдущеим сообщении вы заметили авторЕсли неактивная(да еще может быть невидимая) форма была открыта не через DoCmd а как экземпляр через Set, то Docmd.Close AcForm, Forms(i).Name работать не будет. Я ответил, что это не так, я не прав? Работать, т.е. закрывать будет, но не так как хотелось бы. Это другой вопрос, и по моему решаемый, исходя из предложений, имеющихся в обсуждении, на которое я сослался. Решение о способе должно учитывать конкретную ситуацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 13:01 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
Ну если неправильную нередсказуемую работу работой то да Хотя это уже теология :) Указанные в обсужнении сособы громоздки и не однозначны например если уничтожать ссылки в коллекции, то форма не закроется если есть еще какие нибудь ссылки на нее. Или DoCmd.Close не может закрыть невидимую форму. Есть гораздо менее громоздкий и легко заменяющий конструкцию Docmd.Close AcForm, Forms(i).Name способ Закрыть форму как виндовс окно Public Const SW_HIDE = 0 Public Const SW_SHOWNORMAL = 1 Public Const SW_NORMAL = 1 Public Const SW_SHOWMINIMIZED = 2 Public Const SW_SHOWMAXIMIZED = 3 Public Const SW_MAXIMIZE = 3 Public Const SW_SHOWNOACTIVATE = 4 Public Const SW_SHOW = 5 Public Const SW_MINIMIZE = 6 Public Const SW_SHOWMINNOACTIVE = 7 Public Const SW_SHOWNA = 8 Public Const SW_RESTORE = 9 Public Const SW_SHOWDEFAULT = 10 Public Const SW_MAX = 10 Public Const WM_CLOSE = &H10 Public Const INFINITE = &HFFFFFFFF Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any _ ) _ As Long Заменяем Docmd.Close AcForm, frm.Name на Call SendMessage(frm.hwnd, WM_CLOSE, 0&, 0&) И все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 14:05 |
|
||
|
Как закрыть все формы в проекте, кроме активной?
|
|||
|---|---|---|---|
|
#18+
2Латук сафсем не па мушски, слюшай, да. ви утверждал, что конструкций не работает. Он работает. Признайся, что не прав, не бери грех на душа, да. а апёй тоша мошно. пачему нельзя. неспаритвна, тольки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 15:02 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32503992&tid=1674895]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
201ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 530ms |

| 0 / 0 |
