- С чего начать
- Знакомство с IDE
- Общие свойства объектов визуальных сред
- Главная форма
- Прежде чем запустить приложение
- Из чего состоит проект пустого приложения
- Продолжение работы над проектом
- Расстановка «мебели»
- Главное меню среды Visual Basic 6.0
- Главное меню среды BCB 5.0
- Как заставить объекты реагировать на события
Общие свойства объектов визуальных сред
Опубликовано admin в Ср, 01/06/2010 - 20:58
И форма, и размещаемые на ней компоненты являются объектами, т.е. некоторыми наборами данных, которые укомплектованы обслуживающими их функциями и процедурами. По терминологии объектно-ориентированного программирования (ООП) последние принято называть методами. Единственное отличие методов от традиционных функций и процедур заключается в способе обращения:
| y= f(x1,x2,…) | обращение к обычной функции f в VB; |
| y=object.f(x1,x2,…) | обращение к методу f в VB; |
| y:=object.f(x1,x2,…); | обращение к методу f в Delphi; |
| y=object®f(x1,x2,…); | обращение к методу f в BCB. |
Каждый объект обладает определенным набором свойств, влияющих на поведение объекта и на его внешний вид. В первом приближении эти свойства можно рассматривать как специфические переменные, значения которых можно опросить или изменить. Так как функционально одинаковые свойства у разных объектов имеют одинаковые идентификаторы, то для доступа к нужному свойству приходится применять составные имена:
wf:=Form1.Width; { опрос ширины формы Form1}
Button1.Width:=20; {установка ширины кнопки Button1}
Некоторые методы, к которым пользователь не имеет доступа, отвечают за отображение объекта на экране монитора с учетом тех свойств, которые установлены пользователем или заданы программным путем. Изменения отдельных свойств на стадии проектирования сразу же изменяют внешний вид объекта.
Объекты, размещаемые на форме нашего приложения, можно условно разбить на две группы. Первую группу составляют потенциально видимые объекты, размеры которых поддаются изменению. Во время работы приложения они могут сохранять свою видимость. Ко второй группе относятся объекты, пиктограмма которых сохраняет фиксированные размеры при любых попытках изменить их габариты с помощью мыши. Во время работы приложения такие объекты не оставляют на форме каких-либо видимых следов.
Объект любой группы обладает свойством Name. Мы уже упоминали имена форм (Form1, Form2, …) и кнопок (Button1, Button2,…), которые система присваивает объектам автоматически в момент их появления в приложении. Как правило, в приложениях целесообразно изменять имена компонент с тем, чтобы программное имя объекта отражало его функциональную направленность. И такое изменение лучше делать сразу, иначе потом придется заниматься поисками тех мест в программе, которые должны быть изменены.
Перечень общих свойств, присущих большинству потенциально видимых объектов, приведен в табл. 2.1. В этой таблице впервые упомянут термин контейнер. Для объектов, размещаемых в произвольных местах формы, роль контейнера выполняет сама форма. Это означает, что объект привязан к фиксированному месту формы и любые ее перемещения по экрану автоматически переносятся на «приклеенные» к форме объекты. Некоторые объекты (например, группу логически связанных кнопок) удобно поместить в какой-то внутренний контейнер, который можно было бы перемещать по форме вместе с содержащимися в нем компонентами. В любом случае привязка объекта к контейнеру производится в локальной системе координат контейнера, начало которой расположено в левом верхнем углу. Как и на экране, ось x направлена вправо, а ось y — вниз. В системах BCB и Delphi координаты измеряются в пикселах, физический размер которых определяется разрешением экрана монитора. Авторы VB остановились на метрических единицах — твипах (twips), размер которых не зависит от разрешения монитора. В одном дюйме (дюйм=2.54 см) размещается 1440 твипов, в одном сантиметре — 567 твипов. При разрешении 800´600 одному пикселу 15-дюймового монитора соответствует примерно 15 твипов. Размер экрана в твипах при этом составляет 12000´9000. В среде Visual Basic предусмотрена возможность для перехода к другим единицам измерения. Пересчетом ширины и высоты из твипов заведует свойство ScaleMode, значение которого по умолчанию равно 1. При ScaleMode=3 значения высоты и ширины объекта в пикселах определяются свойствами ScaleHeight и ScaleWidth. Вы имеете возможность выбрать в качестве единиц длины дюймы (ScaleMode=5), миллиметры (ScaleMode=6) или сантиметры (ScaleMode=7). Однако в любом случае свойства Height и Width хранятся в твипах.
Таблица 2.1
| Свойство | Функциональное назначение |
| Left | Смещение левой границы объекта от левой границы контейнера |
| Top | Смещение верхней границы объекта от верхней границы контейнера |
| Width | Ширина объекта |
| Height | Высота объекта |
| Tag | Признак, используемый по усмотрению программиста |
| Visible | Логический признак видимости (True) или невидимости (False) объекта |
| Enabled | Логический признак доступности (True) или недоступности (False) объекта |
Признак Tag (произносится — «тэг») не оказывает никакого влияния ни на внешний вид объекта, ни на его поведение. Этим признаком, который представлен четырехбайтовым целочисленным значением, программа может распоряжаться по своему усмотрению — заносить туда какие-то числа, проверять значение свойства и принимать по этому поводу те или иные решения в зависимости от выбранного вами алгоритма.
Свойство Visible может спрятать потенциально видимый объект так, что на экране его изображение пропадет. Но это не означает, что объект будет бездействовать. Он не потеряет активность и, если такому объекту будет адресовано предусмотренное сообщение, на него последует запрограммированная реакция. В отличие от этого свойство Enabled (дословно — разрешен) управляет доступом к объекту. Объект может быть виден, но запрещен (Enabled=False). В этом случае вместо четких черных очертаний контура компонента вы увидите бледно-серый силуэт, и сообщение, адресованное запрещенному объекту, не будет передано обработчику соответствующего события.
Современные версии визуальных сред позволяют снабжать каждый компонент динамически появляющейся подсказкой в момент наезда курсором мыши на территорию объекта во время работы приложения. В среде VB достаточно занести в свойство ToolTipText нужную подсказку. В средах BCB и Delphi содержанием подсказки является значение свойства Hint. Однако для ее демонстрации необходимо установить значение еще одного свойства ShowHint=True. На рис. 2.12 показано, как выглядит подсказка в VB (слева) и в Delphi (справа).

Рис. 2.12. Отображение подсказки во время работы приложения
Многие компоненты Delphi и BCB могут воспользоваться некоторыми свойствами того контейнера, на территории которого они находятся. Хотя контейнер выступает в роли родителя (свойство Parent) содержащихся в нем объектов, мы будем пользоваться термином опекун. Причиной такого отступления от точного перевода является нежелание смешивать идею опекунства с понятиями родительского класса и порожденного им класса, принятыми в объектно-ориентированном программировании. В последнем случае имеет место родство «по крови» и дочерние объекты могут унаследовать данные и методы своего родителя. В случае опекунства временные квартиранты имеют право на использование шрифта, цвета, разрешения на демонстрацию подсказки и свойства объемности. Для этого достаточно присвоить значение True таким свойствам как ParentFont, ParentColor, ParentShowHint и/или ParentCtl3D. Последним свойством приходится пользоваться редко, т.к. в большинстве современных систем программирования все объекты выглядят объемными, хотя это сопряжено с несколько большими затратами по ресурсам. Смена шрифта опекуна обходится гораздо дешевле, чем изменение аналогичного свойства у нескольких объектов, попавших в контейнер.
Свойства TabOrder и TabStop присущи объектам, которые могут быть активизированы с помощью клавиши <Tab> или сочетанием клавиш <Shift>+<Tab>. При создании приложения каждый такой объект получает порядковый номер TabOrder, определяемый очередностью извлечения объектов из хранилища (нумерация ведется от 0). Если в режиме проектирования нажимать клавишу <Tab>, происходит автоматическое выделение очередного объекта в порядке возрастания их номеров. Комбинация <Shift>+<Tab> выполняет эту же процедуру в обратном порядке. Для того чтобы исключить тот или иной объект из очереди активизируемых компонент, достаточно присвоить свойству TabStop значения False (по умолчанию оно равно True). Во время работы приложения действия, вызываемые нажатием клавиши <Tab> или сочетания <Shift>+<Tab>, эквивалентны последовательной передаче фокуса очередному объекту. Для кнопок такое выделение можно заметить по пунктирному прямоугольнику вокруг надписи, для окон ввода — по появлению мигающего курсора
