powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как понять, открыта ли форма!
25 сообщений из 25, страница 1 из 1
Как понять, открыта ли форма!
    #32403664
puzzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня одна формочка должна записывать в поля другой формы, если та в свою очередь открыта... А если вторая форма не открыта, попытка сделать это естественно вызывает ошибку. Как узнать, открыта форма или нет?
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32403705
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
Function fIsLoaded(ByVal strFormName As String) As Boolean
  fIsLoaded = False
  If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <>  0  Then
    If Forms(strFormName).CurrentView <>  0  Then fIsLoaded = True
  End If
End Function


Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32403710
Чумаков А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
волт один из вариантов

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Function IsLoaded(ByVal strFormName As String) As Boolean
On Error GoTo Err_isLoaded

 ' Возвращает значения True, если форма открыта в режиме формы или таблицы.
    
    Const conObjStateClosed =  0 
    Const conDesignView =  0 
    
    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
        If Forms(strFormName).CurrentView <> conDesignView Then
            IsLoaded = True
        End If
    End If
    

Exit_isLoaded:
    Exit Function

Err_isLoaded:
    MsgBox Err.Description
    Resume Exit_isLoaded

End Function
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32403747
6-6-6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из раздела простых решений:
заведи таблицу с переменными и в завизимости открываш или закрываш эту форму меняй переменную, а в коде обращайся к значению этой переменной.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32403976
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни фига себе простое решение...
Оно такое же простое, как я маленький трямвайчик
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404359
6-6-6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не пойму чего сдесь сложного?
таблица и две функции в пять - шесть строк и все!
А если придется определять еще и режим открытия формы (наприм. редакция или новый документ)?
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404378
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так:
Function fIsLoaded(fName$) As Boolean
On Error Resume Next
fIsLoaded = (Forms(fName).Name <> "")
End Function
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404385
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Guest:
А это шаг назад.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404407
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
ну так подумалось, что тут проще надо быть,
ибо спросили - КАК ПОНЯТЬ, открыта ли...
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404433
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторне пойму чего сдесь сложного?
таблица и две функции в пять - шесть строк и все!
А если придется определять еще и режим открытия формы (наприм. редакция или новый документ)?

Сложность в том, что нужно вручную повторять то, что аксес делает автоматически.
Вариант, который дал Sfagnum (этот вариант кстати указан и у Гетца) прост тем, что считывает существующее свойство из существующей коллекции.

В твоем варианте нужно:
- сделать таблицу (при наличии системы защиты, дать права пользователям)
- написать функцию(ии)
- делать запись/считывание значений в таблицу (что при сетевой версии является лишним и никому не нужным траффиком).

В варианте, который предложил Sfagnum нужно только одно - написать функцию.

Так какой вариант проще?
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404466
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы еще добавил, что нужно закладываться на всякие глюки, в результате которых значение в таблицу может просто не записаться.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404671
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Чем плох вариант Guest'а ?
Function fIsLoaded(fName$) As Boolean
On Error Resume Next
fIsLoaded = (Forms(fName).Name <> "")
End Function

С API - круче, быстрее? Почему "шаг назад" ?
Любопытно...
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404676
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вариант Sfagnum'а предусматривает проверку, в каком режиме открыта форма. Если открыта в конструкторе, то будет возвращено False.

Вариант Guest'а такую проверку не предусматривает.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404690
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Теперь исправлю свою IsLoaded :)
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404734
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант guest'a не сработает, если открыто несколько экземпляров формы.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404751
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Наверно, это касается любого варианта, который проверяет по названию формы.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404825
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторС API - круче, быстрее?
Что подразумевается под API?
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32404960
6-6-6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>incold я не спорю, что выше описанные решения проще.
в защиту таблицы могу сказать:
- таблица храниться в файле юзера, а не на файловом сервере так что на трафик - пофиг.
- в ней можно (и нужно) хранить не только данные об открытых формах (причем не всех формах, а только нужных), а например включен ли режим атонумерации, из какой формы открыли текущую форму, путь к файловому серверу (иногда и это нужно), и массу других штук и настроек.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405107
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Serge Gavrilov
Что подразумевается под API

Вечерний глюк :) увидел много букв - acSysCmdGetObjectState и почему-то решил, что это вызывается какая-то API-функция.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405169
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв защиту таблицы могу сказать:
- таблица храниться в файле юзера, а не на файловом сервере так что на трафик - пофиг.
- в ней можно (и нужно) хранить не только данные об открытых формах (причем не всех формах, а только нужных), а например включен ли режим атонумерации, из какой формы открыли текущую форму, путь к файловому серверу (иногда и это нужно), и массу других штук и настроек.

Слабенькие доводы в пользу таблицы
- даже если таблица в файле юзера - все равно нужно открыть рекордсет на считывание/запись данных (и как справедливо заметил AlexJuice нужно учитывать тот вариант когда по какой-то причине запись не произошла) - в общем увеличение времени работы (пусть не на много, но все-таки)
- не знаю что-такое режим автонумерации для формы - никак прокомментировать не могу
- из какой формы открыли текущую может и нужно знать, но не вижу смысла писать эти данные в таблицу. 1-е можно просмотреть коллекцию Forms - в ней формы перечислены в порядке открытия. 2-е если формы могут открываться не последовательно, то можно передавать любые параметры в форму через OpenArgs.
- тоже самое по поводу других штук и настроек - если хорошо знать свойства и методы существующих объектов аксеса, то в большинстве случаев нет потребности писать что-либо в таблицу.

Вот что можно писать в таблицу (или в реестр как некоторые делают) так это пользовательские настройки для форм, отчетов, какие-то значения по умолчанию и т.п.
Но писать в таблицу то, что можно считать из стандартных свойств...имхо - бесполезная трата времени.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405363
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю.

- у формы есть такое свойство как Tag. О нем многие забывают.
- для формы можно создать свои свойства и методы. Если уж ей так нужно, что бы она помнила, из какой формы она была открыта, то почему бы ни создать ей такой свойство.
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405387
6-6-6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВот что можно писать в таблицу (или в реестр как некоторые делают) так это пользовательские настройки для форм, отчетов, какие-то значения по умолчанию и т.п.
Но писать в таблицу то, что можно считать из стандартных свойств...имхо - бесполезная трата времени.
я и менно про это и говорил но другими словами.
К примеру ситуация: Существует некоторая форма, назовем ее справочник, который вызывается из трех разных по функциональности форм. Нужно чтобы запись из справочника перенеслась в форму из которой она была открыта, но все три формы в данный момент открыты . Как определить в какую форму подставлять запись?
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405396
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторК примеру ситуация: Существует некоторая форма, назовем ее справочник, который вызывается из трех разных по функциональности форм. Нужно чтобы запись из справочника перенеслась в форму из которой она была открыта, но все три формы в данный момент открыты. Как определить в какую форму подставлять запись?

Именно в этом случае лучше всего подходит OpenArgs, или функция инициализации справочника, или глобальные переменные.
Но писать это в таблицу...
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405441
6-6-6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пас.)))
спасибо за приятную беседу
...
Рейтинг: 0 / 0
Как понять, открыта ли форма!
    #32405451
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взаимно
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как понять, открыта ли форма!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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