Тема 3. Использование компонентов при создании приложений Приемы размещения компонентов в окне формы. Общие и индивидуальные свойства и события компонентов. Приемы программирования обработки событий. Приемы размещения компонентов в окне формы начало Выбор компонента для последующего размещения его в окне формы производится на одной из вкладок Палитры компонентов (Standard, Additional, Win32, System и т.д.). Для расположения выбранного компонента в окне формы указатель "мыши" сначала необходимо переместить в область Палитры компонентов на выбранный компонент (точнее сказать, на пиктограмму выбранного компонента) и затем нажать на него, после чего он должен выглядеть нажатым. Приемы размещения компонентов в окне формы продолжение Затем следует переместить указатель "мыши" в область окна формы, там, удерживая нажатой левую кнопку "мыши", обвести указателем "мыши" область, которую будет занимать создаваемый компонент, и отпустить кнопку "мыши" (можно и просто выполнить щелчок левой кнопкой "мыши", когда указатель "мыши" находится в области формы в том месте, где должен быть расположен компонент). При правильном выполнении этих действий в окне формы должно появиться изображение компонента, выделенное маркерами в виде маленьких черных квадратиков. При необходимости затем можно указателем "мыши" изменить положение компонента в окне формы или изменить размеры этого компонента (используя маркеры). Приемы размещения компонентов в окне формы продолжение Если необходимо расположить в окне формы несколько одинаковых компонентов, то в области Палитры компонентов следует, используя указатель "мыши", нажать на выбранный компонент при нажатой клавише Shift, после чего этот компонент будет выделен цветной рамкой, и, используя указатель "мыши", затем можно располагать в окне формы произвольное количество экземпляров выделенного компонента. Для завершения работы с выбранным компонентом можно в области Палитры компонентов нажать на другой компонент или нажать кнопку-указатель (с изображением белой стрелки) в левой стороне Палитры компонентов. Приемы размещения компонентов в окне формы окончание Если в области Палитры компонентов с помощью указателя "мыши" выполнить двойной щелчок по выбранному компоненту, то этот компонент автоматически расположится в окне формы. При появлении компонента в окне формы соответствующий этому компоненту значок появляется в окне Object TreeView. Общие и индивидуальные свойства и события компонентов начало Значения свойств компонентов определяют расположение, размеры, вид и прочие характеристики компонентов. Значения свойств компонентов можно устанавливать в окне Object Inspector на вкладке Properties на стадии проектирования приложения. Для того чтобы установить значения свойств компонента, необходимо, чтобы этот компонент был выбран в раскрывающемся списке в верхней части окна Object Inspector. При необходимости установки одинаковых значений одних и тех же свойств сразу для нескольких компонентов это можно также сделать в окне Object Inspector, предварительно выделив все эти компоненты. Общие и индивидуальные свойства и события компонентов продолжение Значение свойства в окне Object Inspector может быть изменено или установлено в строке с названием свойства правее этого названия: или непосредственным вводом значения или выбором из раскрывающегося списка, или с использованием специального окна. Общие и индивидуальные свойства и события компонентов продолжение Если левее названия свойства отображается знак + , то при нажатии на этот знак можно получить доступ к подсвойствам данного свойства, для которых тоже можно изменять или устанавливать свои значения. Общие и индивидуальные свойства и события компонентов продолжение Значения свойств компонентов, установленные на стадии проектирования приложения, могут действовать при запуске приложения на выполнение. Значения свойств компонентов можно изменять и программным путем во время выполнения приложения. Некоторые свойства, называемые свойствами времени выполнения программы, могут отсутствовать в окне Object Inspector, но значения этих свойств также могут изменяться программным путем во время выполнения приложения и использоваться в процедурах обработки событий. Общие и индивидуальные свойства и события компонентов продолжение Все без исключения компоненты (включая форму) имеют целочисленное свойство Tag, первоначальное значение которого по умолчанию равно нулю. Это свойство представляет собой по сути дела целочисленную переменную, связанную с компонентом. Значение этого свойства может быть использовано, например, как номер состояния компонента (этому состоянию может соответствовать, например, определенный набор значений свойств этого компонента), в зависимости от значения которого (номера) в программе могут быть выполнены те или иные действия. Общие и индивидуальные свойства и события компонентов продолжение Кнопка Button с вкладки Standard Палитры компонентов является простейшей и наиболее употребительной из кнопок. Наиболее характерным свойством кнопки Button является свойство Caption, наиболее характерным событием – OnClick, наступающее при щелчке левой кнопкой "мыши", когда ее указатель находится в области кнопки (процедура обработки этого события будет создана, если поместить указатель "мыши" в область кнопки или на ее значок в окне Object TreeView и затем выполнить двойной щелчок левой кнопкой "мыши"). Общие и индивидуальные свойства и события компонентов продолжение Кнопка BitBtn с вкладки Additional Палитры компонентов имеет те же основные свойства, что и кнопка Button, и, кроме того, на кнопке BitBtn вместе с текстом можно располагать изображение (свойство Glyph, а также другие свойства, определяющие размещение на кнопке изображения и текста). Используя свойство Font, для этой кнопки можно изменять в том числе и цвет шрифта (в отличие от кнопки Button). Общие и индивидуальные свойства и события компонентов продолжение Кнопка SpeedButton с вкладки Additional Палитры компонентов имеет те же основные свойства, что и кнопка BitBtn (в том числе, как и на кнопке BitBtn, на кнопке SpeedButton вместе с текстом можно располагать изображение). Свойство Caption кнопки SpeedButton по умолчанию имеет пустое значение. Особенностью кнопок SpeedButton является возможность их использования как кнопок с фиксацией нажатого состояния (свойства GroupIndex, AllowAllUp, Down). Общие и индивидуальные свойства и события компонентов продолжение Однострочное текстовое поле Edit с вкладки Standard Палитры компонентов является простейшим полем, предназначенным для ввода и редактирования текста. Наиболее характерным свойством текстового поля Edit является свойство Text. Общие и индивидуальные свойства и события компонентов продолжение Многострочное текстовое поле Memo с вкладки Standard Палитры компонентов предназначено для ввода и редактирования текста, который может состоять из нескольких строк. Наиболее характерными свойствами текстового поля Memo являются свойства Lines и Alignment. Общие и индивидуальные свойства и события компонентов продолжение Многострочное текстовое поле RichEdit с вкладки Win32 Палитры компонентов отличается от поля Memo возможностью работы с текстом в формате RTF (Rich Text Format) для форматирования отдельных фрагментов текста (с использованием свойства времени выполнения SelAttributes). Общие и индивидуальные свойства и события компонентов продолжение Числовая информация может находиться в любом текстовом поле только в символьном виде, поэтому перед выполнением вычислений символьную информацию из этого поля следует преобразовать в числовой вид (можно с помощью функций StrToInt или StrToFloat), а после выполнения вычислений выполнить обратное преобразование числовой информации в символьную (можно с помощью функций IntToStr или FloatToStr), например: Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text)); В связи с возможностью выравнивания текста по правому краю для полей Memo и RichEdit эти поля являются более подходящими для ввода числовой информации по сравнению с полем Edit, в котором всегда установлено выравнивание только по левому краю. Общие и индивидуальные свойства и события компонентов продолжение Метка Label с вкладки Standard Палитры компонентов используется для вывода текста на поверхность формы. Метку иногда называют надписью или полем вывода текста. Текст метки может занимать лишь часть области метки. Наиболее характерным свойством метки является свойство Caption. Общие и индивидуальные свойства и события компонентов продолжение Метка StaticText с вкладки Additional Палитры компонентов отличается от метки Label наличием свойства BorderStyle, определяющим рамку текста (бордюр). Наиболее характерным свойством метки является свойство Caption. Кроме того, в метке StaticText перенос длинного текста осуществляется автоматически (для этого значение свойства AutoSize должно быть равно False). Общие и индивидуальные свойства и события компонентов продолжение Флажок CheckBox с вкладки Standard Палитры компонентов обычно используется для индикации состояния. В области флажка находятся индикатор и текст, обычно поясняющий назначение флажка. Наиболее характерными свойствами флажка CheckBox являются Checked, State, AllowGrayed, Caption. Общие и индивидуальные свойства и события компонентов продолжение Наиболее характерным событием для флажка является событие OnClick, наступающее при щелчке левой кнопкой "мыши", когда ее указатель находится в области флажка (процедура обработки этого события будет создана, если поместить указатель "мыши" в область флажка или на его значок в окне Object TreeView и затем выполнить двойной щелчок левой кнопкой "мыши"). В процедуре обработки этого события следует проверять значения свойства Checked или связанного с ним свойства State, которые уже принимают новые значения, соответствующие состоянию флажка, еще до входа в эту процедуру. Общие и индивидуальные свойства и события компонентов продолжение Переключатель RadioButton с вкладки Standard Палитры компонентов иначе называется радиокнопкой и используется только совместно с другими переключателями (радиокнопками). Переключатели обычно образуют группу, в которой может быть выбран только один из них (иначе говоря, при включении одной из радиокнопок группы остальные радиокнопки автоматически выключаются или, иначе говоря, сбрасываются). Наиболее характерными свойствами переключателя RadioButton являются Checked и Caption. Общие и индивидуальные свойства и события компонентов продолжение Наиболее характерным событием для переключателя является событие OnClick, наступающее при щелчке левой кнопкой "мыши", когда ее указатель находится в области переключателя (процедура обработки этого события будет создана, если поместить указатель "мыши" в область переключателя или на его значок в окне Object TreeView и затем выполнить двойной щелчок левой кнопкой "мыши"). В процедуре обработки этого события следует проверять значения свойства Checked, которое уже принимает новое значение, соответствующее состоянию переключателя, еще до входа в эту процедуру. Общие и индивидуальные свойства и события компонентов продолжение Список строк ListBox с вкладки Standard Палитры компонентов предназначен для выбора из него строк. Наиболее характерными свойствами списка ListBox являются свойства Items, MultiSelect, ExtendedSelect, Sorted. Процедуры обработки событий, имеющие отношение к работе со списком, создаются, как правило, для событий, связанных с другими компонентами, например, с кнопками (при нажатии на кнопку может происходить, например, копирование выделенной строки списка в текстовое поле). Общие и индивидуальные свойства и события компонентов продолжение Раскрывающийся список ComboBox с вкладки Standard Палитры компонентов предназначен для ввода текстовой строки в поле редактирования непосредственным вводом с клавиатуры или выбором строки в это поле редактирования из раскрывающегося списка. Наиболее характерными свойствами списка ComboBox являются свойства Items, Text, Sorted. Общие и индивидуальные свойства и события компонентов продолжение Наиболее характерным событием для списка ComboBox является событие OnChange, наступающее при любом изменении в поле редактирования списка, включая выбор строки в это поле редактирования из раскрывающегося списка (процедура обработки этого события будет создана, если поместить указатель "мыши" в область списка или на его значок в окне Object TreeView и затем выполнить двойной щелчок левой кнопкой "мыши"). В процедуре обработки этого события можно, например, выполнять операторы программы, связанные с использованием значения, выбранного из раскрывающегося списка (значения свойства Text этого списка). Общие и индивидуальные свойства и события компонентов продолжение Меню MainMenu с вкладки Standard Палитры компонентов используется для создания в окне приложения главного меню (или просто меню) этого приложения, а также раскрывающихся меню и подменю, соответствующих командам главного меню. Наиболее характерное свойство меню MainMenu – Items. При выборе этого свойства на экране появляется окно конструктора меню. Это окно также появляется, если поместить указатель "мыши" в область компонента MainMenu в окне формы или на его значок в окне Object TreeView и затем выполнить двойной щелчок левой кнопкой "мыши". Общие и индивидуальные свойства и события компонентов продолжение Для тех команд меню и подменю, при выборе которых должны происходить какие-либо действия, наиболее характерным событием является событие OnClick. В операторах программы для доступа к свойствам и методам команд меню используются имена команд, задаваемые свойством Name (для команды меню значение этого свойства обычно состоит из буквы N и порядкового номера команды). Из других свойств команд меню следует отметить свойство Enabled (если значение свойства равно True, то команда и ее подменю доступны для выполнения, если False – то недоступны) и свойство Visible (если значение свойства равно True, то команда и ее подменю являются видимыми, если False – невидимыми). Эти свойства могут использоваться в тех случаях, когда команды меню временно не должны быть доступны для выполнения или не должны присутствовать в меню. Общие и индивидуальные свойства и события компонентов продолжение Контекстное меню PopupMenu с вкладки Standard Палитры компонентов используется для создания в окне приложения контекстных меню, появляющихся на экране при щелчке правой кнопкой "мыши", когда указатель "мыши" указывает на компонент (или окно формы). Наиболее характерное свойство меню PopupMenu – Items. При выборе этого свойства на экране появляется окно конструктора меню. Это окно также появляется, если поместить указатель "мыши" в область компонента PopupMenu в окне формы или на его значок в окне Object TreeView и затем выполнить двойной щелчок левой кнопкой "мыши". Общие и индивидуальные свойства и события компонентов продолжение Доступ к свойствам и методам для контекстного меню и использование событий PopupMenu осуществляется аналогично главному меню MainMenu. Для того, чтобы контекстное меню для компонента (или формы) действовало при выполнении приложения, необходимо для свойства PopupMenu или события PopupMenu этого компонента (или формы) выбрать значение, совпадающее с именем сформированного контекстного меню. Общие и индивидуальные свойства и события компонентов продолжение Таймер Timer с вкладки System Палитры компонентов позволяет задавать при выполнении приложения интервалы времени, по истечении которых могут происходить какие-либо действия (например, связанные с изменением свойств компонентов, в том числе изменение вида, положения, размеров компонентов с течением времени). Характерными свойствами таймера являются Interval и Enabled . Единственным событием для таймера является событие OnTimer, которое периодически наступает с интервалом времени в миллисекундах, равным значению свойства Interval , только если значение свойства Enabled равно True и при этом значение свойства Interval больше нуля. При другом значении хотя бы одного из этих свойств событие таймера не наступает. Общие и индивидуальные свойства и события компонентов окончание Процедура обработки того или иного события, связанного с компонентом может быть использована и для таких же событий, связанных с другими компонентами. Для использования ранее созданной процедуры обработки события, связанного с тем или иным компонентом, в окне Object Inspector следует для этого компонента выбрать имя этой процедуры в списке процедур, которые могут быть использованы для обработки заданного события. Приемы программирования обработки событий Приемы программирования обработки событий сводятся к созданию соответствующих процедур обработки этих событий или использованию уже созданных процедур. В указанных процедурах могут быть изменены значения свойств как компонентов, связанных с обрабатываемыми событиями, так других компонентов, с этими событиями непосредственно не связанных.