Доступность компонента во время работы приложения определяется свойством

буквы Т. Если на форму помещены три кнопки Button и компонент PaintBox, то в объявлении класса формы получим:

type

TForm1 = class(TForm)

PaintBox1: TPaintBox;

Button1: TButton;

Button2: TButton;

Button3: TButton;

private

{ Private declarations }

public

{ Public declarations } end;

Для помещённых на форму компонентов непосредственно на форме или в окне Инспектора объектов задают значения свойств. Сначала выбирают нужный компонент из списка в верхней части Инспектора объектов или, щёлкнув по нему на форме, а затем задают значения свойств. Следует помнить, что некоторые свойства нельзя изменить на этапе дизайна, они доступны только во время выполнения программы. Такие свойства можно изменять программным путём. Свойства же, перечисленные в инспекторе объектов, разрешено изменять как на этапе проектирования, так и программно во время работы приложения (run time).

Многие свойства компонентов имеют значения по умолчанию, например, Name,

Caption, Visible, Color. Свойство Name определяет имя, под которым компонент известен в программе. Свойство Caption – это заголовок. Первоначально Caption получает значение от свойства Name. В дальнейшем эти свойства можно изменить. Строка, определяющая свойство Caption, может отсутствовать, а имя Name должно быть задано обязательно.

Например, для кнопки Button задано имя Button1, а свойство Caption, определяющее надпись на кнопке, имеет значение «Выполнить». При большом числе однотипных компонент им следует присваивать информативные имена.

Свойство Visible имеет тип ТBoolean, определяет видимость компонента. Если это свойство имеет значение true, то компонент видим.

Изменения свойств на этапе проектирования называют статическими. Статические изменения выполняют в окне Инспектора объектов. Изменения в ходе выполнения программы называют динамическими. Для реализации динамического изменения свойства в каком-либо обработчике события задают новое значение свойства с помощью

оператора присваивания. Например, чтобы компонент стал невидим во время выполнения программы, надо изменить значение свойства Visible на False:

Label1.Visible:= False;

Или во время выполнения программы можно изменить надпись на кнопке:

Button1.Caption:=’Выполнить’;

Для задания свойств в Инспекторе объектов действуют редакторы свойств, которые могут быть нескольких типов:

• текстовый – свойство вводится и редактируется как строка символов. Delphi

интерпретирует строку (в зависимости от свойства) как данные числового или строкового типа;

перечисляемый – свойство выбирается из списка. Список раскрывается при щелчке мышью по кнопке со стрелочкой, которая появляется при переходе в область значений свойства (например свойство Visible);

множественный – свойство представляет собой комбинацию значений из предлагаемого списка. Слева от названия такого свойства расположен значок +. Список,

содержащий возможные значения, открывается двойным щелчком по названию свойства

(свойство BorderIcons);

• объект – свойство является объектом, то есть содержит другие свойства, которые могут редактироваться самостоятельно. Например, свойство Font включает Color, Name, и

др. Такое свойство слева от названия имеет символ + и задание значений может выполняться как для множественного свойства. Кроме того, если поместить курсор в область значения свойства, то появится кнопка с точками, щелчок по которой откроет окно для задания свойств. Пользоваться диалоговым окном для редактирования свойств удобнее, чем выбирать их из списка.

3.2.3.Определение функциональности проекта

Функциональность приложения определяется реакциями на возможные события. Для этого разрабатывают процедуры, которые вызываются при наступлении соответствующих событий.

Для создания процедуры обработки события (обработчика), необходимо выделить компонент и перейти в Инспекторе объектов на страницу событий (Events), на которой перечислены все возможные события компонента. Если выполнить двойной щелчок в области значения нужного события, то Delphi автоматически создаст в модуле формы заготовку процедуры-обработчика. На передний план переместится окно Редактора кода,

и курсор будет помещён в то место процедуры, где программист должен написать код.

При этом в описание класса формы будет добавлен заголовок процедуры-обработчика.

Название обработчика образуется добавлением к имени компонента названия события без приставки On. Например, TForm1.Button1Click. Если в Инспекторе объектов изменить имя компонента, то произойдёт автоматическое переименование процедуры во всех файлах проекта.

Для удаления обработчика достаточно удалить код, написанный программистом.

Тогда при сохранении или компиляции модуля обработчик будет удалён из всех файлов проекта. Не рекомендуется удалять обработчики вручную. Следует помнить, что при удалении компонента все его обработчики остаются в модуле формы.

Разрешено вместо создания нового обработчика использовать уже существующий. В

этом случае надо щёлкнуть в области значения события и выбрать из списка подходящую процедуру. Таким образом, одну процедуру можно связать с несколькими событиями, в

том числе для разных компонент. Такая процедура называется общим обработчиком и вызывается при возникновении любого связанного с ней события (например, одни и те же действия выполняются через меню и кнопкой).

Среди множества событий, предусмотренных для компонента, выделяют одно,

наиболее часто используемое. Создать заготовку обработчика такого события можно двойным щелчком по расположенному на форме компоненту.

3.2.4.События и их обработка

Обо всех происходящих в системе событиях Windows посылает сообщения приложению в виде записи определённого типа. Источником этих сообщений может быть драйвер устройства (например, клавиатуры или мыши), ядро системы, другие приложения. Delphi преобразует сообщения в свой формат и предлагает специальные методы для обработки сообщений. Однако в большинстве случаев можно обойтись без непосредственной обработки сообщений Windows, так как Delphi предоставляет более простой способ работы с сообщениями путём использования событий.

Событие представляет собой свойство процедурного типа, предназначенное для обеспечения реакции на те или иные действия. Задание значения этому свойству

(событию) означает определение метода, вызываемого при наступлении события.

События Delphi имеют различные типы, самым простым из которых является

TNotifyEvent, характерный для уведомляющих событий:

type TNotifyEvent = procedure (Sender: TObject) of object;

Единственный параметр Sender указывает объект-источник события. Более сложные события имеют кроме Sender и другие параметры, например событие, связанное с перемещением мыши, передаёт координаты указателя.

Так как события являются свойствами, их значения можно изменять во время выполнения приложения, то есть изменять реакцию объекта на одно и то же событие. При этом разрешается назначать обработчик события одного объекта, другому объекту или его событию. Обязательное условие – совпадение типов событий. Такая возможность обеспечивается неявным параметром Self, который всегда передаёт методу указатель на вызвавший его экземпляр класса.

3.2.5.Формирование кода

Код пишется в окне Редактора кода, который имеет встроенные средства,

существенно облегчающие работу. К инструментальным средствам, используемым при записи кода, относятся: Code Insight, Code Explorer, Object Browser, механизм навигации в коде.

Возможности Подсказчика Code Insight целесообразно использовать даже в самых простых программах, так как это сокращает время записи и, главное, гарантирует корректность введённых выражений. Если записать имя компонента, поставить точку и немного подождать, то появится длинный список всех свойств и методов класса, к

которому принадлежит компонент. Чтобы быстрее найти нужное название, желательно записать первые символы. Затем надо выбрать строку щелчком мыши и нажать на клавишу Enter (или дважды щёлкнуть левой кнопкой мыши по нужной строке):

соответствующее имя будет вставлено в код. Повторный вывод Подсказчика выполняется комбинацией клавиш Ctrl+пробел. Эта же клавиатурная комбинация позволяет вывести

Code Insight на экран при отключении автоматического режима работы.

По умолчанию строки списка упорядочены по категориям. При желании их можно отсортировать по алфавиту, выбрав команду Sort by Name из контекстного меню.

Комбинацию клавиш Ctrl+пробел можно использовать после записи переменной,

оператора присваивания, в пустой строке. Во всех случаях появится подсказка. Правда,

иногда проще написать нужный текст, чем искать его в очень длинном списке.

Если Code Insight работает в автоматическом режиме, то при записи процедур и функций после того, как поставлена открывающаяся круглая скобка, появится список параметров и их типов. Повторный вывод подсказки выполняется комбинацией клавиш

Shift+Ctrl+пробел.

Иногда полезно воспользоваться имеющимися в Code Insight шаблонами стандартных структур языка Object Pascal. Перечень шаблонов выводится клавишами

Ctrl+J. Например, для оператора case один из шаблонов имеет вид:

case of

: ;

: ;

end;

Для быстрого перемещения по коду можно использовать закладки, которые устанавливаются командой контекстного меню Toggle Bookmark. Переход на нужную закладку выполняется командой контекстного меню Goto Bookmarks.

Очень удобно организован переход между объявлениями методов в интерфейсной секции и их реализацией. Для этой цели используются клавиши Ctrl+Shift и клавиша со стрелкой вверх или вниз (в зависимости от нужного направления перемещения).

3.2.6.Организация взаимодействия форм

Воперационной системе Windows можно выделить пять видов окон:

окна папок;

окна приложений;

диалоговые окна;

окна справочной системы;

окна сообщений.

Все виды окон представляют собой контейнеры. При разработке приложений,

функционирующих под управлением Windows, работа организуется в принятых в этой операционной системе окнах.

Стандартное окно в Windows имеет заголовок, кнопки для вызова системного

(оконного) меню, кнопки сворачивания, разворачивания, закрытия окна и рамки,

позволяющие плавно изменять размеры окна.

Диалоговые окна предназначены для задания параметров, уточнения характеристик или действий. Диалоговыми окнами пользуются, когда надо что-то настроить или изменить. Диалоговые окна стандартизованы (но не стандартны!) за счёт применения в них типовых элементов управления. Диалоговые окна, как правило, имеют другой состав команд системного меню, не имеют средств для плавного изменения размеров, не содержат кнопок сворачивания и разворачивания окна.

Среда Windows поддерживает два режима отображения окон – модальный и немодальный. Диалоговые панели обычно работают в модальном режиме.

Модальное окно должно быть закрыто перед обращением к любому другому окну данного приложения. Модальное окно перехватывает управление, и пока оно не будет закрыто, попытка перейти в другое окно приложения блокируется Windows, операционная система выдаёт предупреждающий сигнал. Запрет перехода в другое окно при незакрытом модальном окне относится только к текущему приложению, пользователь может активизировать любое другое приложение Windows. Программно возможен доступ к

любому элементу приложения, несмотря на наличие открытого в текущий момент времени модального окна.

Если форм в приложении несколько, то одна из них является главной. Главная форма отображается при запуске приложения, остальные создаются, но отображаются по запросу. Закрытие главной формы приводит к завершению работы приложения. По умолчанию главной назначается форма, созданная первой, но при необходимости главной можно назначить другую форму. Задание главной формы выполняется в окне Project Options на вкладке Forms.

Если одна форма выполняет действия с другой формой или с расположенными на ней элементами, то в списке uses раздела implementation модуля первой формы должна быть ссылка на модуль второй формы.

Допустим, создана главная форма main и дополнительная форма second. Чтобы из формы main можно было открыть форму second или получить какие-либо сведения с формы second, надо дополнительную форму подсоединить к главной. Для этого следует:

активизировать главную форму;

выполнить команду File|Use Unit. В окне Use Unit выбрать имя файла модуля нужной формы (second).

После этого в секции implementation модуля основной формы появится строка: uses second;

Если форма second должна получать сведения с главной формы main, то форму main

надо подсоединить к second. При наличии нескольких дополнительных форм, их надо связать друг с другом в соответствии с функциональностью проекта.

После того как дополнительные формы связаны с главной, необходимо организовать их вызов. В простейшем случае можно на главной форме установить кнопки, с помощью которых открывать нужные окна. Для обработки события OnClick, наступающего при нажатии на кнопку вызова дополнительного окна, используются методы Show и ShowModal. Например, записанный в обработчике события OnClick метод Form2.Show

откроет обычное окно, заданное формой Form2, а метод Form3.ShowModal откроет модальное окно.

3.3. Форма

Форма является основным интерфейсным элементом в Delphi. С точки зрения

Windows форма представляет собой окно. С точки зрения Delphi форма – это визуальный компонент, играющий роль контейнера, который содержит другие компоненты,

определяющие функциональность приложения.

3.3.1.Свойства формы

Уформы достаточно много свойств. Первоначально Delphi устанавливает свойства

формы в значения по умолчанию. Изменить свойства формы можно в процессе проектирования (в Инспекторе объектов) или во время выполнения приложения.

Динамическое изменение свойств осуществляется программно, путём внесения в исходный текст программы соответствующих операторов. При работе с формой на уровне исходного кода можно получить доступ к свойствам, которые отсутствуют в Инспекторе объектов.

Свойство Caption определяет заголовок окна. Изменить цвет, шрифт, размеры шрифта заголовка окна в Delphi нельзя. Это системные параметры Windows, которые задаются в свойствах экрана.

Разновидности форм определяются значениями свойства FormStyle и разнообразием заготовок, хранящихся в репозитории. Свойство FormStyle определяет, какой пользовательский интерфейс будет использован: Multiple Document Interface (MDI) –

многодокументный или Single Document Interface (SDI) – однодокументный. Это свойство может принимать значения:

fsMDIChild – дочернее окно MDI-приложения; fsMDIForm – главное окно MDI-приложения; fsNormal – обычное окно (значение по умолчанию):

fsStayOnTop – окно, расположенное поверх других окон на экране.

Если применяется SDI-интерфейс, то каждая форма (даже если их несколько)

существует в виде отдельного независимого окна. Одно из окон является главным, но не содержит других окон. В SDI приложении все формы имеют в свойстве FormStyle

значение fsNormal. Иногда устанавливается значение fsStayOnTop, чтобы окно всегда располагалось поверх других окон, даже если окно не активно.

MDI-интерфейс предполагает использование родительского окна, которое включает одно или несколько дочерних окон. Дочерние окна ограничены областью родительского окна и не могут выходить за его пределы. Дочерними окнами можно управлять из главного окна.

Стиль рамки задаётся свойством BorderStyle, которое имеет значения: bsDialog – неизменяемая в размерах рамка, свойственная окнам диалога; bsSingle – неизменяемая в размерах рамка обычного окна;

bsNone – окно без рамки и заголовка;

bsSizeable – изменяемая в размерах рамка обычного окна;

bsToolWindow – рамка аналогична bsSingle, но окно имеет уменьшенный заголовок

(целесообразно использовать для служебных окон);

bsSizeToolWin – рамка аналогична bsSizeable, но с уменьшенным заголовком.

Обычно для окантовки формы используется значение bsSizeable. При этом окно имеет стандартную изменяемую рамку, заголовок, системное меню, кнопки сворачивания,

разворачивания и закрытия окна. Если значение свойства BorderStyle предполагает наличие заголовка, то можно свойством булевского типа BorderIcons задать нужные системные элементы окна.

3.3.2.События формы

Вэтом разделе рассматриваются события, характерные только для формы.

Событие OnCreate происходит при создании формы. В обработчике этого события обычно устанавливают начальные значения для свойств формы и помещённых на неё компонентов, запрашивают у Windows необходимые ресурсы и выполняют другие действия, которые следует совершить до вывода формы на экран.

Событие OnShow происходит после того, как форма была создана, но перед тем, как она становится видимой.

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

например при щелчке по форме мышью. Событие OnDeactivate наступает, когда форма теряет активность.

Событие OnHide происходит перед тем, как форма становится невидимой.

Событие OnCloseQuery наступает при попытке закрыть форму. Действие задаётся пользователем (кнопка Close) или программно (вызван метод Close). В обработчик события передаётся булевский параметр CanClose, разрешающий или запрещающий действительное закрытие формы.

Событие OnClose происходит после OnCloseQuery, непосредственно перед закрытием формы.

Событие OnDestroy происходит при удалении формы. Обработчик этого события освобождает ресурсы и выполняет заданные действия до того, как форма будет удалена.

3.3.3.Создание форм разного вида

Существует возможность создавать непрямоугольные окна. За внешний вид формы отвечает регион. Чтобы воспользоваться регионом, необходимо в обработчике события

OnFormCreate выполнить действия:

объявить переменную типа HRgn;

создать регион функцией CreateRectRgn (для прямоугольного региона) или

CreateEllipticRgn (для эллиптического региона);

• установить этот регион для окна функцией SetWindowRgn.

Например, создадим форму в виде окружности. procedure TfmCircle.FormCreate(Sender: TObject);

Var Region:HRgn;

begin

Region:=CreateEllipticRgn(30,30,400,400);

SetWindowRgn(fmCircle.Handle,Region,true)

end;

3.4. Компоненты

3.4.1.Общие свойства управляющих элементов

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

(для чтения и записи) и неизменяемые (только для чтения). В зависимости от времени установки разделяются на свойства времени проектирования и времени выполнения.

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

Управляющие элементы пользовательского интерфейса подразделяются на управляющие элементы-окна и рисуемые управляющие элементы. Разница принципиальная. Управляющие элементы-окна способны получать фокус ввода (Button,

BitBtn, Edit, CheckBox, GroupBox и др.). Некоторые из этих окон могут содержать другие управляющие элементы (например, GroupBox, PageControl) и называются владельцами

(контейнерами). Изображает управляющие элементы-окна операционная система

Windows.

Рисуемые управляющие элементы (Label, Image, Shape, Bevel и др.) не являются окнами, не могут получать фокус ввода и содержать другие компоненты. Их отрисовку выполняет Delphi.

Местоположение на форме или внутри контейнера задаётся координатами левого верхнего угла Top и Left. Горизонтальные в вертикальные размеры определяют свойства

Width, Height.

Заголовок Caption представляет собой текстовую строку, которая может содержать управляющий символ & (амперсанд). Следующий за амперсандом символ отображается

подчёркнутым, его используют для активизации управляющего элемента с помощью клавиатуры.

Цвет Color может быть выбран произвольно или взят у своего владельца. Это определяется свойством ParentColor. Если значение свойства ParentColor равно true, то изменение цвета владельца приводит к автоматическому изменению цвета Color.

Внешний вид курсора мыши Cursor можно выбрать из предлагаемого набора. По умолчанию курсор имеет вид стрелки.

Свойство Enabled определяет доступность компонента для пользователя. Если имеет значение true, то компонент доступен. Недоступные компоненты отображаются блекло.

Font – сложное свойство, определяющее шрифт. Параметры шрифта задаются вложенными свойствами Color, Name, Size, Style, Height. Шрифт может быть независимым или определяться шрифтом владельца, в зависимости от свойства ParentFont логического типа.

HelpContext содержит номер темы в файле справочной системы. Для получения контекстной справки следует сфокусировать компонент и нажать на клавишу F1. Если

HelpContext имеет значение 0, то справка выводится по номеру темы владельца.

Свойство Hint определяет строку подсказки. Если задержать на компоненте курсор мыши, может появиться всплывающая подсказка. Разрешение или запрет на вывод всплывающей подсказки задаётся свойством логического типа ShowHint. В свою очередь,

ShowHint может зависеть от разрешения на вывод подсказки у владельца. Это определяется значением свойства ParentShowHint. Если ParentShowHint равно true, то запрет подсказки для владельца автоматически приводит к запрету для рассматриваемого компонента.

Свойство PopupMenu позволяет привязать к управляющему элементу контекстное

(всплывающее меню), которое выводится на экран щелчком по компоненту правой кнопкой мыши.

TabOrder – порядковый номер компонента в пределах владельца. Задаёт номер очереди для получения фокуса ввода.

TabStop – определяет возможность получения компонентом фокуса ввода. Если значение TabStop равно true, то компонент находится в очереди.

Свойство Visible управляет видимостью компонента. Если значение Visible равно true, то компонент виден, иначе – скрыт.

Для получения более полных сведений следует обратиться к справочной системе или литературным источникам.

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

Компонент – функциональный элемент, имеющий определенные свойства и размещаемый программистом в окне формы. Компоненты для разработки интерфейса и системные компоненты называются соответственно визуальными и невизуальными.

Визуальные компоненты видны как во время разработки, так и во время выполнения. Они могут отображать данные и воспринимать ввод (координаты мыши). Более сложные визуальные компоненты позволяют вводить текст, выбирать элементы списка и выполнять довольно сложную обработку событий, связанных с мышью.

Невизуальные объекты доступны исключительно через программный код, и их свойства можно редактировать только с помощью программного кода. Невизуальные компоненты включают в себя сложные функции системы и компоненты Delphi, ускоряя процесс разработки. Существует две категории невизуальных компонентов – диалоговые и системные. Категория диалога предоставляет прямой доступ к общим диалогам Windows, таким как стандартный диалог открытия файла или диалог выбора цвета. Категория системных компонентов обеспечивает поддержку функциональных возможностей визуальных компонентов. Компоненты TMainMenu и TPopupMenu упрощают разработку меню прикладной программы. Компонент TTimer служит генератором событий.

Примерами невизуальных объектов также являются:

TСlipboard, предназначенный для организации буфера обмена;

TScreen – управление экраном во время работы компьютера;

TPrinter, инкапсулирующий функции Windows по обслуживанию принтера;

TApplication – управление проектом в целом;

и др.

Базовые классы VCL

В основе иерархии объектов библиотеки VCL лежит класс TObject. Он обеспечивает выполнение важнейших функций “жизнедеятельности” любого объекта. Благодаря ему каждый класс получает в наследство механизмы создания экземпляра объекта и его уничтожения.

Обычно разработчик не задумывается о том, как объект будет создан, и что необходимо сделать для его корректного уничтожения. Компоненты VCL создаются и освобождают занимаемые ресурсы автоматически. Иногда разработчику приходится создавать и удалять объекты самостоятельно. Но даже в этом случае ему достаточно вызвать соответствующие конструктор и деструктор:

Var SomeList : TStrings;

. .

SomeList := TStrings.Create;

. . .

SomeList.Free;

За кажущейся простотой этих операций скрывается довольно сложная реализация указанных процессов. Практически весь исходный код класса TОbject написан на ассемблере для обеспечения наибольшей эффективности операций, которые будут выполняться в каждом его потомке. Кроме того, класс TОbject обеспечивает создание и хранение информации об экземпляре объекта и обслуживание очереди сообщений.

Класс TРersistent происходит непосредственно от класса TОbject. Он обеспечивает своих потомков возможностью взаимодействовать с другими объектами и процессами на уровне данных. Его методы позволяют передавать данные в потоки, а также обеспечивают взаимодействие объекта с инспектором объектов.

Класс TСomponent служит основой для всех компонентов Delphi. Этот класс задает базовое поведение всех компонентов – их основные свойства и методы. К ним относятся:

возможность отображения компонента в палитре компонентов и управления им в дизайнере форм;

возможность выступать контейнером для других компонентов;

возможность выступать в качестве оболочки вокруг компонентов ActiveX и других объектов, реализующих интерфейсы.

Класс TСomponent является базовым для создания невизуальных компонентов, которые могут располагаться в палитре компонентов и использоваться в дизайнере форм.

Для создания визуальных компонентов базовым является TСontrol, а для создания компонентов, имеющих окна, – класс TWinControl. Визуальные компоненты являются элементами управления. Элементы управления – это варианты стандартных элементов управления Windows. Примером элемента управления является “кнопка”. Пользователь может произвести некоторое действие, выполнив щелчок на этой кнопке. Компонент “Меню” видим и доступен для редактирования только разработчику приложения. Для него этот компонент является инструментом, используемым для создания меню. Во время работы программы пользователь видит только результат работы “Меню”, а не сам элемент.

В дальнейшем изложении эти два понятия компонент и элемент управления являются синонимами. Все элементы управления являются компонентами, но не все компоненты – элементы управления.

Общие предки обуславливают общие свойства компонентов. Рассмотрим только те, которые имеют самое широкое распространение.

Класс TObject

Класс TОbject реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки. В первую очередь это создание и уничтожение экземпляра объекта.

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

Constructor Create;

Для уничтожения экземпляра объекта в TObject предназначены методы Destroy и Free:

Destructor Destroy; Virtual;

Procedure Free

Destroy обеспечивает освобождение всех занимаемых экземпляром объекта ресурсов. При уничтожении объектов рекомендуется вместо деструктора вызывать метод Free, который просто вызывает деструктор, но перед этим проверяет, чтобы указатель на экземпляр объекта был не пустым (не был равен Nil). Это позволяет избежать серьезных ошибок.

Если объект является владельцем других объектов (например, форма владеет всеми размещенными на ней компонентами), то его метод Free автоматически вызовет эти же методы для всех объектов. Поэтому при закрытии формы разработчик избавлен от необходимости заботиться об уничтожении всех компонентов.

Каждый объект должен содержать некоторую информацию о себе, которая используется приложением и средой разработки. Поэтому класс TObject содержит ряд методов, обеспечивающих представление этой информации в потомках.

Функция ClassName: ShortString; возвращает имя объекта, которое может быть использовано для идентификации. Например, один метод-обработчик щелчка на кнопке может работать с несколькими типами компонентов кнопок:

Procedure TForm1.Button1Click(Sender : TObject);

Begin

If Sender.ClassName = ‘TButton’ Then (Sender AS TButton).Enabled := False;

If Sender.ClassName = ‘TSpeedButton’ Then

(Sender AS TSpeedButton).Down := True;

End;

Метод ClassNamesIs (const Name : string) : Boolean; позволяет определить, принадлежит ли данный объект тому типу, имя которого передано в параметре Name. В случае положительного ответа функция возвращает True.

Класс TPersistent

Класс TРersistent предназначен для организации взаимодействия своих потомков с другими объектами и потомками.

Метод Assign (Source : TPersistent); осуществляет копирование содержимого одного объекта в другой. При этом объект-получатель остается самим собой, чего нельзя достигнуть, используя простое присваивание переменных объектного типа:

FirstObject := SecondObject;

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

Класс TРersistent не используется напрямую, от него порождаются потомки, которые должны уметь передавать другим объектам значения своих свойств.

Класс TComponent

Класс TСomponent является предком всех компонентов VCL. Он используется в качестве основы для создания невизуальных компонентов и реализует основные механизмы, которые обеспечивают функционирование любого компонента. В нем появляются первые свойства, которые отображаются в инспекторе объектов.

Свойство Nameопределяет имя компонента. Имя компонента строится по тем же правилам, что и имена любых других объектов программирования – констант, переменных подпрограмм и т.д. Так как компоненты помещаются на форму средой Delphi, каждый компонент автоматически получает создаваемое средой имя, совпадающее с именем своего класса (без начальной буквы Т) и дополненное числовым суффиксом: Form1, Button2, Edit4 и т.д. Впоследствии программист может переименовать компонент, чтобы сделать текст программы более “читабельным”.

Свойство Tag типа Longint определяет произвольный целочисленный параметр, который не используется Delphi и которым программист может распоряжаться по своему усмотрению.

Свойство Сomponents–содержит список всех компонентов, владельцем которых является данный компонент. Свойство Components удобно использовать в том случае, когда необходимо обратиться к компонентам, которыми владеет данный компонент, используя их порядковые имена, а не по имени.

Свойство Owner – указывает на владельца компонента.

Свойство ComponentCount – определяет количество компонентов, владельцем которых является данный компонент.

Свойство ComponentIndex – содержит индекс данного компонента в списке Components его владельца.

Класс TControl

Вслед за классом TСomponent в иерархии базовых классов располагается группа из трех классов, которые обеспечивают создание различных визуальных компонентов. Существует несколько типов элементов управления, которые существенно отличаются по своим возможностям и поведению. Каждому типу соответствует собственный класс иерархии.

Класс TСontrol является базовым для всех визуальных компонентов и инкапсулирует механизмы отображения компонента на экране.

Текущее состояние элемента управления определяется свойством ControlState, тип которого:

Type TControlState = Set Of (csButtonDown, csClicked, csPalette, csReadingState,

csAlingnmentNeeded, csFocusing, csCreating, csCustomPaint,

csDestroyingHandle, csDocking);

Доступность элемента управления в целом определяется свойством Enabled. Свойство Enabled определяет, должен ли элемент управления реагировать на события мыши, клавиатуры или таймера. Если свойство Enabled имеет значение True, то элемент реагирует на события, иначе эти события игнорируются. Отключенный элемент управления при стандартной установке цветов Windows изображается серым цветом.

Свойство Height задает вертикальный размер компонента или формы в пикселях.

Свойство Width определяет ширину элемента управления или формы в пикселях.

Свойства Left и Top определяют вертикальную и горизонтальную координаты верхнего левого угла элемента управления относительно формы или родительского элемента. Для форм эти значения указываются относительно экрана.

Координаты любой точки элемента управления можно пересчитать в экранные при помощи метода ClientToScreen (const Point : TPoint) : TPoint;

И наоборот

ScreenToClient (const Point : TPoint) : TPoint;

Параметры рабочей области компонента определяются свойством ClientHeight : Integer, которое определяет высоту рабочей области в пикселях, и свойством ClientWidth : Integer, определяющим ширину рабочей области в пикселях.

Свойство ClientOrigin : TPoint содержит координаты левого верхнего угла элемента управления в системе координат рабочей области владельца.

Тип TРoint определен следующим образом:

Type TPoint = Record X : LongInt; Y : LongInt; End;

Функция GetClientOrigin : TРoint ; Virtual возвращает координаты верхнего угла рабочей области.

Свойство Align – определяет, как располагаются элементы управления внутри родительского элемента. Свойство может иметь одно из значений: alNone – выравнивание не используется; alTop – компонент прижимается к верхней границе своего родителя; alBottom, alLeft, alRight – к нижней, левой и правой границам соответственно. Свойство Align необходимо применять, если элемент управления должен оставаться в определенном положении на форме при изменении ее размеров.

Свойство Anchors : TАnchors обеспечивает фиксацию элемента управления по сторонам владельца. Тип TАnchors определен:

Type TAnchors = Set Of TAnchorsKind;

Type TAnchorsKind = (akTop, akLeft, akRight, akBottom);

Если по вертикали или горизонтали установлены оба якоря, то при изменении размеров владельца размер элемента управления изменяется таким образом, чтобы расстояния до сторон владельца остались неизменными.

Свойство AutoSize : Boolean обеспечивает изменение размеров компонента в соответствии с размерами его содержимого (текста, изображения, списка, иерархического дерева и т.д.).

Свойство Color определяет цвет элемента управления. Это свойство имеет набор значений, например: clBlack, clGreen, clBlue, clRed и т.д.

Свойство Cursor определяет изображение указателя мыши в тот момент, когда он находится на элементе управления.

Свойство Font определяет шрифт текстовой строки, его цвет (Color), размер (Size), стиль (Style) и пр.

Свойство Hint задает текст, который будет отображаться при обработке события OnHint, происходящего, если курсор находится в области компонента. При задержке курсора мыши на компоненте всплывает небольшое окно с сообщением, заданным в этом свойстве.

Для управления ярлыком используется свойство ShowHint : Boolean. При значении True ярлык начинает работать, при значении False ярлык выключается.

Свойство Visible определяет, будет ли данный компонент отображаться на экране. Если свойство Visible имеет значение True, то компонент виден пользователю, в противном случае – нет.

Свойство Caption – текстовая строка, связанная с компонентом. Текстовая строка является заголовком для формы. Для метки свойство Caption – это тот текст, который выводится в положении метки.

Свойство Text – это тоже текстовая строка. Например, для компонентов TМemo и TЕdit текстовая константа хранится в свойстве Text.

Свойство Parent содержит ссылку на родительский элемент. Свойство Parent в отличие от Owner относится к элементам управления. Если поместить три опции в группирующую рамку, то владельцем этих опций будет форма, где они находятся, а родительским элементом – группирующая рамка.

Свойства ParentColor, ParentFont и ParentShowHint указывают, что элемент управления должен брать значения для свойств Color (Цвет), Font (Шрифт) и ShowHint (показывать подсказку) из родительского элемента управления. Механизм связывания визуального компонента с родительским компонентом позволяет автоматически задавать для нового элемента управления некоторые свойства, отвечающие за его внешний вид. В результате все элементы управления, дочерние для одного родительского (формы, панели) будут выглядеть одинаково.

Свойство PopupMenu задает название локального меню, которое будет отображаться при нажатии правой кнопки мыши. Локальное меню отображается только в случае, когда свойство AutoPopup имеет значение True.

В классе TControl впервые появляются методы-обработчики событий, которые обеспечивают передачу в элемент событий мыши, технику drag-and-dock и перетаскивание (drag-and-drop).

Класс TWinControl

Новые механизмы, инкапсулированные в классе, обеспечивают выполнение характерных для оконных элементов функций: прием и передачу фокуса, отклик на действия мышью и ввод с клавиатуры.

Свойство TabOrder определяет положение компонента в так называемой последовательности табулятора. Это последовательность, в которой компоненты становятся активными, когда пользователь нажимает клавишу [Tab].

Метод SetFocus устанавливает фокус для данного компонента. Применяется для компонентов, имеющих фокус ввода.

Чтобы узнать, имеет ли элемент управления фокус, используется метод Focused : Boolean; Dynamic.

Свойство Brush определяет цвет и образец заливки элемента управления.

Свойство Controls – это массив указателей на все дочерние компоненты данного элемента управления. С помощью этого массива можно обратиться к дочернему элементу не по имени, а по порядковому номеру. Массив содержит указатели на все дочерние элементы управления.

Свойство ControlCount – определяет количество компонентов управления, владельцем которых является данный управляющий компонент.

Внешний вид оконного элемента определяется свойством Ctl3D : Boolean. При значении True элемент управления имеет трехмерный вид.

Класс TGraphicControl

Класс TGraphicControl предназначен для создания на его основе визуальных компонентов, не получающих фокус в процессе выполнения приложения. Так как непосредственным предком класса является класс TСontrol, то потомки TGraphicControl умеют реагировать на управляющие воздействия мышью.

Наглядный пример элемента управления, которому не нужно получать фокус, – это компонент TLabel, предназначенный для отображения текста, или компонент TImage, предназначенный для визуализации изображений.

Для визуализации элементов управления на основе этого класса используется канва, инкапсулированная в классе TСanvas.

Доступ к канве осуществляется через свойство Canvas.

Свойство Canvas предоставляет коду Delphi возможность манипуляции областью рисунка во время исполнения. Основная особенность свойства Canvas состоит в том, что оно содержит свойства и методы, упрощающие графику. С помощью методов свойства Cаnvas можно легко рисовать линии, дуги, прямоугольники и эллипсы, а также определять приоритетные и фоновые цвета и размещать текст на поверхности объекта.

Статьи к прочтению:

  • Общий комплекс артикуляционной гимнастики
  • Обследование деятельности предприятия

Создание элементов управления в excel

Похожие статьи:

  • Форма, ее свойства и их модификация.

    Сквозной пример создания приложения на Visual Basic. Создание любой программной системы (проекта) на Visual Basic состоит из следующих этапов: Создание…

  • Приложение 1 .общие свойства и события компронентов

    Многие стандартные визуальные компоненты имеют одинаковые свойства. Поэтому имеет смысл рассмотреть их отдельно, чтобы впоследствии больше не…

Иерархия наследования

                    IComponent

                    IControl

                    IFrame

                    Frame

Описание

Компонент Frame предназначен
для отображения фрагмента дополнительной формы на текущей форме.

Работа с компонентом

Данный компонент позволяет поддерживать общее оформление определенных
частей, используемых в различных формах, за счет выноса их в отдельную
форму.

При вставке компонента будет выдан запрос на выбор формы, которая в
дальнейшем будет отображаться в области фрейма. Для изменения отображаемой
формы необходимо определить значение свойства MetabaseObject.
Доступ к параметрам формы, отображаемой во фрейме, осуществляется посредством
свойства Form.

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

Во время выполнения формы игнорируются такие свойства компонента Frame, как Hint,
Focused,
Cursor,
а также события. Если фокус находится у какого-либо компонента формы,
отображаемой во фрейме, то будут срабатывать обработчики событий именно
этого компонента/формы. Исключением является событие OnKeyPreview,
которое наступает для всей иерархии компонентов, включая компонент Frame.

Пример

В режиме дизайна формы:

После запуска формы:

Свойства компонента Frame

  Имя свойства Краткое описание

Align

Свойство Align определяет
выравнивание компонента в рамках содержащего его родительского
компонента.

AllowDrag

Свойство AllowDrag
определяет возможность взять у компонента перетаскиваемый объект.

AllowDrop

Свойство AllowDrop
определяет, будет ли возможность у компонента принять перетаскиваемый
объект.

Anchors

Свойство Anchors возвращает
настройки, определяющие в процентном соотношении изменение размеров
текущего компонента при изменении размеров родительского компонента.

Brush

Свойство Brush определяет
кисть, используемую для заливки области компонента.

ClientHeight

Свойство ClientHeight
определяет высоту клиентской области компонента.

ClientWidth

Свойство ClientWidth
определяет ширину клиентской области компонента.

Color

Свойство Color определяет
цвет фона компонента.

Cursor

Свойство Cursor определяет
вид курсора, отображаемого при наведении курсора мыши на компонент,
во время выполнения формы.

Enabled

Свойство Enabled определяет
доступность компонента для пользователя.

Focused

Свойство Focused возвращает
True, если фокус установлен
на данном компоненте.

Font

Свойство Font определяет
параметры шрифта, используемого при отображении текста в компоненте.

Height

Свойство Height определяет
высоту компонента в пикселях.

HelpContext

Свойство HelpContext
определяет уникальный индекс раздела контекстно-зависимой справки
для данного компонента.

Hint

Свойство Hint определяет
текст подсказки, появляющийся при задержке указателя мыши над
компонентом.

HintTimeout

Свойство HintTimeout
определяет время отображения всплывающей подсказки.

Left

Свойство Left определяет
координату левого края компонента в пикселях.

Parent

Свойство Parent определяет
родительский компонент.

ParentColor

Свойство ParentColor
определяет, будет ли для компонента заимствован цвет родительского
компонента.

ParentFont

Свойство ParentFont
определяет, будет ли для компонента использоваться шрифт родительского
компонента.

ParentShowHint

Свойство ParentShowHint
определяет условие отображения всплывающей подсказки.

PopupMenu

Свойство PopupMenu
определяет контекстное меню, которое будет появляться при щелчке
правой клавишей мыши на компоненте.

Scrolls

Свойство Scrolls возвращает
параметры полос прокрутки компонента.

ShowHint

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

TabOrder

Свойство TabOrder определяет
позицию компонента в последовательности табуляции.

TabStop

Свойство TabStop определяет
признак необходимости компоненту получать фокус при нажатии кнопки
«Tab».

Text

Свойство Text определяет
строку, идентифицирующую компонент для пользователя.

Top

Свойство Top определяет
координату верхнего края компонента в пикселях.

Visible

Свойство Visible определяет
видимость компонента во время выполнения формы.

Width

Свойство Width определяет
горизонтальный размер компонента в пикселях.

Методы компонента Frame

  Имя метода Краткое описание

ClientToScreen

Метод ClientToScreen
преобразовывает координаты точки, указанные относительно системы
координат компонента, в экранные координаты.

DoDragDrop

Метод DoDragDrop позволяет
начать операцию перетаскивания.

GetImage

Метод GetImage возвращает
графическое изображение компонента со всеми дочерними компонентами.

ScreenToClient

Метод ScreenToClient
преобразовывает экранные координаты точки в координаты, указываемые
относительно системы координат компонента.

SetFocus

Метод SetFocus устанавливает
фокус на данный компонент.

События компонента Frame

   Имя события Краткое описание

OnBeginDrag

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

OnClick

Событие OnClick наступает,
если пользователь осуществил щелчок основной кнопкой мыши в области
компонента.

OnControlMove

Событие OnControlMove
наступает при перемещении компонента.

OnControlResize

Событие OnControlResize
наступает при изменении размеров у компонента.

OnDblClick

Событие OnDblClick
наступает, если пользователь осуществил двойной щелчок кнопкой
мыши в области компонента.

OnDragDrop

Событие OnDragDrop
для компонента наступает, когда пользователь отпускает над ним
перетаскиваемый объект.

OnDragEnter

Событие OnDragEnter
наступает, когда перетаскиваемый объект входит в область данного
компонента.

OnDragLeave

Событие OnDragLeave
наступает, когда перетаскиваемый объект выходит за границы данного
компонента.

OnDragOver

Событие OnDragOver
для компонента наступает, когда пользователь протаскивает над
ним перетаскиваемый объект.

OnEnter

Событие OnEnter наступает
в момент получения фокуса компонентом.

OnExit

Событие OnExit наступает
в момент потери фокуса компонентом.

OnHScroll

Событие OnHScroll наступает
при изменении положения ползунка горизонтальной полосы прокрутки.

OnKeyDown

Событие OnKeyDown наступает,
если компонент находится в фокусе и производится нажатие клавиши
на клавиатуре.

OnKeyPress

Событие OnKeyPress
наступает, если компонент находится в фокусе, при нажатии пользователем
символьной клавиши.

OnKeyPreview

Событие OnKeyPreview
наступает перед каждым событием, связанным с нажатием клавиш.

OnKeyUp

Событие OnKeyUp наступает,
если компонент находится в фокусе, при отпускании пользователем
любой, ранее нажатой клавиши.

OnMouseDown

Событие OnMouseDown
наступает, если указатель находится в области компонента и была
нажата любая кнопка мыши.

OnMouseEnter

Событие OnMouseEnter
наступает в момент входа курсора мыши в область компонента.

OnMouseHover

Событие OnMouseHover
наступает при задержке курсора мыши в области компонента.

OnMouseLeave

Событие OnMouseLeave
наступает в момент выхода курсора мыши за пределы области компонента.

OnMouseMove

Событие OnMouseMove
наступает при перемещении курсора мыши над компонентом.

OnMouseUp

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

OnMouseWheel

Событие OnMouseWheel
наступает, если компонент находится в фокусе при вращении колеса
мыши.

OnVScroll

Событие OnVScroll наступает
при изменении положения ползунка вертикальной полосы прокрутки.

См. также:

Стандартные компоненты

Обновлено: 21.03.2023

Понятие и особенности визуальных компонентов в среде Delphi.

Визуальные компоненты для работы с данными расположены на странице DataControls Палитры компонентов и предназначены для построения интерфейсной части приложения. Они используются для навигации по набору данных, а также для отображения и редактирования записей. Часто эти компоненты называются элементами, чувствительные к данным.[5]

Одни визуальные компоненты для работы с данными предназначены для выполнения операций с полями отдельной записи, они отображают и позволяют редактировать значение поля текущей записи. К таким компонентам относятся, например, однострочный редактор Edit и графический обзор Image.

Другие компоненты служат для отображения и редактирования сразу нескольких записей. Примерами таких компонентов являются сетки DBGrid и DBCtrlGrid, выводящие записи набора данных в табличном виде. Визуальные компоненты для работы с данными похожи на соответствующие компоненты страниц Standard и Additional и отличаются, в основном, тем, что ориентированны на работу с БД и имеют дополнительные свойства DataSource и Datafield. Первое из них указывает на источник данных, а второе — на поле набора данных, с которым связан визуальный компонент. Например, Edit отображает строковое значение, позволяя пользователю изменять его.

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

При программном изменении содержимого эти визуальных компонентов набор данных автоматически в режим редактирования не переводится. Для этой цели в коде должен предварительно вызываться метод Edit набора. Чтобы сохранить изменения в поле (полях) текущей записи, мы должны также предусмотреть соответствующие действия, например, вызов метода Post или переход к другой записи набора данных.[5]

Общая характеристика визуальных компонентов.

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

Оконный элемент управления представляет собой специализированное окно, предназначенное для решения конкретной задачи. К таким элементам относятся, например, поля редактирования, командные кнопки, полосы прокрутки.

Такие компоненты, как Edit, DBEdit, Memo или DBMemo при получении фокуса ввода отображают в своей области курсор редактирования. Компоненты, не связанные с редактированием информации, получение фокуса ввода обычно отображают с помощью с помощью пунктирного черного прямоугольника.

К неоконным элементам управления базовым является класс GraphiControl, производимый непосредственно от класса Control. Неоконные элементы управления на могут получать фокус ввода. Их достоинством является менее расходования ресурсов.

Свойства и события визуальных компонентов для работы с данными.

Свойства позволяют управлять внешним видом и поведением компонентов при проектировании и при выполнении приложения. Обычно установка значений большинства свойств компонентов выполняется на этапе проектирования с помощью инспектора объектов.

Свойство Name указывает на имя компонента, которое используется для управления компонентов во время выполнения приложения. Каждый новый компонент, помещаемый на форму, получает имя по умолчанию, автоматически образуемое путем добавления к названию компонента его номера в порядке помещения на форму. На этапе разработки приложения мы можем изменять имя компонента на более осмысленное и соответствующее назначению компонента.

Свойство Aling определяет способ выравнивания компонента на самой форме, на которой оно находится. Выравнивание используется в случае, когда требуется, чтобы какой-либо интерфейсный элемент занимал определённое положение.

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

Свойство Color определяет цвет фона. Часто удобно задавать цвета с помощью констант. Отображаемые цвет зависит от параметров видеокарты и монитора, в первую очередь от установленного цветного разрешения.

Визуальные компоненты способны генерировать и обрабатывать достаточно большое число событий различных видов. К наиболее общим группам событий можно отнести следующие действия:

— Выбор управляющего элемента;

— Перемещение указателя мыши;

— Нажатие клавиш клавиатуры;

— Получение и потеря управляющим элементом фокуса ввода;

— Перемещение объектов методом drag-and-drop.

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

Раздел: Информатика, программирование
Количество знаков с пробелами: 114140
Количество таблиц: 0
Количество изображений: 0

Разработать поле Edit, которое содержит 3 дополнительных текстовых поля, с функцией случайной смены текста с течением времени. Создать установочный пакет и тестовое приложение с использованием разработанного компонента.

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

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

Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются во время выполнения точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Невизуальные компоненты появляются во время проектирования как пиктограммы на форме. Они никогда не видны во время выполнения, но обладают определенной функциональностью (например, обеспечивают доступ к данным, вызывают стандартные диалоги Windows и др.)

Для добавления компонента в форму можно выбрать мышью нужный компонент в палитре и щелкнуть левой клавишей мыши в нужном месте проектируемой формы. Компонент появится на форме, и далее его можно перемещать, менять размеры и другие характеристики.

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

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

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Многие свойства компонента в колонке свойств имеют значение, устанавливаемое по умолчанию (например, высота кнопок). Свойства компонента отображаются на странице свойств (Properties). Инспектор объектов отображает опубликованные (published) свойства компонентов. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public), опубликованные свойства, которые доступны только во время выполнения приложения. Инспектор объектов используется для установки свойств во время проектирования. Список свойств располагается на странице свойств инспектора объектов. Можно определить свойства во время проектирования или написать код для видоизменения свойств компонента во время выполнения приложения.

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

Для того чтобы добавить обработчик событий, нужно выбрать на форме с помощью мыши компонент, которому необходим обработчик событий, затем открыть страницу событий инспектора объектов и дважды щелкнуть левой клавишей мыши на колонке значений рядом с событием, чтобы заставить C++ Builder сгенерировать прототип обработчика событий и показать его в редакторе кода. При этом автоматически генерируется текст пустой функции, и редактор открывается в том месте, где следует вводить код. Курсор позиционируется внутри операторных скобок < . >. Далее нужно ввести код, который должен выполняться при наступлении события. Обработчик событий может иметь параметры, которые указываются после имени функции в круглых скобках.

Метод является функцией, которая связана с компонентом, и которая объявляется как часть объекта. Создавая обработчики событий, можно вызывать методы, используя следующую нотацию: ->, например:

При создании формы связанные с ней модуль и заголовочный файл с расширением *.h генерируются обязательно, тогда как при создании нового модуля он не обязан быть связан с формой (например, если в нем содержатся процедуры расчетов). Имена формы и модуля можно изменить, причем желательно сделать это сразу после создания, пока на них не появилось много ссылок в других формах и модулях.

Библиотека Визуальных Компонент позволяет программистам визуально создавать программные приложения, не прибегая более к кодированию классов «вручную», или кодированию в рамках стандартных библиотек MFC (Microsoft Foundation Class), или OWL (Object Windows Library).

Программист создает законченное приложение посредством интерактивного взаимодействия с интегрированной визуальной средой C++Builder, используя компоненты VCL для создания интерфейса программы с пользователем и с другими управляющими элементами: обслуживания баз данных, контролируемого ввода параметров и т.д. Характерная для C++Builder методика визуального стиля разработки программного обеспечения не применяется множеством других систем программирования.

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

Любая компонента может находиться во владении (ownership) других компонент, но не все компоненты могут являться владельцами. Свойство компоненты Owner (Владелец) содержит ссылку на компоненту, которая ею владеет. Рис. 1. показывает иерархию владения некоторой формы.

Владелец ответствен за освобождение тех компонент, которыми владеет, когда сам разрушается. Так в процессе конструирования формы, она автоматически становится владельцем всех компонент, размещенных на ней, даже если часть их размещена на другой компоненте, такой как TPanel. Владение применимо не только к видимым, но и к невидимым (Ttimer, DataSource) компонентам.

Рис. 1. Пример иерархии владения.

Определение класса в языке C++ содержит инкапсуляцию членов данных и методов, оперирующих с данными и определяющих поведение объекта. Эта концепция всех систем ООП принята в VCL.

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

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

C++Builder использует ключевое слово _property для идентификации свойств. Синтаксис описания свойства имеет вид:

где список атрибутов содержит перечисление следующих атрибутов свойства:

Рис. 2. показывает ключевые классы в иерархической структуре, от которых произведены все компоненты VCL. Каждый объект представляет некоторый набор методов, событий и свойств и имеет специальное назначение. Подобно тому как TObject является базовым классом для всех порождаемых классов, TComponent является базовым классом для всех порождаемых компонент.

Невидимые компоненты произведены от класса TComponent. Графические компоненты, не ассоциированные с оконными элементами управления, произведены от класса TGraphicControl.

Являясь оконными элементами, компоненты стандартного управления произведены непосредственно от класса TWinControl, а оригинальные компоненты — косвенно от класса TCustomControl, восходящего к TWinControl. Именно на уровне TWinControl и вводится «оконный дескриптор» (window handle).

Рис.2. Иерархия ключевых базовых классов VCL.

Процесс разработки компоненты TRaedit проходит через выполнение следующих этапов:

1. Создание модуля для новой компоненты.

2. Наследование производного класса от существующего базового компонентного класса.

3. Добавление нужных свойств, событий и методов.

6. Инсталляция компоненты на Палитру.

7. Сохранение файлов компоненты.

Программный модуль состоит из двух файлов Raedit.срр и Raedit.h, которые компилируются в объектный файл с расширением Raedit.obj. C++Builder использует модули в различных целях — каждая форма и большинство компонент (или их логических групп) имеют свой собственный модуль.

Так как, нет необходимости создавать новый класс, можно воспользоваться уже существующим и модифицировать его. Для этой цели был выбран абстрактный компонентный класс TCustomEdit.

class PACKAGE TRaedit : public TCustomEdit

Добавим необходимые свойства в созданный класс.

Свойство TimerEnabled отвечает за включение и отключение таймера, а следовательно и за смену текста в текстовом поле.

Свойство Random определяет порядок смены текста: случайно или последовательно.

Свойства Text1-Text3 будут определять дополнительные текстовые поля компоненты.

Свойство TimerInterval устанавливает задержку при смене текста в милесекундах.

Свойство TextIndex возвращает номер активной строки или устанавливает строку как активную.

Для регистрации компоненты на палитре компонентов среды разработки C++Builder добавим функцию Register в файл Raedit.cpp:

RegisterComponents(«USATU», classes, 0); >

Инсталляция компоненты

При инсталляции новой компоненты или при выполнении команды Component | Rebuild Library, Библиотека Визуальных Компонент перестраивается, и C++Builder создает временный файл CMPLIB32.CPP исходных текстов VCL. Чтобы сохранить этот файл, с помощью команды Options | Environment | Library необходмо открыть диалог опций и установить флаг Save Library Source Code.

Далее, необходимо произвести компиляцию проекта, что выполняется нажатием кнопки Compile или сочетанием клавиш Alt-F9. После компиляции, выполняется инсталляция компоненты на палитру.

Рис3. Открытый файл проекта компоненты в C++ Builder

Компонента Raedit после установки появится на вкладке USATU:

Рис 4. Палитра компонентов C++ Builder 6

Тестирование компоненты

Для тестирования компоненты разработано тестовое приложение, которое позволяет изменить все оригинальные свойства компоненты. На форме приложения расположено два экземпляра компоненты, для каждой из них помещены управляющие элементы позволяющие изменять:

— порядок изменения текста;

— текст по индексу строки;

— текст всех полей.

В тестовом приложении постоянно отображается текущий активный текст компоненты, а так же выводится список строк в той последовательности, в которой компонента изменяет текст.

Рис. 6 Форма программы тестирования

В данной курсовой работе, были рассмотрены возможности визуальных компонентов среды C++ Builder, а так же разработан новый визуальный компонент Raedit, представляющий из себя текстовое поле с возможностью случайной смены текста содержащегося в нескольких текстовых полях компоненты. Для созданной компоненты были определены свойства, необходимые для нормального её функционирования. Компонента была отлажена, и установлена на палитру. Для проверки работоспособности компоненты было создано тестовое приложение.

1) Теллес, М. BORLAND C++ BUILDER: библиотека программиста .— СПб : Питер, 1998 .— 512с.

2) Архангельский, А. Я. Язык C++ в C++Builder : справочное и методическое пособие / А. Я. Архангельский .— М. : Бином, 2008 .— 942 с.

3) Романов, В.Ю. Программирование на языке C++: Практ. подход .— М. : Компьютер, 1993 .— 157с.

4) Конспект лекций УГАТУ по предмету объектно-ориентированное программирование.

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

Стандартные компоненты. Все компоненты являются отдельными классами, разделяются на видимые (визуальные) и невидимые. Визуальные компоненты появляются во время выполнения программы, отображаясь так же во время оформления формы.

Button – кнопка с текстом или рисунком

CheckBox – с двумя состояниями, позволяет задать значение истины для параметра, если он отмечен флажком и ложным, если галочки нету.

Label – выводит строку

PicterBox – позволяет добавить на форму картинку

GroupBox – группирует компоненты в формы

Свойства являются атрибутами любого компонента. Они определяют его внешний вид и поведение. Многие свойства компонентов имеют значения по умолчанию. Редактирование свойств компонентов в процессе создания программы выполняется на панели свойств.

Name – задает имя, через которое возможно обращение из программы к данному компоненту.

Enable – делает компонент свободным (true) или недоступным (false)

Cursor – вид курсора мышки

AutoScroll – позволяет задать для формы автоматическое появление полос прокрутки.

Size – задает размер компонента.

TextBox – выполняется при нажатии клавиши клавиатуры

ActiveVoid – выполняется когда компонент становится активным

Show – выполняется при отображении окна

Tick – выполняется по истечении заданного момента времени

Методы. С каждым компонентом (класса компонента) связан свой набор методов (подпрограмм, которые реализуют дополнительные функции, связанные с компонентами). Например, у компонента ListBox имеются методы Add – добавить элементов список, RemoveAdd позволяет удалить элемент списка с заданным номером. Вызов метода для компонента выполняется указанием имени компонента.

Работа со стандартными компонентами

Стандартные компоненты. Все компоненты являются отдельными классами, разделяются на видимые (визуальные) и невидимые. Визуальные компоненты появляются во время выполнения программы, отображаясь так же во время оформления формы.

Button – кнопка с текстом или рисунком

TabControl – позволяет добавить на форму закладки с различными компонентами (контейнеры)

CheckBox – с двумя состояниями, позволяет задать значение истины для параметра, если он отмечен флажком и ложным, если галочки нету.

Label – выводит строку

Timer – служит для создания счетчика отсчета времени (не визуальный)

ListBox – отображает список строк

PicterBox – позволяет добавить на форму картинку

GroupBox – группирует компоненты в формы

ContextMenuStrim – позволяет добавить на форму контекстное меню, вызываемое нажатием правой кнопки мыши

SaveFileDialog – сохранение файла

Обмен данными между формами

Часто возникает необходимость передать значения между формами в одном приложении.

В главной форме запуск новой производим так:

Form2 frm = new Form2();

frm.Owner = this; //this – это текущая форма (Form1)

После такого действия в новой форме можно обращаться к элементам родительской формы, так:

Form1 frm = (Form1) this.Owner;

frm.label1.Text = “Test”; // label1 находится на Form1.

Работа с файлами

Файл – это совокупность связных данных, хранящихся во внешней памяти компьютера и рассматривающийся как единое целое. Файлы предназначены для хранения и обработки большого объема данных в программе. Работа с файлами в программе выполняется с использованием файловой переменной. Файлы в языке программирования разделяются на группы:

Типизированные файлы

Текстовые файлы

Не типизированные файлы

При работе с файлами существует определенный порядок действий:

1)Объявление файловой переменной

2)Связывание этой переменной с конкретным файлом на диске

3)Открытие файла (для записи или чтения)

4)Выполнений действий с файлами (чтение или запись)

5)Закрытие файлов

Классы предназначены для работы с файлами. Находятся в пространстве имен Sistem.IO.

Классы Directory и File содержат статические методы для выполнения операций с папками и файлами (создание, удаление, проверка существования и т.д.)

Класс Path – создает статические методы для работы с путями и именами файлов.

Классы Binary Reader и Binary Writer включают методы, предназначенные для чтения и записи простых типов данных, как бинарных значений.

Классы Directory Info и File Info предназначены для получения информации о папках и каталогах

Класс Stream предназначен для записи или чтения последовательности байт (работа с потоком данных)

Классы Text Reader и Text Writer предназначены для чтения и записи последовательности символов.

string path = @»c:a.txt»;

if(File.Exists(path))

File.Delete(path);

using(FileStream filestream = File.Create(path, 1024))

new UTF8Encoding(true).GetBytes(«Текст, который будет записан в файл»);

filestream.Write(text, 0, text.Length);

CreateText(string path)

string path = @»c:a.txt»;

if(!File.Exists(path))

using(StreamWriter streamwriter = File.CreateText(path))

streamwriter.WriteLine(«Строка 1»);

streamwriter.WriteLine(«Строка 2»);

streamwriter.WriteLine(«Строка 3»);

OpenText(string path)

using(StreamReader streamreader = File.OpenText(path))

string sString = «»;

while((sString = streamreader.ReadLine()) != null)

richTextBox1.AppendText(sString+»rn»);

Доступ к данным СУБД

Методы доступа к БД:

1) Доступ с использованием прямого или косвенного вызова СУБД

2) Использование объектного интерфейса.

Прямой вызов программного интерфейса СУБД:

Большинство СУБД предоставляет в распоряжение программиста интерфейс API, с помощью которого программа может выполнять любые действия с БД.

Использование программного интерфейса ODBC.

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

Реализует возможности интерфейса ODBC, при его использовании не требуется напрямую вызывать программный интерфейс ODBC или СУБД. Преимущество: возможность доступа веб-приложений к БД.

Интерфейс OLE DB.

Является стандартом доступа к СУБД, и в отличие от ODBC и RDO, предоставляет возможность доступа приложений не только к реляционным БД, но и к БД имеющим другую архитектуру.

Строится на основе объектов, реализованных в OLE DB. Данный подход доступа к СУБД является самым распространенным. Состоит из этапов:

1) Установка соединения

2) Подготовка команды и параметров

3) Выполнение команды

4) Обработка результатов выполнения команды

5) Закрытие соединения

6) Обработка ошибок

С развитием веб-приложений получают распространение многоуровневые системы. В этих системах клиент обращается к СУБД не напрямую, а через веб-сервер.

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

Компоненты в среде Delphi – это особые объекты, которые являются строительными кирпичиками визуальной среды разработки и приспособлены к визуальной установке свойств. Конструируя приложение, вы берете компоненты из Палитры Компонентов, располагаете на форме и устанавливаете их свойства в окне Инспектора Объектов.

Структура компонента описывается формулой: Компонент = состояние (свойства) + поведение (методы) + обратная реакция (события).

Состояние компонента определяется его свойствами. Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения). Помимо этого, свойства могут получать значения либо на этапе проектирования (design-time), либо только во время выполнения программы (run-time). Первые устанавливаются для каждого компонента в окне свойств и определяют начальное состояние компонента. Во время выполнения приложения эти свойства могут быть изменены программно, соответственно изменится внешний вид и поведение компонента. Вторая группа – это свойства, которые не видны в окне свойств, и управлять которыми можно только программно. С точки зрения языка Delphi различие между этими группами свойств состоит в том, что первые объявлены в секции published, а вторые – в секции public.

Поведение компонента описывается с помощью его процедур и функций (методов). Вызовы методов компонента помещаются в исходный код программы и происходят только во время выполнения приложения. Методы не имеют под собой визуальной основы.

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

Визуальные и невизуальные Компоненты

Все компоненты делятся на две группы: визуальные и невизуальные.

Визуальные компоненты (visual components) – это видимые элементы пользовательского интерфейса: кнопки, метки, блоки списков и др. Они выглядят одинаково и на стадии проектирования, и во время работы приложения.

Невизуальные компоненты (non-visual components) – это, так сказать, бойцы невидимого фронта; они работают, но сами на экране не видны. К невизуальным компонентам относятся таймер, компоненты доступа к базам данным и др. В процессе проектирования такие компоненты представляются на форме небольшим значком. Их свойства устанавливаются в уже известном вам окне свойств. Некоторые компоненты хоть и являются невизуальными, могут что-нибудь отображать на экране. Например, невизуальный компонент MainMenu отображает на форме полосу главного меню, а компонент OpenDialog – стандартное диалоговое окно выбора файла.

Общие свойства визуальных компонентов

Общие события визуальных компонентов

Вопросы для самоконтроля [1,2]:

1. Что такое объект? Дайте определение свойству, методу и событию объекта.

Читайте также:

      

  • Реферат пдд для детей
  •   

  • Снижение энергоемкости в растениеводстве реферат
  •   

  • Пауперизация деклассирование пролетаризация реферат
  •   

  • Гете учение о цвете реферат
  •   

  • Реферат герои троянской войны

Урок 6. Базовые классы элементов управления

Напомним, иерархия базовых классов имеет следующий вид:

Рисунок 1

Визуальные и невизуальные компоненты

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

Компоненты:

Невизуальные компоненты
не имеющие представления на экране, и не взаимодействующие с пользователем

Визуальные компоненты, называемые также элементами управления, имеющие визуальное представление и возможность взаимодействия с пользователем

Диалоговые компоненты, которые не имеют визуального представления, но могут его приобретать для временного взаимодействия с пользователем

Невизуальные компоненты

Невизуальные компоненты наследуются напрямую от класса TComponent и поддерживают все его возможности взаимодействия со средой разработки, например, сохранение свойств и связей с событиями в файлы формы и их восстановление при последующем открытии проекта.

Невизуальные компоненты не имеют представления на экране во время выполнения программы, в процессе разработки отображаются на формах в виде иконок, сопоставленных им в Палитре компонентов, и предназначены для добавления в программу поддержки некоторой технологии. В качестве примера можно привести наборы компонентов для работы с базами данных с использованием механизмов доступа BDE или ADO, или набор компонентов, обеспечивающих взаимодействие программных продуктов через сети.

Базовый класс визуальных компонентов — TControl

Группа визуальных компонентов (элементов управления) строится на основе класса TControl, описывающим свойства, методы и события, присущие всем элементам управления, такие как:

  • расположение на экране;
  • правила выравнивания относительно других элементов управления;
  • курсор мыши, отображаемый при наведении мыши на элемент управления;
  • шрифт, используемый для вывода надписей на компоненте;
  • цвет фона;
  • подсказка, выводимая операционной системой при попадании элемента управления в фокус.

Общие свойства визуальных компонентов

Местоположение и размер визуального компонента

Для определения местоположения и размеров визуального компонента используются следующие свойства:

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

Выравнивание элемента управления

Для выравнивания компонента в рабочей области его владельца (обычно это форма) применяется свойство Align.
Может принимать следующие значения: alNone, alTop, alBottom, alLeft, alRight, alClient.
При значении alNone выравнивание отсутствует. При следующих четырех значениях выравнивание осуществляется по соответствующей стороне. Значение alclient приводит к тому, что элемент управления изменяет свои размеры до размеров рабочей области владельца.

Свойство Anchors («Якорь»)  обеспечивает фиксацию элемента управления по сторонам владельца. Сложное свойство, которое содержит следующие подсвойства
akTop – фиксация по верху,
akLeft – фиксация по левой стороне,
akRight – фиксация по правому краю,
akBottom – фиксация по нижнему краю.

Комбинируя якоря для сторон, можно добиться различных вариантов поведения компонента при изменении размеров владельца.
Если по вертикали или горизонтали якорь не установлен вообще, то при изменении размеров владельца компонент остается на том же месте с учетом изменившегося размера.

Если по вертикали или горизонтали установлены оба якоря, то при изменении размеров владельца размер элемента управления изменяется таким образом, чтобы расстояния до сторон владельца остались неизменными.

Задание 1. Установить на форму две панели (на странице Standart) panel1 и panel2 и осуществить выравнивание первой панели по верху форму, а второй панели на всё оставшееся место формы. Использовать свойство Align.

Задание 2: Посмотреть как работает якорь.

Ход решения:

Задайте размеры формы 250х250. Установите компоненты Memo и кнопку (см.рис.3).


Рисунок 3

Установите для кнопки якорь по правой и нижней стороне. Для этого в подсвойствах свойства Anchors установите следующие значения:

akTop – false, akLeft – false, akRight – true, akBottom – true.

Запустите программу и увеличьте размеры формы. Как поведет себя кнопка? А Memo?

Теперь для Memo настройте якорь по всем четырем сторонам. Все подсвойства свойства Anchors установите в True.

Запустите приложение и снова увеличьте размер формы. Как ведет себя Memo?

Свойство AutoSize обеспечивает изменение размеров компонента в соответствии с размерами его содержимого (текста, изображения, списка, иерархического дерева и т. д.).

Внешний вид элемента управления

Для определения цвета компонента используется свойство Color.
При нахождении указателя мыши над компонентом его изображение может изменяться в соответствии со значением свойства Cursor.
Для текста компонента шрифт обычно задается свойством Font.
Сам текст задается свойством Text.
Свойство Hint содержит текст ярлыка — однострочной подсказки, которая появляется в маленькой рамке при остановке мыши на элементе управления.
Если свойство ShowHint=true, то подсказка показывается.
Если свойство ShowHint=False, то подсказка не отображается.

Рисунок 4. У кнопки Hint=’Подсказка’, ShowHint=True;

Задание 3: Установить на форму кнопку и сделать для нее всплывающую подсказку «Нажми меня».

Видимость компонента.

Элемент управления можно сделать видимым или невидимым. Для этого применяется свойство Visible.
Visible=True – компонент виден,  
Visible=false – компонент не виден.

Доступность элемента управления

Определяется свойством Enabled.
Если Enabled=True, то компонент доступен (полностью работоспособен).
Если Enabled=False, то компонент не доступен (неактивен и отображается серым цветом).

Задание 4. Установите на  форму три кнопки, и сделать так, чтобы при запуске была одна кнопка видима и доступна, вторая невидима, а третья видима, но не доступна для пользователя.

Свойство визуальной принадлежности

Одно из самых важных свойств элементов управления — это свойство визуальной принадлежности Parent, описанное в классе TControl, и определяющее внутри какого компонента визуально располагается данный элемент управления. Данное свойство имеет тип TWinControl, так как любой элемент управления может располагаться только в Windows-окне.

Класс TWinControl

Класс TWinControl обеспечивает создание оконных элементов управления.
Главное отличие оконного элемента управления от любых других — наличие дескриптора окна hwnd. Дескриптор окна — это специальный идентификатор, который операционная система присваивает всем объектам, которые должны обладать свойствами окна.
Оконный элемент управления умеет:

  •  получать и передавать фокус управления во время выполнения приложения;
  •  воспринимать управляющие воздействия от мыши и клавиатуры; 
  •  размещать на себе другие элементы управления.

Оконными элементами управления являются не только формы, но и практически все стандартные элементы управления Windows.

Фокус

Для передачи фокуса между элементами управления на одной форме часто используется клавиша <Таb>. Порядок перемещения фокуса между элементами определяется свойством TabOrder. В первую очередь фокус передается компоненту с минимальным значением свойства. Далее — по возрастанию значения. При переносе компонента на форму это значение задается автоматически в соответствии с числом компонентов на форме.
Если свойство TabStop=False, то компонент не будет откликаться на клавишу <Таb>.
Для передачи фокуса прямо элементу управления применяется метод SetFocus.
Чтобы узнать, имеет ли элемент управления фокус, в настоящее время используется метод Focused.

Внешний вид

Все оконные элементы имеют рамку по контуру (впрочем, она может быть не видна). Ее параметры задаются группой свойств:

  •  BevelEdges — задает, какие стороны входят в рамку;
  •  Bevellnner, BevelOuter — задают внешний вид рамки;
  •  BevelKind — определяет стиль рамки;
  •  BevelWidth — задает размер рамки.

Внешний вид оконного элемента определяется свойством Ctl3D.
Если Ctrl3D=True, то элемент управления имеет трехмерный вид.
Если Ctrl3D=False, то элемент выглядит плоским.

Рисунок 5. у Edit1 свойство Ctrl3D=False, у Edit2 свойство Ctrl3D=True

Задание 5:  создайте форму, показанную на рисунке, комбинируя свойства BevelEdges, Bevellnner, BevelOuter, BevelKind,  BevelWidth.

Оконный элемент может содержать другие компоненты. Для управления ими применяется индексированный список указателей, представляющих свойство Controls.
Общее число дочерних элементов управления содержится в свойстве ControlCount.

Класс TGraphicControl

Класс TGraphicControl используется для создания неоконных (не получающих фокус) элементов управления.
Так как непосредственным предком класса является класс TControl, то потомки TGraphicControl умеют реагировать на управляющие воздействия мышью.
Наглядный пример элемента управления, которому не нужно получать фокус, — это компонент TLabel, предназначенный для отображения текста, или компонент Timage, предназначенный для визуализации изображений.
Для визуализации элементов управления на основе этого класса используется канва, инкапсулированная в классе TCanvas.

Составитель: Салий Н.А.

Яндекс.Метрика

Понравилась статья? Поделить с друзьями:
  • Дресс код установленный в компании является примером корпоративной нормы
  • Единый центр документов на текстильщиков часы работы миграционной службы
  • Екатеринбургская электросетевая компания официальный сайт личный кабинет
  • Екатеринбургский гарнизонный военный суд реквизиты для оплаты госпошлины
  • Если нет управляющей компании в многоквартирном доме кто отвечает за дом