Постоянно влиять на свойства контроля доступа ms, используя VBA - PullRequest
1 голос
/ 25 марта 2011

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

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

Заранее спасибо за помощь!

1 Ответ

3 голосов
/ 25 марта 2011

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

Будьте предупреждены: это установит ALL ваших меток жирным шрифтом. Большинство шрифтов становятся шире, когда они выделены жирным шрифтом, поэтому вам может понадобиться настроить макеты форм после того, как вы это сделаете. Я настоятельно рекомендую создать резервную копию .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 
...