КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Компоненты библиотеки VCL
2.1. Стандартные компоненты Компоненты вкладки Standard Палитры компонентов осуществляют включение в программу стандартных управляющих элементов Windows. Компонент TLabel отображает статический текст, являющийся значением свойства Caption. Например: Label1->Caption="Это Метка"; Компонент TEdit отображает область редактируемого ввода строки. Содержимое области редактирования определяется значением свойства Text. Например:
double r1=Form1->Edit1->Text.ToDouble(), y=0, r2=Form1->Edit2->Text.ToDouble(); y=r1+r2; ShowMessage(FloatToStr(y));
Компонент TButton создает кнопку с надписью. Нажатие на кнопку инициирует некоторое событие. Кнопка, выбранная со значением true свойства Default, запускает обработчик события OnClick для кнопки всякий раз, когда нажимается клавиша Enter в окне диалога. Кнопка прерывания, выбранная со значением true свойства Cancel, запускает обработчик события OnClick для кнопки всякий раз, когда нажимается клавиша Escape. Ниже приводится пример использования рассматриваемых компонентов Label1-Label4, Edit1-Edit6 и Button1 при решении квадратного уравнения. //Uni1.cpp #include <vcl.h> #pragma hdrstop #include <math.h> #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {} void __fastcall TForm1::Button1Click(TObject *Sender) { try{ double a=StrToFloat(Edit1->Text); double b=StrToFloat(Edit2->Text); double c=StrToFloat(Edit3->Text); if(a==0){ShowMessage("Уравнение не квадратное");return;} double d = b * b - 4 * a * c; String str=""; if(d < 0) { str += (- b) / (2 * a); str += " + i * "; str += sqrt(- d) / (2 * a); Edit4->Text = str; str = ""; str += (- b) / (2 * a); str += " - i * "; str += sqrt(- d) / (2 * a); Edit5->Text = str; } else { Edit4->Text = (- b + sqrt(d)) / (2 * a); Edit5->Text = (- b - sqrt(d)) / (2 * a); } Edit6->Text=d; } catch(...) {ShowMessage("Input Error");} }
На рис. 10 показана форма приложения в процессе выполнения.
Рис. 10. Форма в процессе выполнения
Можно использовать кнопку с картинкой вместо кнопки типа TButton. Для этого можно применить компонент TBitBtn со вкладки Additional Палитры компонентов. Компонент ТMеmо отображает прямоугольную область ввода множества строк. Содержимое области редактирования определяет массив строк, являющийся значением свойства Lines. Например:
void __fastcall TForm1::Edit1Change(TObject *Sender) { Memo1->Lines->Add(Edit1->Text); }
Компонент TСheckBox создает квадратный флажок с двумя состояниями. Состояние check флажка соответствует выбору некоторого варианта (отмечается перечеркиванием квадрата), а состояние uncheck соответствует снятию выбора. При этом свойство компонента Checked меняется с true на false и возникает событие OnClick. Описательный текст флажка хранится в свойстве Caption. Компонент TRadioButton cоздает круглую кнопку (радиокнопку) с двумя состояниями и описательным текстом. Радиокнопки представляют набор взаимоисключающих вариантов выбора: только одна кнопка может быть выбрана в данный момент времени (отмечается внутренним черным кружком), а с ранее выбранной кнопки выбор автоматически снимается. При нажатии радиокнопки свойство компонента Checked меняется и возникает событие OnClick. Обычно радиокнопки размещаются внутри предварительно установленного на форме группового контейнера. Если выбрана одна кнопка, выбор всех прочих кнопок в той же группе автоматически снимается. Например, две радиокнопки на форме могут быть выбраны одновременно только в том случае, когда они размещены в разных контейнерах. Если группировка радиокнопок явно не задана, то по умолчанию все они группируются в одном из оконных контейнеров (TForm, TGroupBox или TPanel). Компонент TListBox отображает прямоугольную область списка текстовых вариантов для выбора, добавления или вычеркивания. Если все элементы списка не умещаются в отведенную область, то список можно просматривать с помощью линейки прокрутки. Элементы списка содержатся в свойстве Items, а номер элемента, который будет выбран во время выполнения программы, – в свойстве ItemIndex. Окно текстового редактора элементов списка открывается кнопкой в графе значений свойства Items. Можно динамически добавлять, вычеркивать, вставлять и перемещать элементы списка с помощью методов Add, Append, Delete и Insert объекта Items. Например: ListBoxl->Items->Add("Последний элемент списка"); Значение true свойства Sorted устанавливает сортировку элементов списка по алфавиту. Рассмотрим пример приложения, позволяющего вводить текст в редактируемое поле и добавлять этот текст к списку при нажатии на кнопку. Выберем пункт меню File|New Application для создания проекта и сохраним его главную форму под именем samp1.cpp, а сам проект под именем samp.bpr. Поместим на форму компоненты TButton, TEdit, TRadioButton и TListBox со страницы Standard Палитры компонентов. После этого выберем на форме компонент Edit1 и удалим текущее значение свойства Text. Затем установим свойство Caption для RadioButton1 равным "Добавить", для RadioButton2 – "Удалить", для кнопки Button1 – "Выполнить", а для кнопки Button2 – "Выход". Чтобы добавить обработчик события OnClick для кнопки «Выполнить», нужно выбрать эту кнопку на форме, открыть страницу событий в Инспекторе объектов и дважды щелкнуть мышью на колонке справа от события OnClick. В соответствующей строке ввода появится имя функции. C++ Builder сгенерирует прототип обработчика события и покажет его в редакторе кода. После этого следует ввести следующий код в тело функции:
void __fastcall TForm1::Button1Click(TObject *Sender) if(RadioButton1->Checked) { if (!(Edit1->Text == "")) ListBox1->Items->Add(Edit1->Text); } } else { if(RadioButton2->Checked){ if (!(ListBox1->ItemIndex == -1)) } }
В обработчик события OnClick для кнопки "Выход" добавим вызов функции Close(). Для компиляции приложения в меню Run выберем пункт Run. На рис. 11 показано окно приложения в процессе выполнения.
Рис. 11. Окно приложения в процессе выполнения Компонент TСomboBox создает комбинацию области редактирования и выпадающего списка текстовых вариантов для выбора. Значение свойства Text заносится непосредственно в область редактирования. Элементы списка, которые может выбирать пользователь, содержатся в свойстве Items, номер элемента, который будет выбран во время выполнения программы, – в свойстве ItemIndex, а сам выбранный текст – в свойстве SelText. Свойства SelStart и SelLength позволяют установить выборку части текста или обнаружить, какая часть текста выбрана. Можно динамически добавлять, вычеркивать, вставлять и перемещать элементы списка с помощью методов Add, Append, Delete и Insert объекта Items. Например: ComboBoxl->Items->Insert(0, "Первый элемент списка"); Компонент TScrollBar создает линейку прокрутки с бегунком для просмотра содержимого окна. Поведение прокручиваемого объекта определяется обработчиком события OnScroll. Значение свойства LargeChange определяет насколько должен продвинуться бегунок, когда пользователь щелкает мышью на самой линейке (по обеим сторонам от бегунка). Значение свойства SmallChange определяет насколько должен продвинуться бегунок, когда пользователь щелкает мышью по кнопкам со стрелками (на концах линейки) или нажимает клавиши позиционирования. Рассмотрим пример взаимодействия компонентов TScrollBar и TComboBox, которое происходит следующим образом: изменение положения бегунка компонента TScrollBar вызывает изменение соответствующего ему элемента списка компонента TComboBox и наоборот. Ниже приводится листинг программы, содержащий обработчики событий компонентов:
//Unit1.cpp #include <vcl.h> #pragma hdrstop #include "desyat.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ComboBox1Change(TObject *Sender) { ScrollBar1->Position=ComboBox1->ItemIndex+1; } //--------------------------------------------------------------------------- void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { ComboBox1->ItemIndex=ScrollBar1->Position-1; ComboBox1->Items->Add(ScrollBar1->Position-1); } //---------------------------------------------------------------------------
На рис. 12 показано окно программы в процессе выполнения. Компонент TGroupВох создает контейнер в виде прямоугольной рамки, визуально объединяющий на форме логически связанную группу некоторых интерфейсных элементов. Этот компонент представляет собой инкапсуляцию одноименного объекта Windows. Компонент TRadioGroup создает контейнер в виде прямоугольной рамки, визуально объединяющий на форме группу логически взаимоисключающих радиокнопок.
Рис. 12. Окно программы
Радиокнопки образуют группу при помещении их в один и тот же контейнер. Только одна кнопка из данной группы может быть выбрана. Добавление кнопок к компоненту TRadioGroup выполняется редактированием свойства Items. Присвоение названия радиокнопки очередной строке свойства Items приводит к появлению этой кнопки в группирующей рамке. Значение свойства ItemIndex определяет, какая радиокнопка выбрана в настоящий момент. Можно группировать радиокнопки в несколько столбцов, устанавливая соответствующее значение свойства Columns. Компонент TPanel создает пустую панель (контейнер), которая может содержать другие компоненты. Можно использовать компонент TPanel для создания на форме панелей инструментов или строк состояния (однако для этого лучше использовать специальные компоненты TToolBar, TPageScroller, TStatusBar). Компонент TMainMenu создает панель команд главного меню и соответствующие им выпадающие меню для формы. В качестве примера приведем создание простейшего текстового редактора с возможностью открытия и сохранения текстовых файлов. Будем использовать компоненты TMainMenu, TOpenDialog, TSaveDialog, TMemo. На рис. 13 показан процесс проектирования меню с помощью редактора меню. Рис. 13. Редактирование меню Далее приводятся обработчики событий для соответствующих пунктов меню:
void __fastcall TForm1::Open1Click(TObject *Sender) { // Программная установка свойств компонента OpenDialog1 OpenDialog1->Options.Clear(); OpenDialog1->Options << ofFileMustExist; OpenDialog1->Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; OpenDialog1->FilterIndex = 2; if (OpenDialog1->Execute()) Memo1->Lines-> LoadFromFile (OpenDialog1->FileName); } //---------------------------------------------------------------------------
void __fastcall TForm1::Save1Click(TObject *Sender) { // Программная установка свойств компонента SaveDialog1
SaveDialog1->Options.Clear(); SaveDialog1->Options << ofFileMustExist; SaveDialog1->Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; SaveDialog1->FilterIndex = 2; if (SaveDialog1->Execute()) Memo1-> Lines->SaveToFile(SaveDialog1->FileName); } void __fastcall TForm1::Exit1Click(TObject *Sender) { exit(0); }
На рис. 14 показано окно приложения после запуска приложения и открытия в полученном текстовом редакторе файла модуля формы. Компонент TPopupMenu создает всплывающее меню для формы или для другого компонента. Если необходимо, чтобы специальное меню появлялось при нажатии правой кнопки мыши на элемент, которому приписан данный компонент (свойство PopupMenu содержит имя компонента всплывающего меню), установите значение true свойства AutoPopup. Если всплывающее меню относится к форме, то свойство формы PopupMenu следует установить в имя всплывающего меню, например, PopupMenu1.
Рис. 14. Окно текстового редактора 2.2. Компоненты Win32 Компоненты вкладки Win32 Палитры компонентов осуществляют включение в программу следующих интерфейсных элементов. Компонент TTabControl отображает набор частично перекрывающих друг друга картотечных вкладок. Названия вкладок вводятся в список свойства Tabs кнопкой в графе значений этого свойства. Если все поля не умещаются на форме в один ряд, то можно установить значение true свойства MultiLine или прокручивать вкладки с помощью кнопок со стрелками. Принципиальное отличие данного компонента от похожего компонента TPageControl состоит в том, что он не имеет множества страниц (панелей). Компонент представляет собой одну страницу с управляющим элементом типа кнопки со многими положениями. Необходимо написать соответствующие обработчики событий OnChanging и OnChange, чтобы определить, что именно должно происходить на панели при переключениях закладок пользователем. Компонент TPageControl отображает набор полей, имеющих вид частично перекрывающих друг друга картотечных вкладок (страниц), для организации многостраничного диалога. Многостраничные панели позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания. Таким образом, компонент TPageControl является контейнером для размещения нескольких страниц, которые можно открывать в процессе работы приложения спомощью щелчка на соответствующей вкладке. Чтобы создать новую страницу диалога с соответствующей вкладкой, выберите опцию New Page из контекстного меню данного компонента. Можно активизировать конкретную страницу одним из следующих способов: с помощью мыши, выбрав ее из выпадающего списка свойства ActivePage, а также перелистывая вкладки с помощью опций Next Page и Previous Page контекстного меню. Свойство PageIndex содержит номер активной страницы. Работу с вкладками реализует встроенный компонент управления TTabSheet. Компонент TListView отображает поле с иерархическим (древовидным) списком элементов в различных видах. Свойство ViewStyle определяет вид отображения элементов списка: по столбцам с заголовками, вертикально, горизонтально, с малыми или с большими пиктограммами. Свойство Items позволяет добавлять, вычеркивать и модифицировать подписи, а также подбирать пиктограммы для элементов списка. Редактор списка вызывается кнопкой в графе значений этого свойства. Для выбора источника пиктограмм из выпадающего списка свойства LargeImages (SmallImages) задайте значения vsIcon (vsSmallIcon) для свойства ViewStyle. В режиме AutoArrange свойства IconOptions пиктограммы выравниваются в соответствии с выбранным значением свойства Arrangement, а свойство WrapText указывает необходимость переноса текста подписи, когда она не умещается на пиктограмме по ширине. Компонент TImageList создает контейнер для коллекции из графических изображений одинакового размера K*k, каждое из которых можно выбирать по его индексу в интервале значении от 0 до n-1. Графические коллекции используются для эффективного обслуживания больших наборов битовых образов или пиктограмм, которые хранятся как единый битовый образ шириной k*n. Окно редактора коллекции изображений открывается двойным щелчком мышью по компоненту или опцией ImageList Editor из его контекстного меню. Компонент THeaderControl создает контейнер для набора заголовков столбцов, ширину которых можно менять в процессе выполнения программы. Заголовки, перечисленные в свойстве Sections, можно размещать над информационными полями, например, над списками компонентов TListBox. Окно редактора заголовочных секций открывается кнопкой в графе значений этого свойства. Компонент TRichEdit отображает область редактируемого ввода множества строк информации в формате RTF, который включает различные вариации атрибутов шрифта и форматирования абзацев. Данный формат принимают многие профессиональные текстовые процессоры, например, Microsoft Word. Компонент TRichEdit является прямым производным классом от класса TCustomRichEdit, полностью наследуя его свойства, методы и события. Компонент TStatusBar создает строку панели состояния (обычно выравниваемую по нижней границе формы) для отображения статусной информации, выдаваемой при работе программы. Каждая панель представлена в списке свойства Panels. Панели нумеруются слева направо, начиная с индекса 0. Окно редактора панелей открывается кнопкой в графе значений этого свойства. Свойство SimplePanel используется для переключения вида отображения строки состояния (одно- или многопанельная строка состояния). Компонент TTrackBar создает шкалу с метками и регулятором текущего положения (вариант линейки прокрутки). Компонент TProgressBar создает индикатор, который отслеживает процесс выполнения некоторой процедуры в программе. По мере выполнения процедуры, прямоугольный индикатор, например, постепенно окрашивается слева направо заданным цветом. Компонент TUpDown создает спаренные кнопки со стрелками вверх и вниз. Нажатие этих кнопок вызывает, соответственно, увеличение или уменьшение численного значения свойства Position. Данный компонент обычно используется совместно с компонентом TEdit для ввода целых чисел. Компонент THotKey используется для установки клавиш быстрого вызова (shortcut) во время выполнения программы. Пользователь может ввести комбинацию "горячих" клавиш, обычно состоящую из модификатора (Ctrl, Alt или Shift) и любого символа, включая функциональные клавиши F1,…,F12. Введенную комбинацию, записанную в свойстве HotKey, можно присвоить свойству Shortcut другого компонента. Чтобы выбрать горячие клавиши на стадии проектирования, используйте свойства HotKey и Modifiers, а чтобы отменить их – свойство InvalidKeys. Чтобы изменить комбинацию во время выполнения программы, удерживайте нажатой клавишу модификатора и одновременно введите новый символ. 2.3. Дополнительные компоненты Компоненты вкладки Additional Палитры компонентов осуществляют включение в программу следующих элементов управления. Компонент TBitBtn создает кнопку с изображением битового образа. КомпонентTSpeedButton создает графическую кнопку, обычно располагаемую на панели (TPanel), для быстрого вызова определенных команд меню или установки режимов. Различным состояниям быстрой кнопки (например, "нажата", "отпущена", "запрещена") могут соответствовать разные графические образы. Окно редактора файлов изображений открывается кнопкой в графе значений свойства Glyph. Компонент TStringGrid создает регулярную сетку для отображения символьных последовательностей по строкам и столбцам. Во время выполнения программы символьные последовательности и связанные с ними объекты некоторого столбца сетки адресуются свойством Cols. Свойство Rows позволяет подобным образом оперировать со строками сетки. Все символьные последовательности сетки содержатся в свойстве Cells, которое адресует нужную ячейку сетки. Компонент TDrawGrid создает регулярную сетку для отображения структурированных графических данных по строкам и столбцам. Свойства RowCount и ColCount задают число ячеек сетки по вертикали и по горизонтали. Значение свойства Options позволяет изменить вид сетки (например, с разделительными линиями между столбцами) и ее поведение (например, с переходом от столбца к столбцу по клавише Tab). Ширина разделительных линий сетки задается свойством GridLineWidth, а линейки прокрутки добавляются свойством ScrollBars. Свойства FixedCols и FixedRows позволяют запретить прокрутку столбцов и строк, а свойство FixedColor присваивает определенный цвет всем столбцам и строкам. Во время работы программы вы можете получить в свое распоряжение область для рисования некоторой ячейки с помощью метода CellRect. Метод MouseToCell возвращает координаты номера столбца и строки ячейки, на которую установлен курсор мыши. Выбранная ячейка сетки становится значением свойства Selection. Компонент TImage создает на форме контейнер графического изображения (битового образа, пиктограммы или метафайла). Окно редактора файлов изображений открывается кнопкой в графе значений свойства Picture. Чтобы контейнер изменил свои размеры так, чтобы вместить изображение целиком, установите значение true свойства AutoSize. Чтобы исходное изображение меньшего размера растянулось на весь контейнер, задайте значение true свойства Stretch. Используйте методы LoadFromFile и SaveToFile объектного свойства Picture для динамической загрузки и сохранения файлов изображений с помощью инструкций типа: Image->Picture->LoadFromFile("<имя файла>"); Image->Picture->SaveToFile("<имя файла>"); Компонент TShape рисует простые геометрические фигуры: окружность и эллипс, квадрат и прямоугольник (можно с закругленными углами). Компонент TВevel cоздает линии, боксы (контейнеры) или рамки, которые выглядят объемными. Рисуемый компонентом объект определяется свойством Shape, а значение свойства Style меняет вид объекта, делая его выпуклым или вдавленным. Чтобы сохранить относительное положение объекта неизменным, установите значение true свойства Align. Компонент TScrollBox создает в окне бокс переменного размера, который автоматически снабжается линейками прокрутки. 2.4. Диалоговые компоненты Компонент TOpenDialog используется для выбора и открытия файлов. Компонент TSaveDialog предназначен для выбора и сохранения файлов. Компонент TOpenPictureDialog используется для выбора и открытия графических файлов. Компонент TFontDialog высвечивает диалоговое окно для выбора шрифтов. Компонент TColorDialog отображает диалоговое окно для выбора цвета. Компоненты становятся активными после вызовы метода Execute(). Например:
if(OpenDialog1->Execute()){ filename = OpenDialog1->FileName; }; Вопросы 1. Назовите разновидности меню и укажите их отличия. 2. Опишите технологию создания главного меню. 3. Как скопировать нужные разделы из главного меню во всплывающее меню? 4. Как создать всплывающее меню и закрепить его за компонентом? 5. Как ограничить типы вводимых символов в текстовые компоненты? 6. Чем отличается обработка событий OnKeyPress и OnKeyDown? 7. Поясните действие следующего фрагмента программы: for (int i=0; i<ListBox1®Items®Count; i++) ListBox1®Items®Strings[i]=”строка№”+IntToStr(i); 8. Что означает следующий код? Button1->OnClick=0; Button1->OnClick=Button2Click; Упражнения 1. Ввести и транспонировать квадратную матрицу. 2. Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. 3. Разработать текстовый редактор. 4. Создать записную книжку.
Дата добавления: 2014-12-27; Просмотров: 893; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |