2011-03-25 2 views
1

У меня довольно большое приложение Access в QA. У меня появилось несколько вопросов, таких как «некоторые элементы выделены жирным шрифтом, а некоторые нет», что неудивительно, учитывая то, как это приложение развивалось. Я хотел бы написать код, который запускается один раз и устанавливает свойства управления, а не код, который запускается, когда форма открывается, чтобы установить свойства каждого элемента управления. Я могу сделать последнее, но никогда не думал об этом до сегодняшнего дня. Есть так много таблиц на многих формах, что я хотел бы написать функцию, которая циклически проходит через все мои элементы управления, задает значение Font Weight для меток и сохраняет это как значение для этого элемента управления.Постоянно влиять на свойства контроля доступа ms, используя VBA

Я отлично справляюсь с велосипедом через элементы управления, находя бары, но фактически устанавливая свойство и сохраняя его навсегда, по сравнению с тем, что происходит на каком-то запущенном событии, меня бросает. Кто-нибудь это сделал?

Заранее благодарим за вашу помощь!

ответ

3

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

Будьте предупреждены: это установит ВСЕ ваших ярлыков, выделенных жирным шрифтом. Большинство шрифтов становятся более широкими, когда они выделены жирным шрифтом, поэтому вам может понадобиться настроить макеты форм после этого. Я бы настоятельно рекомендовал создать резервную копию .mdb, прежде чем вы попробуете это.

Sub SetFormProperties() 
Dim ao As AccessObject, Frm As Form, Ctl As Control 

    For Each ao In CurrentProject.AllForms 
     If ao.IsLoaded Then 
      Debug.Print ao.Name; " skipped...form was already loaded" 
     Else 
      DoCmd.OpenForm ao.Name, acDesign 
      Set Frm = Forms(ao.Name) 

      '-------------------' 
      'Set properties here' 
      For Each Ctl In Frm.Controls 
       If Ctl.ControlType = acLabel Then 
        Ctl.FontWeight = 700 
        '---OR---' 
        Ctl.FontBold = True 
       End If 
      Next Ctl 
      '-------------------' 

      DoCmd.Close acForm, Frm.Name, acSaveYes 
     End If 
    Next ao 
End Sub 
+0

Фантастический! Спасибо. Это то, что мне нужно. –

Смежные вопросы