Создание рамок, обрамляющих форму

  Сначала я сделал просто и тупо - просто растянул на форме два прямоугольника rectDown и rectTop. Прямоугольник rectDown сделал приподнятым  и позиционировал его на самый нижний план формы. Прямоугольник rectTop сделал утопленным и размерами чуть меньше rectDown. Позиционировал его сверху rectDown так, чтобы казалось, что по краю формы создана рамка. Потом накидал на форму элементы. Прямоугольник rectDown покрасил в темно-серый цвет, а rectTop в зеленоватый - ну такой стиль был у всех форм в базе (Вы можете, конечно выбирать любые цвета). Визуально форма выглядела красиво, имела тонкую рамку по краям и зеленоватый цвет фона. Да, у меня еще строки заголовка у формы не было (тип границы - отсутствует). Для перетаскивания формы я использую фальшивую строку заголовка - надпись, за которую можно ухватиться мышкой (код будет рассмотрен в следующей статье пользовательского интерфейса).

Вроде было нормально сначала, красиво, но потом стали возникать трудности. Эти прямоугольники постоянно норовили сползти относительно друг друга и получалось некрасиво - с одной стороны рамка чуть шире, с другой чуть уже. Когда в режиме разработки приходилось выделять несколько контролов на форме мышкой (протаскиванием с нажатой клавишей), понятное дело, выбирался и сдвигался прямоугольник rectTop, который был раскинут по всей форме чуть выше rectDown, но ниже чем остальные контролы. Постоянно приходилось подгонять края формы к этим прямоугольникам. Ну, в общем, некоторое время я с этим кошмаром мирился ;)

Решил я поискать какой-нибудь API для этого, но пока не обнаружил (вернее, обнаружил для форм VB, но к формам Access он не подошел). Даже на форумах задавал вопрос, но внятных ответов не получил (видимо, плохо спрашивал ;).  Приступив к самостоятельным проискам, нащупал решение:

' нарисуем из двух прямоугольников вокруг формы рамку
Me.rectDown.Left = 30
Me.rectDown.Top = 30
Me.rectDown.Width = 9740
Me.rectDown.Height = 5290
Me.rectTop.Left = 80
Me.rectTop.Top = 70
Me.rectTop.Width = 9660
Me.rectTop.Height = 5210
DoCmd.RunCommand acCmdSizeToFitForm

тут все понятно - куда хотим (или куда удобнее) бросаем два прямоугольника. Положение их в режиме разработки не важно, куда-нибудь в угол затолкать ;). В режиме выполнения они сами позиционируются по краям формы. У Вас размер формы может быть другим, поэтому подберите подходящие себе размеры (в твипах). Как видно верхний прямоугольник rectTop (граница у него вдавленная) чуть меньше и позиционируется чуть ниже и правее прямоугольника rectDown (с типом границы - приподнятый). Прямоугольник rectDown окрашен в темно-зеленый цвет (повторяю, выбирайте свои подходящие цвета, нечего с меня копировать, а rectTop в зеленовато-желтый (он и создает общий цвет фона формы).

Ну и самая большая заморочка была скрыта в последней команде, точнее в ее отсутствии. Форма никак не хотела принимать размеры по правой и нижней стороне rectDown. Ну конечно, если выполнять команду меню Окно - По размеру формы, то все становилось на свои места - форма поджималась и принимала нужные размеры - то, что и требовалось. Пришлось поискать такую команду....

Вообще объект DoCmd.RunCommand богат на различные полезные константы, практически на все все команды меню и кнопки панелей инструментов имеются соответствующие константы. Просто пришлось поискать соответствующую команде меню Окно-По размеру формы ;) Решение просто поразило меня своей простотой ;)

Позже надо будет вплотную заняться интересным методом RunCommand объекта DoCmd (вынести в отдельную тему библиотеки), я даже сайтик обнаружил англицкий с довольно подробным описанием команд, осталось только переложить на великий и могучий ;)

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


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=7331