|
|
|||||||||||||||||||||||||||||
|
Создание рамок, обрамляющих формуИсточник: accessboom
Сначала я сделал просто и тупо - просто растянул на форме два прямоугольника rectDown и rectTop. Прямоугольник rectDown сделал приподнятым и позиционировал его на самый нижний план формы. Прямоугольник rectTop сделал утопленным и размерами чуть меньше rectDown. Позиционировал его сверху rectDown так, чтобы казалось, что по краю формы создана рамка. Потом накидал на форму элементы. Прямоугольник rectDown покрасил в темно-серый цвет, а rectTop в зеленоватый - ну такой стиль был у всех форм в базе (Вы можете, конечно выбирать любые цвета). Визуально форма выглядела красиво, имела тонкую рамку по краям и зеленоватый цвет фона. Да, у меня еще строки заголовка у формы не было (тип границы - отсутствует). Для перетаскивания формы я использую фальшивую строку заголовка - надпись, за которую можно ухватиться мышкой (код будет рассмотрен в следующей статье пользовательского интерфейса). Вроде было нормально сначала, красиво, но потом стали возникать трудности. Эти прямоугольники постоянно норовили сползти относительно друг друга и получалось некрасиво - с одной стороны рамка чуть шире, с другой чуть уже. Когда в режиме разработки приходилось выделять несколько контролов на форме мышкой (протаскиванием с нажатой клавишей), понятное дело, выбирался и сдвигался прямоугольник rectTop, который был раскинут по всей форме чуть выше rectDown, но ниже чем остальные контролы. Постоянно приходилось подгонять края формы к этим прямоугольникам. Ну, в общем, некоторое время я с этим кошмаром мирился ;) Решил я поискать какой-нибудь API для этого, но пока не обнаружил (вернее, обнаружил для форм VB, но к формам Access он не подошел). Даже на форумах задавал вопрос, но внятных ответов не получил (видимо, плохо спрашивал ;). Приступив к самостоятельным проискам, нащупал решение: ' нарисуем из двух прямоугольников вокруг формы рамку тут все понятно - куда хотим (или куда удобнее) бросаем два прямоугольника. Положение их в режиме разработки не важно, куда-нибудь в угол затолкать ;). В режиме выполнения они сами позиционируются по краям формы. У Вас размер формы может быть другим, поэтому подберите подходящие себе размеры (в твипах). Как видно верхний прямоугольник rectTop (граница у него вдавленная) чуть меньше и позиционируется чуть ниже и правее прямоугольника rectDown (с типом границы - приподнятый). Прямоугольник rectDown окрашен в темно-зеленый цвет (повторяю, выбирайте свои подходящие цвета, нечего с меня копировать, а rectTop в зеленовато-желтый (он и создает общий цвет фона формы). Ну и самая большая заморочка была скрыта в последней команде, точнее в ее отсутствии. Форма никак не хотела принимать размеры по правой и нижней стороне rectDown. Ну конечно, если выполнять команду меню Окно - По размеру формы, то все становилось на свои места - форма поджималась и принимала нужные размеры - то, что и требовалось. Пришлось поискать такую команду.... Вообще объект DoCmd.RunCommand богат на различные полезные константы, практически на все все команды меню и кнопки панелей инструментов имеются соответствующие константы. Просто пришлось поискать соответствующую команде меню Окно-По размеру формы ;) Решение просто поразило меня своей простотой ;) Позже надо будет вплотную заняться интересным методом RunCommand объекта DoCmd (вынести в отдельную тему библиотеки), я даже сайтик обнаружил англицкий с довольно подробным описанием команд, осталось только переложить на великий и могучий ;) Но вернемся к нашим бара... то есть формам. Вставьте этот нехитрый код в процедуру открытия формы (при наличии, конечно прямоугольников с именами rectDown и rectTop) и экспериментируйте со смещениями, цветами и количеством ;) прямоугольников. Вы обязательно достигните результата, который полностью удовлетворит Вас и окажется наиболее гармоничным в оформлении Вашего пользовательского интерфейса. Все таки форма с красивым бордюром выглядит стильно и профессионально.... Ссылки по теме
|
|