в bsDialog. Никакого программирования работа с кнопкой справки не требует. Все будет выполняться автоматически. Доста¬точно предусмотреть в файле Мр соответствующие темы и сделать на них ссылки в свойствах HelpContext компонентов. Эти темы будут появляться при соответст¬вующих действиях пользователя во всплывающих окнах.
Возможности контекстно-зависимой справки не ограничиваются изложенным выше. Можно обеспечить отображение тем во всплывающих окнах, обеспечить программное управление кнопкой справки, способами отображения тем и многое другое. Все это подробно изложено в источниках [3] и [5].
5.2 Проектирование окон с изменяемыми размерами
5.2.1 Выравнивание компонентов — свойство Align
Если проектируется окно, размеры которого пользователь может изменять во время выполнения приложения, то необходимо принять меры, чтобы компоненты в окне при этом тоже изменяли свои размеры или местоположение, равномерно распределяясь по площади окна и не оставляя пустых мест.
Пусть, например, вы проектируете форму, окно которой содержит панель Panel 1, на которой будут размещаться какие-то управляющие компоненты и список ListBoxl, панель Рапе12, в середине которой будет размещаться некоторая надпись в метке StaticTextl, и компонент Memol, в котором будут редактироваться тексты (рис. 5.7 а). Если, разместив все это на форме, вы не примете мер для того, чтобы при изменении размеров окна компоненты изменялись, то при том размере формы, который вы проектировали, все будет выглядеть нормально (рис. 5.7 а). Но если пользователь растянет размеры формы, надеясь увеличить площадь редактирова¬ния и длину списка, то приложение приобретет нелепый вид, показанный на рис. 5.7 б. Увеличение формы просто приводит к увеличению на ней пустого места.
Рис. 5.7
Результаты изменения размеров окна при неправильном проектировании
Чтобы избежать таких неприятностей, у многих компонентов и, в частности, у панелей, есть свойство Align — выравнивание. По умолчанию оно равно aLNone, что означает, что никакое выравнивание не осуществляется. Но его мож¬но задать равным аГГор, или alBottom, или alLeft, или alRight, что будет озна¬чать, что компонент должен занимать всю верхнюю, или нижнюю, или левую, или правую часть клиентской области компонента-контейнера. Под клиентской областью понимается вся свободная площадь формы или другого контейнера, в которой могут размещаться включенные в этот контейнер компоненты. Можно также задать свойству Align компонента значение alClient, что приводит к за¬полнению компонентом всей свободной клиентской области. Во всех этих случа¬ях размеры компонента будут автоматически изменяться при изменении разме¬ров контейнера. Начиная с C++Builder 6, добавлено еще одно возможное значе¬ние — alCustom (заказное). В этом случае положение компонента определяется вызовами CustomAlignlnsertBefore и CustomAlignPosition (см. раздел «AIign» в гл. 17, в разд. 17.1).
В приведенном выше примере логично для панели Рапе12 задать значение Align, равным alTop, чтобы шири
стр. 1 стр. 2 стр. 3 стр. 4 стр. 5 стр. 6 стр. 7 стр. 8 стр. 9 стр. 10 стр. 11 стр. 12 стр. 13 стр. 14 стр. 15 стр. 16 стр. 17 стр. 18 стр. 19 стр. 20 стр. 21 стр. 22 стр. 23 стр. 24 стр. 25 стр. 26 стр. 27 стр. 28 стр. 29 стр. 30 стр. 31 стр. 32 стр. 33 стр. 34 стр. 35 стр. 36 стр. 37 стр. 38 стр. 39 стр. 40 стр. 41 стр. 42 стр. 43 стр. 44 стр. 45 стр. 46 стр. 47 стр. 48 стр. 49 стр. 50 стр. 51 стр. 52 стр. 53 стр. 54 стр. 55 стр. 56 стр. 57 стр. 58 стр. 59 стр. 60 стр. 61 стр. 62 стр. 63 стр. 64 стр. 65 стр. 66 стр. 67 стр. 68 стр. 69 стр. 70 стр. 71 стр. 72 стр. 73 стр. 74 стр. 75 стр. 76 стр. 77 стр. 78 стр. 79 стр. 80 стр. 81 стр. 82 стр. 83 стр. 84 стр. 85 стр. 86 стр. 87 стр. 88 стр. 89 стр. 90 стр. 91 стр. 92 стр. 93 стр. 94 стр. 95 стр. 96 стр. 97 стр. 98 стр. 99 стр. 100 стр. 101 стр. 102 стр. 103 стр. 104 стр. 105
