Russian Belarusian English German Japanese Ukrainian

3.255

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

К внешнему виду окон в Windows предъявляются определенные требования. К счастью, C++Builder автоматически обеспечивает стандартный для Windows вид окон вашего приложения. Но вам надо продумать и указать, какие кнопки в полосе системного меню должны быть доступны в том или ином окне, должно ли окно допускать изменение пользователем его размеров, каким должен быть заголовок окна. Все эти характеристики окон обеспечиваются установкой и управлением свойствами формы.

Свойство BorderStyle определяет общий вид окна и операции с ним, которые разрешается выполнять пользователю. Это свойство может принимать следующие значения:

bsSizeable Обычный вид окна Windows с полосой заголовка, с возможностью для пользователя изменять размеры окна с помощью кнопок в полосе заголовка или с помощью мыши, потянув за какой-либо край окна. Это значение BorderStyle задается по умолчанию.
bsDialog Неизменяемое по размерам окно. Типичное окно диалогов.
bsSingle Окно, размер которого пользователь не может изменить, потянув курсором мыши край окна, но может менять кнопками в полосе заголовка.
bsToolWindow То же, что bsSingle, но с полосой заголовка меньшего размера.
bsSizeToolWin То же, что bsSizeable, но с полосой заголовка меньшего размера и с отсутствием в ней кнопок изменения размера.
bsNone Без полосы заголовка. Окно не только, не допускает изменения размера, но и не позволяет переместить его по экрану.

Свойство BorderIcons определяет набор кнопок, которые имеются в полосе заголовка. Множество кнопок задается элементами:

bySistemMenu Кнопка системного меню - это кнопка с крестиком, закрывающая окно.
byMinimize Кнопка Свернуть, сворачивает окно до пиктограммы.
byMaximize Кнопка Развернуть, разворачивает окно на весь экран.
byHelp Кнопка справки.

Следует отметить, что не все кнопки могут появляться при любых значениях BorderStyle.

Без особой необходимости не делайте окна приложения с изменяемыми пользователем размерами. При изменении размеров, если не применены специальные приемы, нарушается компоновка окна и пользователь ничего не выигрывает от своих операций с окном. Окно имеет смысл делать с изменяемыми размерами, только если это позволяет пользователю изменять полезную площадь каких-то расположенных в нем компонентов отображения и редактирования информации: текстов, изображений, списков и т.п.

Для основного окна приложения с неизменяемыми размерами наиболее подходящий стиль BorderStyle=bsSingle с исключением из числа доступных кнопок кнопки Развернуть (BarderIcons.byMaximize=false). Это позволит пользователю сворачивать окно, восстанавливать, но не даст возможности развернуть окно на весь экран или изменить размер окна.

Для вторичных диалоговых окон наиболее подходящий стиль BorderStyle=bsDialog. Можно также использовать BorderStyle=bsSingle, одновременно исключая из числа доступных кнопок кнопку Развернуть (задавая BorderIcons.byMaximize= false). Это позволит пользователю сворачивать диалоговое окно, если оно заслоняет на экране что-то нужное ему, восстанавливать окно, но не даст возможности развернуть окно на весь экран или изменить размер окна.

Избегайте, кок правило, стиля BorderStyle=bsNone. Невозможность переместить окно может создать пользователю трудности, если окно заслонит на экране что-то интересующее пользователя.

Свойство формы WindowState определяет вид, в котором окно первоначально предъявляется пользователю при выполнении приложения. Оно может принимать значения:

wsNormal нормальный вид окна (это значение WindowState используется по умолчанию)
wsMinimized окно свернуто
wsMaximized окно развернуто на весь экран

Если свойство WindowState имеет значение wsNormal или пользователь, манипулируя кнопками в полосе заголовка окна, привел окно в это состояние, то положение окна при запуске приложения определяется свойством Position, которое может принимать значения:

poDesigned Первоначальные размеры и положение окна во время выполнения те же, что во время проектирования. Это значение принимается по умолчанию, но обычно его следует изменить.
poScreenCenter Окно располагается в центре экрана. Размер окна тот, который был спроектирован. В мультиэкранных приложениях, работающих одновременно с множеством мониторов эта центральная позиция может быть несколько изменена, чтобы изображение попало точно на один монитор, определяемый свойством DefaultMonitor.
poDesktopCenter Окно располагается в центре экрана. Размер окна тот, который был спроектирован. Этот режим не приспосабливается к приложением с множеством мониторов.
poDefault Местоположение и размер окна определяет Windows, учитывая размер и разрешение экрана. При последовательных показах окна его положение сдвигается немного вниз и вправо.
poDefaultPosOnly Местоположение окна определяет Windows. При последовательных показах окна его положение сдвигается немного вниз и вправо. Размер окна - спроектированный.
poDefaultSizeOnly Размер окна определяет Windows, учитывая размер и разрешение экрана. Положение окна - спроектированное.
poMainFormCenter Это значение предусмотрено только начиная с C++Builder 5. Окно располагается в центре главной формы. Размер окна тот, который был спроектирован. Этот режим не приспосабливается к приложениям с множеством мониторов. Используется только для вторичных форм. Для главной формы действует так же, как poScreenCenter.
poOwnerFormCenter Это значение предусмотрено только начиная с C++Builder 6. Окно располагается в центре формы, указанной как владелец данной в свойстве Owner. Размер окна тот, который был спроектирован. Если свойство Owner указывает не форму, действует как poMainFormCenter.

Обычно целесообразно для главной формы приложения задавать значение Position ровным poScreenCenter или poDefoultPosOnly. И только в сравнительно редких случаях, когда на экране при выполнении приложения должно определенным образом располагаться несколько окон, имеет смысл оставлять значение poDesigned, принимаемое по умолчанию.

Если выбранное значение свойства Position предусматривает выбор размера формы самим Windows по умолчанию, то на этот выбор влияют свойства PixelsPerInch и Scaled. По умолчанию первое из них задается равным количеству пикселов на дюйм в системе, второе установлено в false. Если задать другое число пикселов на дюйм, то свойство Scaled автоматически становится равным true. В этом случае при запуске приложения размер формы будет изменяться в соответствии с пересчетом заданного числа пикселов на дюйм к реальному числу пикселов на дюйм в системе (но только при разрешающем это значении свойства Position).

Свойство AutoScroll определяет, будут ли на форме в процессе выполнения появляться автоматически полосы прокрутки в случае,если при выбранном пользователем размере окна не все компоненты помещаются в нем. Если значение AutoScroll равно true, то будут. В противном случае при уменьшении размера окна пользователь теряет доступ к компонентам, не поместившимся в его поле.

Свойство Icon задает пиктограмму формы. По умолчанию используется стандартная пиктограмма C++Builder. Нажав в Инспекторе Объектов кнопку с тремя точками в строке свойства Icon, вы попадаете в окно Редактора Изображений (PictureEditor). Щелкнув в нем на кнопке Load (загрузить), вы можете выбрать любой файл с изображением пиктограммы (файл с расширением .ico). С C++Builder поставляется некоторое число пиктограмм, расположенных в каталоге lmages\lcons.

Свойство Icon задает только пиктограмму формы, которая отображается в левом верхнем углу окна приложения в его нормальном состоянии. Но если пользователь свернет окно, то в полосе задач будет видна другая пиктограмма - пиктограмма приложения. Ту же пиктограмму увидит пользователь, если будет просматривать средствами Windows содержимое каталога. По умолчанию для нее используется стандартная пиктограмма С++Builder. При свертывании приложения рядом с пиктограммой в полосе задач пользователь будет видеть надпись, по умолчанию это имя приложения. Если вы хотите, то можете изменить эту пиктограмму и эту надпись. Для этого вы должны выполнить команду Project|Options и в открывшемся окне опций проекта перейти на страницу Application. В этом окне вы можете задать заголовок (Title),который увидит пользователь в полосе задач при сворачивании приложения. А кнопка LoadIcon позволяет вам выбрать пиктограмму, которая будет видна в полосе задач при сворачивании приложения или при просмотре пользователем каталога, в котором расположен выполняемый файл приложения.

Одно из основных свойств формы FormStyle, которое может принимать значения:

fsNormal Окно обычного приложения. Это значение FormStyle принято по умолчанию.
fsMDIForm Родительская форма приложения MDI, т.е. приложения с дочерними окнами, используемого при работе с несколькими документами одновременно.
fsMDIChild Дочерняя форма приложения MDI.
fsStayOnTop Окно, остающееся всегда поверх остальных окон Windows.

Значение FormStyle=fsStayOnTop делает окно всегда остающимся на экране поверх остальных окон не только данного приложения, но и всех других приложений, в которые может перейти пользователь.

Используйте стиль FormStyle=fsStayOnTop для отображения окон сообщений пользователю о каких-то аварийных ситуациях.

В ряде случаев полезно предоставить пользователю самому решать, сделать ли данное окно располагающимся всегда поверх остальных, или нет. Например, ему может временно потребоваться перейти в какое-то другое приложение, чтобы получить необходимую информацию, и при этом будет хотеться видеть поверх этого приложения ваше окно, чтобы сравнивать в этих двух окнах какие-то данные. Такую возможность легко предоставить пользователю. Введите в меню вашего окна раздел Поверх остальных, задайте свойство этого раздела AutoCheck=true, чтобы его состояние при каждом выполнении переключалось, и в обработчик щелчка на этом разделе вставьте оператор:

if (MStayOnTop->Checked)Form1->FormStyle = fsStayOnTop;
else Form1->FormStyle = fsNormal;

В этом коде подразумевается, что объект раздела меню, о котором идет речь, назван MStayOnTop. При выборе пользователем этого раздела меню в нем появится индикатор, а окно приобретет статус расположенного всегда поверх остальных. При повторном выборе этого раздела индикатор исчезнет и окно приобретет обычный статус.

Свойство AutoCheck введено только в C++Builder 6. В более ранних версиях перед приведенным выше оператором надо вставить оператор:

MStayOnTop->Checked =! MStayOnTop->Checked;

который программно переключает состояние раздела.

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Поиск по сайту