Изучение изменения свойств компонентов и работы с событиями. Знакомство с общими для многих компонентов свойствами, с различными типами кнопок.
Мы много раз употребляли слово компонент, но что это такое?
Компонент - это некий виртуальный объект, который обладает своими свойствами и событиями, находится на Палитре компонентов, и который можно установить на форму.
Форма не находится в Палитре компонентов, однако, это тоже компонент! Ведь и у формы есть свойства и события, а мы имеем возможность менять первые и программировать вторые. Познакомимся с основными свойствами формы. Откройте Lazarus и новое приложение в нем. Поскольку ничего, кроме формы, в приложении пока нет, в Инспекторе объектов отображаются свойства формы. Причем все свойства нам не видны, придется прокручивать Инспектор объектов, чтобы рассмотреть остальные свойства или найти нужное.
Свойство Name нам уже знакомо - это имя компонента, в нашем случае, формы (англ. name - имя). По этому имени мы можем программно обращаться к его различным свойствам. Мы договорились, что главную форму мы будем называть fMain. Другими словами, свойству Name главной формы мы присвоим значение fMain. Так и сделаем. Как только мы переименовали форму, автоматически изменился и ее заголовок.
Свойство Caption - заголовок формы (англ. caption - заголовок). В это свойство впишем новый текст:
Моя форма
Как только мы впишем новое значение и нажмем <Enter>, текст заголовка изменится.
Поскольку нам придется сегодня много экспериментировать, будет нелишним сохранить новый проект. Сохраните его под именем Proba в папку
C:\Education\03-01
Вы еще не забыли, что модуль мы называем так же, как форму, но без начального "f"? В нашем случае, это будет Main.
Теперь давайте прогуляемся по основным свойствам формы, от начала к концу.
AlphaBlend - прозрачность. Это свойство не назовешь основным, однако в некоторых случаях оно может придать нашему приложению дополнительное изящество. Это логическое свойство, в нем мы можем выбрать либо False (англ. false - ложь) - значение по умолчанию, либо True (англ. true - истина). Другие значения в это свойство мы вписать не сможем. Если в этом свойстве установлено False, то форме запрещено быть прозрачной, если же True,- то разрешено. Давайте для пробы установим True.
False на True, или наоборот, можно либо выбрав нужное значение, либо дважды щелкнув по изменяемому значению.AlphaBlendValue - значение прозрачности. Просто установить AlphaBlend в True недостаточно, чтобы сделать форму прозрачной. Нужно еще указать значение прозрачности в AlphaBlendValue. Это значение может изменяться от нуля (полная прозрачность) до 255 (полная непрозрачность). Другие значения вы просто не сможете установить. Имейте в виду, что если вы сделаете форму полностью прозрачной, то увидеть ее в рабочей программе не сможете. Закрывать придется либо с помощью кнопки программы в строке состояния (справа от кнопки "Пуск"), либо с помощью Диспетчера задач Windows, либо (если вы скомпилировали и загрузили программу командой "Запустить" или аналогичной кнопкой на Панели инструментов) выполнив команду Lazarus "Запуск -> Сбросить отладчик". Но лучше до этого не доводить.
Установите значение в 125 (полупрозрачность), нажмите кнопку "Запустить" и посмотрите, что получилось:
(рис 3.1) Полупрозрачное окно
Верните в свойство AlphaBlend значение False, так как для дальнейших экспериментов прозрачность окна будет нам мешать.
AutoScroll - автоматическая прокрутка формы. Также логическое свойство. Если установлено в True, то прокрутка окна формы разрешена. При этом, если какие то компоненты на форме стали невидны, например, при уменьшении размера формы, то в правой части формы появляется полоса прокрутки, позволяя прокручивать форму. Оставим здесь значение по умолчанию False - прокрутка запрещена.
AutoSize - автоматический размер. Если установлено в True, то форма автоматически будет принимать размер, достаточный только для установленных компонентов. Имейте в виду, что увидеть этот эффект вы сможете только в работающем приложении, не в форме. Если, например, установить на форму кнопку, и запустить приложение, то окно сожмется по размеру кнопки. Не очень предсказуемый эффект, поэтому данное свойство используется редко. Можете поэкспериментировать с этим свойством, но в конце установите в нем значение по умолчанию False.
BorderStyle - стиль обрамления формы. Очень интересное свойство, сильно влияющее на вид окна. Может принимать следующие значения:
bsDialog - Диалоговое окно с невозможностью изменять размеры.bsNone - Окно без строки заголовка. Невозможно изменить размеры, невозможно перемещать по экрану.bsSingle - Окно, размеры которого нельзя менять, но которое можно свернуть/развернуть с помощью кнопок строки заголовка.bsSizeable - Обычное окно Windows.bsSizeToolWin - Строка заголовка более узкая, кнопки свернуть/развернуть отсутствуют, но можно менять размеры окна мышью, ухватившись за край или угол окна.bsToolWindow - Как bsSizeToolWin, но нельзя мышью менять размеры окна.Установите значение bsDialog и запустите программу, посмотрите на внешний вид полученного окна.
Font - шрифт формы и всех компонентов на ней. Когда вы щелкаете по свойству, в его правой части появляется кнопка с тремя точками:
(рис 3.2) Раскрывающее свойство Font
Если щелкнуть по этой кнопке, откроется диалог выбора шрифта. Если вы выберите, например, шрифт Times New Roman, обычный, размером 11 пикселей, то это скажется на всех компонентах, расположенных на форме. Они все получат этот шрифт "в наследство", хотя для отдельных компонентов затем можно будет выбрать и другой шрифт.
Height - Высота формы. Размер в пикселях от строки заголовка до нижней границы формы. Когда вы мышью меняете размеры формы, автоматически меняется и это значение. Изменить высоту окна можно и вручную, указав в этом свойстве нужный размер. Не работает, если окно показывается развернутым.
Left - Левая граница формы. Расстояние в пикселях от левой границы рабочего стола до левой границы формы. Не работает, если установлено положение формы по центру рабочего стола (экрана), или окно развернуто.
Position - Положение формы. Может принимать следующие значения:
poDefault - положение окна определяет Windows.poDefaultPosOnly - размер окна соответствует проекту, а его положение определяет Windows.poDefaultSizeOnly - положение окна соответствует проекту, а его размер определяет Windows.poDesigned - значение по умолчанию, и размер, и положение определяет разработчик.poDesktopCenter - окно будет располагаться по центру рабочего стола.poMainFormCenter - данное значение применяют для дополнительных (неглавных) форм проекта. Окно будет располагаться по центру главного окна.poOwnerFormCenter - это значение также используется для дополнительных окон, располагая его по центру родительского окна, то есть, окна, из которого произошел вызов данного окна.poScreenCenter - окно располагается по центру экрана.ShowHint - показ подсказок. Если вы подведете указатель мыши к какому-нибудь компоненту в Палитре компонентов (или к кнопке на Панели инструментов), но не будете нажимать кнопку, то через некоторое время появится всплывающая подсказка (хинт, от англ. hint - намёк, намекать) с именем компонента (кнопки). Свойство логическое, если установлено в True, то показ таких подсказок разрешен для всех установленных на форме компонентов, либо для самой формы.
Hint - текст самой подсказки. Попробуйте разрешить показ подсказок, а в этом свойстве напишите какой-нибудь текст, например, "Наша всплывающая подсказка". Запустите программу, наведите на форму указатель мыши, но не нажимайте на нее:
(рис 3.3) Всплывающая подсказка
Top - Верхняя граница формы. Расстояние в пикселях от верхней границы рабочего стола до строки заголовка формы. Не работает, если установлено положение формы по центру рабочего стола (экрана), или окно развернуто.
Width - Ширина формы. Размер в пикселях от левой до правой границы формы. Когда вы мышью меняете размеры формы, автоматически меняется и это значение. Не работает, если окно показывается развернутым.
WindowState - Состояние окна. Может принимать следующие значения:
wsFullScreen - во весь экран.wsMaximized - развернуто.wsMinimized - свернуто.wsNormal - обычное состояние. Это значение по умолчанию, чаще всего используется именно оно.Для дальнейших экспериментов давайте установим следующие параметры формы:
BorderStyile = bsSizeable
Height = 400
Position = poDesktopCenter
Width = 600
WindowState = wsNormal
Name, у многих из них есть такие свойства, как Caption, Left, Top, Height, Width и т.п. Изучив эти свойства у одних компонентов, мы с легкостью сможем ими пользоваться и в других.Панель - это своего рода контейнер, для размещения на ней связанных по какому-то признаку компонентов. Размещенные на панели компоненты "привязываются" к ней. При перемещении панели по форме, будут перемещаться и эти компоненты. Панель нередко используют и для украшения формы. На форме может быть несколько панелей.
После изучения предыдущего раздела, у вас должен быть открыт проект с пустой формой, настроенной определенным образом. Если это так, установим на форму панель. Для этого щелкните по компоненту TPanel в палитре компонентов, а затем щелкните по форме, установив на нее панель:
(рис 3.4) Компонент TPanel
У вас на форме появится некое прямоугольное образование, в центре которого будет написано Panel1 - имя компонента, которое Lazarus присвоил по умолчанию. Если мы будем устанавливать другие панели, Lazarus назовет их Panel2, Panel3 и т.д. Если на форме у нас будет только одна панель, то цифру в названии (свойство Name) и вовсе можно будет убрать. В данном случае у нас будет несколько панелей, так что оставим панели имя, которое ей присвоил Lazarus по умолчанию. Рассмотрим некоторые свойства панелей, которыми нам часто придется пользоваться (компонент Panel1 при этом должен быть выделен).
Name |
- имя панели. Если будем ее переименовывать, то в этом свойстве. |
Caption |
- текст в центре панели, в нашем случае, это Panel1. Этот текст очень редко используется, обычно его удаляют, чтобы панель была пустой. Мы тоже очистим этот текст. |
Left, Top |
- расстояние в пикселях, соответственно, от левой и верхней границ формы до панели. Установим в обоих свойствах значение 10. |
Height |
- высота панели в пикселях, установим ее в 320. |
Width |
- ширина панели в пикселях, установим ее в 580. |
Теперь сохраните изменения в проекте и запустите его. Вы увидите окно с выпуклой панелью, под которой осталось место для кнопки. Так обычно оформляют диалоговые окна. Однако выпуклость панели можно и убрать, превратив ее в аккуратную рамочку. Закройте окно и вернитесь к проекту. Рассмотрим три свойства, влияющих на выпуклость панели.
BevelInner - определяет стиль внутренней границы панели. Может иметь значения:
bvNone - никакого стиля. (по умолчанию для BevelInner)bvSpace - пустая отрисовка границы, визуально не отличается от bvNone.bvRaised - приподнятая граница. (по умолчанию для BevelOuter)bvLowered - утопленная граница.BevelOuter - определяет стиль внешней границы панели. Может иметь такие же значения, как и BevelInner.
BevelWidth - ширина окантовки в пикселях. По умолчанию, имеет значение 1, что обычно вполне достаточно. Чтобы еще больше подчеркнуть границу, можно установить значение 2, однако дальнейшее увеличение ширины не сделает панель красивей, скорее, наоборот. Впрочем, это зависит от вашего вкуса и конкретного дизайна.
BevelOuter установите в bvRaised, а чтобы сделать красивую окантовку, сделайте BevelInner = bvLowered, а BevelOuter = bvRaised. Для ширины окантовки вполне хватит 1 пикселя.Попробуйте "поиграть" со свойствами панели: меняйте их, запускайте проект на выполнение, и смотрите, как будет меняться внешний вид панели. А когда наиграетесь и запустите программу в последний раз, разверните окно во весь экран. Вот это уже неприятно: окно программы увеличилось, а панель осталась прежней:
(рис 3.5) Искажение дизайна окна при изменении размеров
Дело в том, что панель "привязывается" к верхней и левой границе формы. А при изменении размеров окна, правая и нижняя границы панели не изменяются. Чтобы "привязать" к форме все стороны панели, служат "якоря":
Anchors (англ. якоря) - свойство, разрешающее или запрещающее привязку сторон к внешнему контейнеру. Если панель располагается прямо на форме, то и привязывается она к форме. А если панель располагается на другой панели, то привязывается уже к ней. Подобное свойство имеет большинство визуальных компонентов. Anchors - раскрывающееся свойство. Если щелкнуть по кнопке "+" слева от него, то свойство раскроется, показывая привязки сторон, а кнопка "+" превратится в "-":
(рис 3.6) Раскрытое свойство Anchors
Как мы видим, по умолчанию "привязаны" только левая и верхняя границы (akLeft=True, akTop=True). Чтобы разрешить привязку правой (akRight) и нижней (akBottom) границ панели, их тоже нужно установить в True. Сделайте это, запустите программу на выполнение и попробуйте изменять размеры окна. Теперь вместе с окном изменяет размеры и панель, что нам и требовалось.
Однако есть и другой способ привязки компонентов к различным сторонам формы или контейнера, на котором компонент находится. Поскольку этот способ применяется довольно часто, разберем его подробней. Для начала удалите панель - выделите ее на форме и нажмите <Delete>. Затем установите на форму новую панель. Таким образом, мы просто сбросили все изменения в настройках панели, ведь новая панель имеет все значения по умолчанию. А имя у нее такое же - Panel1. Очистим свойство Caption, и займемся выравниванием.
Align (англ. выравнивание) - свойство, позволяющее "прилепить" панель к одной из сторон внешнего контейнера, или ко всему контейнеру. Может иметь следующие значения:
alBottom - Панель занимает весь низ контейнера (в нашем случае контейнером является форма).alClient - Панель занимает весь контейнер.alCustom - Пользовательское выравнивание, то же самое, что alNone.alLeft - Панель занимает всю левую часть контейнера.alNone - Нет выравнивания. Это значение по умолчанию.alRight - Панель занимает всю правую часть контейнера.alTop - Панель занимает весь верх контейнера.Если мы установим это свойство в alClient, то наша панель займет всю форму. При изменении размеров формы будут изменяться и размеры панели. Если установим, к примеру, в alTop, то панель займет всю верхнюю часть формы. Если затем на этой панели установим кнопки, то получим Панель инструментов. А совместно с другим компонентом, TSplitter, который находится на вкладке Additional Палитры компонентов и представляет собой перемещаемую границу-разделитель, мы получим различные части окна, размеры которого пользователь сможет менять мышью во время выполнения программы:
(рис 3.7) Разделитель TSplitter
Давайте сделаем так. У нашей Panel1 установим Align = alTop. Затем добавим на форму разделитель TSplitter, и также установим у него Align = alTop.
Теперь добавим на свободное место формы еще одну панель. Очистим у нее свойство Caption, и установим Align = alLeft. Добавим еще один TSplitter, убедимся, что у него также Align = alLeft. Теперь весь верх и всю левую часть формы занимают панели, отгораживаясь от свободной части сплиттерами. На эту свободную часть формы мы установим третью панель. Очистим у нее свойство Caption и установим Align = alClient. Панель заняла всю оставшуюся часть формы. Теперь запустите проект на выполнение и убедитесь, что мышью можно перемещать границы-разделители, меняя размеры панелей. При изменении размеров окна изменяются и размеры панелей:
(рис 3.8) Три панели и два разделителя на форме
Не забудьте сохранять проект время от времени.
Мы упустили еще одно полезное свойство панели - автоматическую настройку размера.
AutoSize - автоматическая настройка размера, логическое свойство. По умолчанию, установлено значение False - автонастройка запрещена. Если установить свойство в True, то автоматическая настройка будет разрешена.
Установите на верхнюю панель кнопку TButton. Свойства Left и Top кнопки установите в 1. Теперь выделите панель, на которой находится кнопка, и переведите свойство AutoSize в True. Верхняя панель по-прежнему занимает всю верхнюю часть формы, но теперь ее высота уменьшилась по высоте кнопки! Таким способом можно создавать простые панели инструментов для приложения. Правда, если вы запустите программу на выполнение, то увидите, что теперь верхним разделителем невозможно менять высоту верхней панели, ведь она у нас автоматически принимает размер под расположенную на ней кнопку. Так что и надобность в первом сплиттере в этом случае отпадает.
Кнопки, пожалуй, самый используемый компонент в программах Windows. Они повсюду: в диалоговых окнах, в панелях инструментов, в сообщениях. Познакомимся поближе с этими элементами.
Итак, простая кнопка TButton. Находится на вкладке Standard Палитры компонентов. Мы уже использовали несколько раз этот компонент, и сейчас в проекте одна кнопка находится на верхней панели. Выделите кнопку, и посмотрим на ее свойства. С большинством из них вы уже знакомы, познакомимся с некоторыми другими.
Cancel - логическое свойство, по умолчанию равно False. Если равно True, то нажатие на кнопку <Esc> будет равносильно нажатию на эту кнопку.
Default - логическое свойство, по умолчанию равно False. Если равно True, то нажатие на кнопку <Enter> будет равносильно нажатию на эту кнопку. Однако если фокус находится на какой-нибудь другой кнопке, то нажатие на <Enter> нажмет ее.
ModalResult - полезное в некоторых случаях свойство, особенно в диалоговых окнах. Может иметь значения:
mrNone (по умолчанию) - нет результатаmrOk - ОКmrCancel - ОтменаmrAbort - ПрерватьmrRetry - ПовторитьmrIgnore - ИгнорироватьmrYes - ДаmrNo - НетmrAll - Все mrNoToAll - Нет для всехmrYesToAll - Да для всехmrClose - ЗакрытьЛюбая форма также имеет свойство ModalResult. Если у кнопки в этом свойстве присвоить одно из этих значений, и этой кнопкой закрыть форму, то и у формы свойство ModalResult станет таким, как у кнопки. Предположим, у вас имеется диалоговое окно с тремя кнопками: "Да", "Нет" и "Отмена". И каждой из этих кнопок в свойстве ModalResult вы присвоили соответственное значение. Если каждая из этих кнопок будет закрывать окно, то при его закрытии можно посмотреть свойство ModalResult формы и определить, какой кнопкой пользователь закрыл окно. И в соответствии с результатом, выполнять дальнейшие действия.
ModalResult кнопки какого то значения не закроет окно, это действие нужно программировать отдельно.Hint - текст всплывающей подсказки. Эта подсказка всплывет, когда пользователь подведет указатель мыши к кнопке. Но подсказка появится, только если ShowHint = True.
Теперь будем разбираться с событиями. Однако прежде измените свойство Caption кнопки, и впишите туда слово Выход. Свойство Name оставьте по умолчанию.
Двойной щелчок по кнопке приведет к тому, что Lazarus сгенерирует событие - нажатие на эту кнопку. Сразу же Редактор кода окажется наверху, и вы увидите мигающий курсор там, где нужно запрограммировать это событие. Код, который мы туда впишем, будет выполняться всякий раз, когда пользователь нажмет на эту кнопку. Впишем туда короткое
Close;
Именно так, с точкой с запятой в конце. Это оператор закрытия окна. А если это окно главное, то значит, закроется вся программа:
(рис 3.9) Программирование события нажатия на кнопку
С процедурами мы будем разбираться позже, пока обратите внимание на имя процедуры: Button1Click. Button1 - это имя нашей кнопки, а событие, которое мы программировали, называется OnClick - событие нажатия на кнопку. В Инспекторе объектов перейдите на вкладку События, и найдите событие OnClick. Как видите, там уже прописана именно эта процедура:
(рис 3.10) Событие OnClick кнопки
Если мы выделим это событие, то справа от него появится кнопка "…", нажатие на которую приведет к генерированию этого события. Поскольку у нас оно уже запрограммировано, то просто откроется эта процедура и внутрь нее установится курсор. Вот вам второй способ генерировать нужное событие, выбирайте, что вам удобней. Нам не раз придется переключаться в Инспекторе объектов между вкладками Свойства и События.
Другие события кнопок нам пока не нужны. Сохраните проект и запустите его. Убедитесь, что нажатие на кнопку приводит к закрытию программы.
Кнопкой <F12> верните на передний план Редактор форм, а в Инспекторе объектов верните вкладку Свойства. В Палитре компонентов откройте вкладку Additional. Первые два компонента в этой вкладке - это кнопки TBitBtn и TSpeedButton:
(рис 3.11) Кнопки TBitBtn и TSpeedBtn
Поставьте две кнопки TBitBtn и одну TSpeedButton куда-нибудь на нашу форму, например, на верхнюю панель, правее нашей Button1. Будем разбираться, чем они отличаются от обычной кнопки.
Это более продвинутая кнопка, имеющая некоторые дополнительные свойства. Прежде всего, вы заметили, что она несколько более высокая, чем обычная кнопка. TBitBtn помимо текста может содержать и изображение. Для этого используются несколько свойств.
Glyph - Изображение. С помощью этого свойства можно найти и загрузить изображение, которое будет отображаться на кнопке.
Примечание: Большинство изображений хранится в папке Images там, куда вы установили Lazarus. Если вы оставили адрес по умолчанию, это будет
C:\lazarus\images\
Там хранится несколько папок, где изображения рассортированы по тематикам. Однако необязательно использовать только эти изображения. В Интернете можно найти огромное количество бесплатных коллекций изображений, которые можно использовать в своих проектах.
Выделите свойство Glyph кнопки BitBtn1 и щелкните по кнопке "…" справа от него. Откроется диалог выбора изображения. В этом диалоге нажмите кнопку "Загрузить" и найдите папку
C:\lazarus\images\menu
(если вы указывали другой путь при установке Lazarus, то укажите его). Откроется список с картинками, которые хранятся в этой папке. При выборе она будет отображаться в правой части окна. Найдите картинку menu_exit и нажмите кнопку "Открыть", затем "ОК". Выбранное изображение окажется на кнопке, слева от надписи. Кстати, чтобы уж придать кнопке соответствующий вид, измените свойство Caption на Выход. А заодно, сгенерируйте событие нажатия на эту кнопку, и впишите код закрытия, как это делали для простой кнопки. Сохраните проект и запустите его; убедитесь, что нажатие на эту кнопку также закрывает программу.
Однако с этой кнопкой мы еще не закончили. Выделите ее в Редакторе форм и обратите внимание на свойства кнопки.
GlyphShowMode - политика показа или сокрытия изображения. Может быть:
gsmAlways - всегда показывать изображение.gsmNever - никогда не показывать изображение.gsmApplication - изображение будет показано во время выполнения программы. Значение по умолчанию для этого свойства.gsmSystem - будет показано изображение или нет, зависит от текущих настроек системы.Данное свойство лучше не изменять.
Layout - место расположения изображения. Может быть:
blGlyphBottom - изображение ниже текстаblGlyphLeft - изображение слева от текста (значение по умолчанию)blGlyphRight - изображение справа от текстаblGlyphTop - изображение над текстомДанные настройки целиком зависят от конкретного стиля интерфейса, который вы выбрали для вашей программы. Но в большинстве случаев, значение по умолчанию - то, что нужно.
Spacing |
- расстояние в пикселях от изображения до текста. Это свойство меняют также редко. |
TabOrder |
- порядковый номер выделения компонентов. Имеется у многих визуальных компонентов. Определяет, в каком порядке компоненты будут получать фокус ввода при нажатии клавиши <Tab>. Нумерация начинается с 0, установить одинаковый номер для двух компонентов невозможно, если они находятся на одном контейнере. |
Enabled |
- доступность компонента. Также присутствует у многих визуальных компонентов. Логическое свойство. Если True, то компонент доступен (кнопку можно нажимать), если False, то недоступен (кнопка серого цвета, нажать на нее невозможно). Измените это свойство, запустите программу и посмотрите, как изменилась кнопка. Затем верните значение по умолчанию. |
Visible |
- видимость компонента. Если True, то компонент видимый, иначе компонент спрятан. "Поиграйте" и с этим свойством, не забудьте вернуть его в конце в значение по умолчанию. |
Мы не зря установили на форму две кнопки TBitBtn. Для изучения следующего свойства выделите BitBtn2.
Kind - разновидность кнопки. При выборе какого-то значения на кнопке появляется соответствующие текст и картинка, а кнопка сразу обладает нужными свойствами, зависящими от ОС - закрывает окно (в случае если Kind = bkClose), присваивает форме нужное значение ModalResult. Правда, в работающей программе (по крайней мере, для Windows XP Professional SP3) текст на кнопке будет на английском языке. Может быть:
Установите Kind = bkClose, сохраните проект и запустите его. Убедитесь, что теперь и кнопка BitBtn2 закрывает окно. Для этого нам даже не пришлось ее программировать!
Напоследок поработаем с этим типом кнопок. Они чаще всего применяются для организации панелей инструментов. Дело в том, что эта кнопка не имеет фокуса ввода! Что я имею в виду? Запустите программу на выполнение и клавишей <Tab> перемещайтесь по кнопкам. Вы увидите, что можно выделить любую кнопку, кроме SpeedButton1. На такую кнопку можно нажать только мышью, при этом, если окно не закроется, фокус вернется к тому компоненту, который был выделен ранее.
Как видите, кнопка квадратная, имеет малый размер и рассчитана только на то, чтобы с помощью свойства Glyph в нее загрузили изображение. Однако она имеет такие же свойства, как TBitBtn: Caption, Layout, Space и т.д., поэтому в данной кнопке также можно использовать текст совместно с изображением, или только текст, или только изображение.
Поскольку кнопка не имеет фокуса ввода, свойства TabOrder у нее также нет. Отсутствует и свойство Kind. Но в остальном она похожа на TBitBtn.
С помощью свойства Glyph загрузите картинку menu_exit, как в прошлом примере. Однако программировать событие OnClick мы не будем - зачем писать один и тот же код? Можно поступить проще. Перейдите на вкладку "События" Инспектора объектов, и, не нажимая в событии OnClick на кнопку "…", откройте доступный список:
(рис 3.12) Выбор события OnClick
Выберите в списке Button1Click, сохраните проект и запустите его на выполнение. Убедитесь, что наша SpeedButton1 закрывает программу - это срабатывает событие первой кнопки.
Напоследок исправим один недостаток. Если вы обратили внимание, у нас на форме 4 кнопки, но при установке указателя на любую из них всплывает та самая подсказка, которую мы писали в свойстве Hint формы: "Наша всплывающая подсказка". А это не очень хорошо. Нужно в свойстве Hint кнопок написать соответствующие тексты, например:
Конечно, в реальных приложениях в свойстве Hint вы будете писать подходящий текст подсказки, например, "Выход из программы". Но у нас все кнопки выполняют выход из программы, и чтобы отличить их друг от друга, мы укажем соответствующий текст. Сохраните проект и запустите его на выполнение; убедитесь, что текст всплывающих подсказок меняется.
Hint формы нам, вообще говоря, и не нужен, его можно очистить. Однако чтобы получить доступ к свойствам формы, нам нужно выделить саму форму, а это теперь проблематично, ведь ее полностью перекрывают три панели! Выделить форму можно либо в Дереве объектов в верхней части Инспектора объектов, либо выделив какую-либо панель, и нажав клавишу <Esc>. При этом выделение перейдет на внешний компонент, то есть, на форму.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.