Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вот такой вапрос
 
 автор: ddi   (15.06.2011 в 15:53)   личное сообщение
 
 

Как из ВБА узнать открыта ли форма(ы) и закрыть их (всех )

  Ответить  
 
 автор: kot_k_k   (15.06.2011 в 15:58)   личное сообщение
 
 

давно этим пользуюсь - вставляю имя формы и запрашиваю - True открыта


Function FormIsOpen_My(ParamArray Ar())

    FormIsOpen_My = (SysCmd(acSysCmdGetObjectState, acForm, Ar(0)) And acObjStateOpen) <> False

End Function


есть еще коллекция форм и кажись открытых форм по ним мона пробежаться

  Ответить  
 
 автор: Силblч   (15.06.2011 в 15:59)   личное сообщение
 
 


Public Function IsFormLoaded(frmname$) As Boolean
Dim c As Object
On Error GoTo errIsFormLoaded

'Для каждой из форм
For Each c In Forms

'Проверяем открыта ли форма
If c.Name Like frmname Then IsFormLoaded = True: Exit Function
Next
For Each c In Reports

'Проверяем для одноименного отчета
If c.Name Like frmname Then IsFormLoaded = True: Exit Function

Next
'Если что-то не срослось - всё нафих...
IsFormLoaded = False
Exit Function
errIsFormLoaded:
MsgBox Err.Description
IsFormLoaded = False
Exit Function
End Function

  Ответить  
 
 автор: ddi   (15.06.2011 в 16:03)   личное сообщение
 
 

эт понятно надо закрыть все открытые формы

  Ответить  
 
 автор: ddi   (15.06.2011 в 16:06)   личное сообщение
 
 

Надо чтобы функция проверала есть ли открытые формы если есть закрить их всех на ****

  Ответить  
 
 автор: osmor   (15.06.2011 в 16:14)   личное сообщение
 
 

все открытые формы попадают в коллекцию forms
dim i as integer
dim intCount as integer
intCount = forms.count
for i = intCount to 0 step -1
docmd.close acform, forms(i).name
next i


как-то так
(только возможно что не
for i = intCount to 0 ...
а
for i = intCount to 1 ...
)
не помню уже точно

  Ответить  
 
 автор: ddi   (15.06.2011 в 16:17)   личное сообщение
 
 

а точнеее
Function CloseAllForms() As Boolean
On Error Goto AtEnd
Do While Forms.Count
DoCmd.Close acForm, Forms(0).Name
Loop
AtEnd:
CloseAllForms = (Forms.Count = 0)

End Function

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList