Работа с компонентами
Цель лекции
Изучение изменения свойств компонентов и работы с событиями. Знакомство с общими для многих компонентов свойствами, с различными типами кнопок.
Форма
Мы много раз употребляли слово компонент, но что это такое?
Компонент - это некий виртуальный объект, который обладает своими свойствами и событиями, находится на Палитре компонентов, и который можно установить на форму.
Форма не находится в Палитре компонентов, однако, это тоже компонент! Ведь и у формы есть свойства и события, а мы имеем возможность менять первые и программировать вторые. Познакомимся с основными свойствами формы. Откройте Lazarus и новое приложение в нем. Поскольку ничего, кроме формы, в приложении пока нет, в Инспекторе объектов отображаются свойства формы. Причем все свойства нам не видны, придется прокручивать Инспектор объектов, чтобы рассмотреть остальные свойства или найти нужное.
Свойство Name нам уже знакомо - это имя компонента, в нашем случае, формы (англ. name - имя). По этому имени мы можем программно обращаться к его различным свойствам. Мы договорились, что главную форму мы будем называть fMain. Другими словами, свойству Name главной формы мы присвоим значение fMain. Так и сделаем. Как только мы переименовали форму, автоматически изменился и ее заголовок.
Свойство Caption - заголовок формы (англ. caption - заголовок). В это свойство впишем новый текст:
Моя форма
Как только мы впишем новое значение и нажмем <Enter>, текст заголовка изменится.
Поскольку нам придется сегодня много экспериментировать, будет нелишним сохранить новый проект. Сохраните его под именем Proba в папку
C:\Education\03-01
Вы еще не забыли, что модуль мы называем так же, как форму, но без начального "f"? В нашем случае, это будет Main.
Теперь давайте прогуляемся по основным свойствам формы, от начала к концу.
AlphaBlend - прозрачность. Это свойство не назовешь основным, однако в некоторых случаях оно может придать нашему приложению дополнительное изящество. Это логическое свойство, в нем мы можем выбрать либо False (англ. false - ложь) - значение по умолчанию, либо True (англ. true - истина). Другие значения в это свойство мы вписать не сможем. Если в этом свойстве установлено False, то форме запрещено быть прозрачной, если же True,- то разрешено. Давайте для пробы установим True.
AlphaBlendValue - значение прозрачности. Просто установить AlphaBlend в True недостаточно, чтобы сделать форму прозрачной. Нужно еще указать значение прозрачности в AlphaBlendValue. Это значение может изменяться от нуля (полная прозрачность) до 255 (полная непрозрачность). Другие значения вы просто не сможете установить. Имейте в виду, что если вы сделаете форму полностью прозрачной, то увидеть ее в рабочей программе не сможете. Закрывать придется либо с помощью кнопки программы в строке состояния (справа от кнопки "Пуск"), либо с помощью Диспетчера задач Windows, либо (если вы скомпилировали и загрузили программу командой "Запустить" или аналогичной кнопкой на Панели инструментов) выполнив команду Lazarus "Запуск -> Сбросить отладчик". Но лучше до этого не доводить. Установите значение в 125 (полупрозрачность), нажмите кнопку "Запустить" и посмотрите, что получилось:
Верните в свойство AlphaBlend значение False, так как для дальнейших экспериментов прозрачность окна будет нам мешать.
AutoScroll - автоматическая прокрутка формы. Также логическое свойство. Если установлено в True, то прокрутка окна формы разрешена. При этом, если какие то компоненты на форме стали невидны, например, при уменьшении размера формы, то в правой части формы появляется полоса прокрутки, позволяя прокручивать форму. Оставим здесь значение по умолчанию False - прокрутка запрещена.
AutoSize - автоматический размер. Если установлено в True, то форма автоматически будет принимать размер, достаточный только для установленных компонентов. Имейте в виду, что увидеть этот эффект вы сможете только в работающем приложении, не в форме. Если, например, установить на форму кнопку, и запустить приложение, то окно сожмется по размеру кнопки. Не очень предсказуемый эффект, поэтому данное свойство используется редко. Можете поэкспериментировать с этим свойством, но в конце установите в нем значение по умолчанию False.
BorderStyle - стиль обрамления формы. Очень интересное свойство, сильно влияющее на вид окна. Может принимать следующие значения:
- bsDialog - Диалоговое окно с невозможностью изменять размеры.
- bsNone - Окно без строки заголовка. Невозможно изменить размеры, невозможно перемещать по экрану.
- bsSingle - Окно, размеры которого нельзя менять, но которое можно свернуть/развернуть с помощью кнопок строки заголовка.
- bsSizeable - Обычное окно Windows.
- bsSizeToolWin - Строка заголовка более узкая, кнопки свернуть/развернуть отсутствуют, но можно менять размеры окна мышью, ухватившись за край или угол окна.
- bsToolWindow - Как bsSizeToolWin, но нельзя мышью менять размеры окна.
Установите значение bsDialog и запустите программу, посмотрите на внешний вид полученного окна.
Font - шрифт формы и всех компонентов на ней. Когда вы щелкаете по свойству, в его правой части появляется кнопка с тремя точками:
Если щелкнуть по этой кнопке, откроется диалог выбора шрифта. Если вы выберите, например, шрифт Times New Roman, обычный, размером 11 пикселей, то это скажется на всех компонентах, расположенных на форме. Они все получат этот шрифт "в наследство", хотя для отдельных компонентов затем можно будет выбрать и другой шрифт.
Height - Высота формы. Размер в пикселях от строки заголовка до нижней границы формы. Когда вы мышью меняете размеры формы, автоматически меняется и это значение. Изменить высоту окна можно и вручную, указав в этом свойстве нужный размер. Не работает, если окно показывается развернутым.
Left - Левая граница формы. Расстояние в пикселях от левой границы рабочего стола до левой границы формы. Не работает, если установлено положение формы по центру рабочего стола (экрана), или окно развернуто.
Position - Положение формы. Может принимать следующие значения:
- poDefault - положение окна определяет Windows.
- poDefaultPosOnly - размер окна соответствует проекту, а его положение определяет Windows.
- poDefaultSizeOnly - положение окна соответствует проекту, а его размер определяет Windows.
- poDesigned - значение по умолчанию, и размер, и положение определяет разработчик.
- poDesktopCenter - окно будет располагаться по центру рабочего стола.
- poMainFormCenter - данное значение применяют для дополнительных (неглавных) форм проекта. Окно будет располагаться по центру главного окна.
- poOwnerFormCenter - это значение также используется для дополнительных окон, располагая его по центру родительского окна, то есть, окна, из которого произошел вызов данного окна.
- poScreenCenter - окно располагается по центру экрана.
ShowHint - показ подсказок. Если вы подведете указатель мыши к какому-нибудь компоненту в Палитре компонентов (или к кнопке на Панели инструментов), но не будете нажимать кнопку, то через некоторое время появится всплывающая подсказка (хинт, от англ. hint - намёк, намекать) с именем компонента (кнопки). Свойство логическое, если установлено в True, то показ таких подсказок разрешен для всех установленных на форме компонентов, либо для самой формы.
Hint - текст самой подсказки. Попробуйте разрешить показ подсказок, а в этом свойстве напишите какой-нибудь текст, например, "Наша всплывающая подсказка". Запустите программу, наведите на форму указатель мыши, но не нажимайте на нее:
Top - Верхняя граница формы. Расстояние в пикселях от верхней границы рабочего стола до строки заголовка формы. Не работает, если установлено положение формы по центру рабочего стола (экрана), или окно развернуто.
Width - Ширина формы. Размер в пикселях от левой до правой границы формы. Когда вы мышью меняете размеры формы, автоматически меняется и это значение. Не работает, если окно показывается развернутым.
WindowState - Состояние окна. Может принимать следующие значения:
- wsFullScreen - во весь экран.
- wsMaximized - развернуто.
- wsMinimized - свернуто.
- wsNormal - обычное состояние. Это значение по умолчанию, чаще всего используется именно оно.
Для дальнейших экспериментов давайте установим следующие параметры формы:
BorderStyile = bsSizeable Height = 400 Position = poDesktopCenter Width = 600 WindowState = wsNormal