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

Форум: MS ACCESS

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

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

 
 

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

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

тема: научите пользоваться for each ...
 
 автор: joka   (24.03.2009 в 21:11)   личное сообщение
 
 

хочу с помощью него пройти по всем формам в базе и поменять какое нибудь свойство...
например, хочу в том же месте где буду ставить\снимать защиту от шифта, пройтись по всем формам и выставить параметр "контекстное меню" в да\нет - соответственно...

  Ответить  
 
 автор: joka   (24.03.2009 в 21:39)   личное сообщение
 
 

вообще возможно как нибудь обойти все формы?

  Ответить  
 
 автор: Explorer   (24.03.2009 в 21:40)   личное сообщение
 
 

легко :)))


ты вообще пробовал?

  Ответить  
 
 автор: joka   (24.03.2009 в 21:46)   личное сообщение
 
 

да пробовал не понял как обойти формы:(

Propeties получилось обойти, а формы не получается чтото...

  Ответить  
 
 автор: Lukas   (24.03.2009 в 23:07)   личное сообщение
 
 

Для открытых форм:

    Dim frm As Form
    For Each frm In Forms
        Debug.Print frm.Name
    Next

Для всех форм приложения:

    Dim i As Integer
    For i = 0 To CurrentProject.AllForms.Count - 1
        Debug.Print CurrentProject.AllForms(i).Name
    Next

  Ответить  
 
 автор: joka   (25.03.2009 в 11:15)   личное сообщение
 
 

спасибо!

  Ответить  
 
 автор: joka   (26.03.2009 в 12:40)   личное сообщение
 
 

что то не получается пройтись по свойствам форм:(

пробую на открытие стартовой формы поставить такой код
Private Sub Form_Open(Cancel As Integer)
Dim frm As AccessObject
For Each frm In Application.CurrentProject.AllForms
Forms.Item(frm.Name).ShortcutMenu = False
Next frm
End Sub

говорит что не могу найти форму... почему кто подскажет?
заранее спасибо!

  Ответить  
 
 автор: Мюллер   (26.03.2009 в 15:57)   личное сообщение
 
 

Потому, что форма, которую он не может найти - закрыта.

  Ответить  
 
 автор: joka   (26.03.2009 в 21:07)   личное сообщение
 
 

то есть никак не получится пройтись по всем формам и програмнно поменять одно свойство у всех?

  Ответить  
 
 автор: joka   (26.03.2009 в 21:09)   личное сообщение
 
 

или надо открыть как то чтобы пользователь форму не увидел поменять свойство и закрыть ее?

  Ответить  
 
 автор: Lukas   (26.03.2009 в 22:37)   личное сообщение
 
 

Свойства формы можно устанавливать только тогда, когда она открыта (в любом режиме).
Специально открывать и закрывать форму для настроек под управлением пользователя мягко говоря неправильно. Настраивать свойства формы под конкретного пользователя или конкретную задачу следует в процедуре открытия формы (либо в процедуре создания экземпляра класса формы).

  Ответить  
 
 автор: Гамлет   (26.03.2009 в 22:47)   личное сообщение
 
 

Получается не получиться пробежаться по всем формам (закрытым) вот так
Dim i As Integer
      For i = 0 To CurrentProject.AllForms.Count - 1
         CurrentProject.AllForms(i).ShortcutMenu = False
      Next
и поменять св-во ShortcutMenu ?

  Ответить  
 
 автор: Lukas   (26.03.2009 в 23:05)   личное сообщение
 
 

Не надо запрещать пользователям пользовать контекстные меню. Это мощный и удобный элемент управления. Их либо надо создавать заранее и назначать формам в режиме конструктора, либо создавать динамически при загрузке формы.

  Ответить  
 
 автор: Lukas   (26.03.2009 в 23:12)   личное сообщение
 
 

А если очень хочется:

Public Sub QQQQ()
    Dim i As Integer
    Dim strFormName As String
    For i = 0 To CurrentProject.AllForms.Count - 1
        strFormName = CurrentProject.AllForms(i).Name
        DoCmd.OpenForm strFormName, acDesign
        Forms(strFormName).ShortcutMenu = False
        DoCmd.Close acForm, strFormName, acSaveYes
    Next i
End Sub

  Ответить  
 
 автор: Гамлет   (26.03.2009 в 23:23)   личное сообщение
 
 

ОК, мне всё понятно

  Ответить  
 
 автор: joka   (27.03.2009 в 09:17)   личное сообщение
 
 

спасибо

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