Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Панели общего назначения — компоненты Panel, GroupBox, Bevel, Splitter



Рис. 1 Пример панелей общего назначения

Компонент StatusBar

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

Разместите на форме.

Для добавления панели на этапе разработки программы выберите меню AddItem в контекстном меню панели состояния в окне Object TreeView:

Для добавленной панели можно потом настраивать ее немногочисленные свойства в окне Object Inspector (например, такие, как текст (Text) или выравнивание (Alignment)).

Задание 1

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

void__fastcall TForm1:: Button1Click(TObject *Sender){ // Добавляем панель StatusBar1-> Panels-> Add(); // Подсчитываем число панелей int count = StatusBar1-> Panels-> Count; // Изменяем текст у последней панели StatusBar1-> Panels-> Items[count - 1]-> Text = " Panel " + IntToStr(count - 1); }

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

void__fastcall TForm1:: Button1Click(TObject *Sender){ StatusBar1-> SimpleText = " Some Text";

Задание 2

В приложение из лабораторной работы №12 добавим на форму компонент StatusBar.

Компонент StatusBar можно поделить на любое количество отдельных мини-статусных окон (Ins), для этого нужно два раза щелкнуть по нему на форме приложения (Form1), после чего появится окно, представленное на рис2.

Рис. 2 Окно, появляющееся при двойном щелчке по омпоненту StatusBar

В этом окне, единственная доступная иконка с надписью — Add new Ins, предназначенная для деления компонента StatusBar. Нажав на данную иконку несколько раз видно, что появляются строки в последовательном порядке 0 — TStatusPanel и так далее (см. рис. 3).

Рис. 3 Деление компонента StatusBar

А на форме (Frorm1), область компонента StatusBar, поделена теперь на пять частей, размеры которых можно изменять с помощью окна Инспектора объектов (Object Inspector), где в дальнейшем изменяются свойства всех компонентов добавляемых в приложение.

1. Чтобы увеличить размер первой части компонента StatusBar -> TStatusPanel [0], нужно выбрать сначала его с помощью мышки: в окне Инспектора объектов (Object Inspector), вкладке Properties, появятся все свойства для первой части StatusBar1 -> Paneles[0].

Напротив надписи Width, вместо стандартного значения 50, вводим любое число, например — 150, нажимаем на клавиатуре Enter. При этом на форме приложения (Form1) будет видно, что первая часть StatusBar1 -> Paneles[0] увеличилась.

2. Аналогичным образом, настраиваем все остальные части компонента StatusBar1 -> Paneles[1] и так далее. После чего рекомендуется выполнить перекомпоновку программы, для этого нужно нажать на инструментальной панели на кнопку «Run (F9)», с изображением зеленого треугольника. Если ошибок нет, то запустится наше разрабатываемое приложение.

3. В свойствах формы Form1 -> Caption введем Video.

Получится такой вид формы, представленный на рис. 4.

Рис. 4 Измененный вид формы

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

void __fastcall TForm1:: SpeedButton2Click(TObject *Sender)

{

if(Form1-> SpeedButton4-> Down==true)

Form1-> SpeedButton4-> Down=false;

if(Form1-> SpeedButton5-> Down==true)

Form1-> SpeedButton5-> Down=false;

if(Form1-> SpeedButton1-> Down==true)

Form1-> SpeedButton1-> Down=false;

if(Form1-> SpeedButton3-> Down==true)

Form1-> SpeedButton3-> Down=false;

Label1-> Caption=" Информация";

Form1-> StatusBar1-> Panels-> Items[0]-> Text = " Стоп....";

}

void __fastcall TForm1:: SpeedButton4Click(TObject *Sender)

{

Label1-> Caption=" Информация";

Form1-> StatusBar1-> Panels-> Items[0]-> Text = " Вперед....";

}

void __fastcall TForm1:: SpeedButton5Click(TObject *Sender)

{

Label1-> Caption=" Информация";

Form1-> StatusBar1-> Panels-> Items[0]-> Text = " Назад....";

}

void __fastcall TForm1:: SpeedButton1Click(TObject *Sender)

{

Label1-> Caption=" Информация";

Form1-> StatusBar1-> Panels-> Items[0]-> Text = " Влево....";

}

void __fastcall TForm1:: SpeedButton3Click(TObject *Sender)

{

Label1-> Caption=" Информация";

Form1-> StatusBar1-> Panels-> Items[0]-> Text = " Вправо....";

}

 

Компонент PageControl

Многостраничные панели позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания.
Компонент PageControl находится на Палитре Компонентов на странице Win32 .

Для создания новой страницы используется команда New Pageвсплывающего меню, которое появляется по щелчку правой кнопки мыши на компоненте PageControl, перенесенного на форму.

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

Значение Описание
Name Имя, по которому можно ссылаться на страницу.
Caption Надпись, которая появляется на ярлычке закладки.
Pagelndex Определяет номер (индекс) данной страницы в компоненте PageControl. Первая страница имеет индекс 0. При удалении или переме-щении страниц значения PageIndex автома-тически изменяются, образуя непрерывную последовательность номеров.
Imagelndex Индекс изображения, которое может появляться на ярлычке закладки.
Style Определяет стиль отображения компонента: tsTabs - закладки, tsButtons - кнопки, tsFlatButtons - плоские кнопки.
HotTrack Если свойство принимает значение True, названия страниц выделяются другим цветом при перемещении над ним указателя мыши.
MultiLine Определяет, будут ли закладки размещаться в несколько рядов, если все они не помещаются в один ряд.
TabPosition Определяет место расположения ярлычков закладок: tpBottom - внизу, tpLeft - слева, tpRight - справа и tpTop - вверху компонента (это значение по умолчанию).
TabHeight, TabWidth Высота и ширина ярлычков закладок в пикселах. Если значения этих параметров заданы равными 0, то размеры ярлычков опеделяются автоматически по размерам надписей на них.
RaggedRight Изменяет ширину закладок таким образом, чтобы они занимали всю сторо-ну блокнота.
Images Ссылка на компонент ImageList, который содержит список изображений на ярлычках. Свойства Imagelndex страниц содержат индексы, соответствующие именно этому списку.
ScrollOpposite Определят способ перемещения закладок при размещении их в несколько рядов.
ActivePage Имя активной страницы.
Pages [int Index] Доступ к странице по индексу (первая страница имеет индекс 0). Свойство только для чтения.
PageCount Количество страниц. Свойство только для чтения.
TabVisible При значении равном False данная страница в блокноте становится невидимой.

В компоненте имеется ряд методов, позволяющих оперировать страницами, создавать их, уничтожать, переключать. Основные события компонента OnChanging и OnChange. Первое из них происходит непосредственно перед переключением на другую страницу после щелчка пользователя на новой закладке. При этом в обработчике события передается по ссылке параметр AllowChange - разрешение переключения. Если в обработчике задать AllowChange = false, то переключение не произойдет. Событие OnChange присходит сразу после переключения.

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

PageControl1-> Pages[1]-> TabVisible = false;

где PageControl1 - ваш компонент TPageControl, расположенный на форме. Данный код скрывает закладку с индексом 1. Для сокрытия другой закладки вместо единицы должен стоять соответствующий индекс.

Код для проверки номера активной вкладки.

void __fastcall TForm1:: PageControl1Change(TObject *Sender)

{

switch (PageControl1-> ActivePageIndex) {

case 0:

ShowMessage(" It's the first page." );

break;

case 1: …

 

Количество вкладок:

PageControl1-> PageCount

Перебрать все вкладки:

for (int i = 0; i < PageControl1-> PageCount; i++) {

PageControl1-> Pages[i]-> // действия, которые нужны вам...

}

 

Задание 3

Разработаем программу для тестирования знаний.

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

Результаты теста с выставлением оценки выводятся щелчком по кнопке «Результаты опроса». Внешний вид окна приложения приведен на рис. 2.

 

Рис. 2. Окно разрабатываемого приложения «Тест»

1. Установите на форму компонент PageControl со страницы Win32 и задайте ему необходимые размеры.

2. Щелкнув в поле компонента PageControl правой клавишей мыши, откройте всплывающее меню, в котором выберете пункт New Page. Появится первая закладка блокнота, озаглавленная TabSheet1.

3. внимательно изучите свойства компонента TabSheet, доступные в Инспекторе Объектов, согласно таблице 2.

4. Измените название закладки на «1 вопрос» (свойство Caption компонента TabSheet1).

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

6. Установите еще 3-5 закладок, проделав аналогичные операции;

7. Установите два компонента Button, согласно рис. 5.2, дав им названия «Результаты опроса» и «Выход»;

8. Сохраните приложение в отдельной папке командой File/Save All;

9. Запустите проект и убедитесь, что закладки уже работают. Закройте проект.

10. Поместите на первую закладку компонент RadioGroup со страницы Additional.

11. Установите заголовку группы (свойство Caption для компонента RadiоGroup) значение “Автор произведения “Война и мир”: ”.

12. Дважды щелкнув мышью в поле свойства Items для компонента RadioGroup, раскройте диалоговое окно специального редактора строк StringListEditor для ввода вариантов ответа. Число введенных строк будет соответствовать числу компонентов RadioButton в группе. Введите в столбик следующие значения: Пушкин А. С., Лермонтов М. Ю., Гоголь Н. В., Толстой Л. Н., Достоевский Ф. М.

13. Свойству Tag для компонента RadioGroup в Инспекторе Объектов задайте значение 3. Это номер правильного ответа, считая с нуля.

14. Самостоятельно напишите код обработчика для кнопки «Выход»;

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

16. PageControl1.ActivePage: =TabSheet1;

17. Для кнопки «Результаты опроса» код обработчика Button1Click приведен ниже.

int Z=5; // Количество вопросов в варианте (число закладок)

int Verno, Neverno, Bal;

Verno: =0; // Счетчик верных ответов

Neverno: =0; // Счетчик неверных ответов

// Обработка 1 вопроса

if (RadioGroup1− > ItemIndex==RadioGroup1− > Tag)

Verno++;

Else

Neverno++;

// Обработка 2 вопроса

if (RadioGroup2− > ItemIndex==RadioGroup2− > Tag)

Verno++;

Else

Neverno++;

//И так далее

// Обработка результата теста

Bal=Verno/Z;

if (Bal< 2)

Bal=2;

// Вывод результата

MessageDlg(" Верных ответов: " +IntToStr(Verno) +#13+

" Неверных ответов: " +IntToStr(Neverno)+#13+

" ОЦЕНКА: " +IntToStr(Bal), mtInformation, [mbOk], 0);

 

Задание 4

1. Поместите на форму (лабораторной работе №10) компонент Statusbar. Откройте редактор компонента и добавьте четыре панели. Для нулевой и второй панелей задайте в инспекторе объекта свойство Text «Ширина формы» и «Высота формы» соответственно. Для отображения текста установите ширину панели 100 (свойство Width). Добавьте для формы обработчики создания формы OnCreate и изменения размеров формы OnResize, в которых должны выводится в строку состояния StatusBar1 размеры формы двумя операторами:

Form1− > StatusBar1− > Panels− > Items[1]− > Text= IntToStr(Form1− > With);

Form1− > StatusBar1− > Panels− > Items[3] − > Text= IntToStr(Form1− > Heigh);

где: Items[1] и Items[3] – ссылки на первую и третью панели соответственно.

Form1-> Width – ширина формы;

Form1-> Height – высота формы.

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

2. Доработайте приложение-тест самостоятельно, используя не менее 10 закладок. Тему для тестирования возьмите по своему усмотрению.

3. Каждая вкладка должна иметь другой вид. Например, на первой вкладке установите CheckBox-ы, на второй – ComboBox и ListBox для выбора правильных ответов из выпадающего списка и перенос их в другой список, на третьей – несколько компонентов Edit для ввода правильного ответа и т.д. Кроме того все компоненты должны размещаться на панели.

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

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

6. В правом углу формы установите часы, показывающие текущее время.

7. Отражайте результаты ответов в строке состояния: количество правильных и неправильных ответов. После окончания тестирования укажите в статусной строке оценку за тест, а также время выполнения теста.

8. Проведите отладку и тестирование приложения.

9. Результаты работы продемонстрируйте преподавателю.

 

Контрольные вопросы

Перечислите панели общего назначения.

В какой сачти экрана располагается компонент StatusBar?

Что означает оператор StatusBar1-> Panels-> Add();?

Что будет выполнено в результате работы оператора StatusBar1-> SimpleText = " Some Text";?

Как настраиваются панели компонента StatusBar1 в Инспесторе объектов?

Что требуется сделать для создания новой страницы компонента PageControl?

Какие свойства имеет каждая страница компонента PageControl?

Основные события компонента PageControl?

Как скрыть закладку в компоненте PageControl?

 

 


Практическая работа №17

Тема: «Использование инструментальных и перестраиваемых панелей при создании кнопочного меню».

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

Форма и условия аттестации: после изучения Тема 4.10. Панели и компоненты внешнего оформления.

Время выполнения: подготовка – 5 мин; выполнение – 80 мин.; проверка – 5 мин; всего – 90 мин.

Теоретические сведения

Компонент ToolBar

Занесение компонентов на панель ToolBar можно, в принципе, осуществлять обычным способом - переносом их из палитры компонентов. Но для занесения кнопок имеется и более простой вариант. Щелкните на ToolBar правой кнопкой мыши и выберите из всплывшего меню команду New Button. На форме появится очередная кнопка объект типа TToolButton.


Поделиться:



Популярное:

  1. B передачи выходного вала компоненты
  2. XVIII. НЕВЕРБАЛЬНЫЕ СРЕДСТВА И КОМПОНЕНТЫ КОММУНИКАЦИИ
  3. В органе внутренних дел формируются дела общего и специального производства.
  4. Вероятные следствия действия естественного отбора путем дивергенции признака и вымирания потомков одного общего предка.
  5. ВЗАИМОСВЯЗЬ ЕДИНИЧНОГО И ОБЩЕГО
  6. Взаимосвязь составляющих всеобщего менеджмента качества (TQM).
  7. Выбор источника света для системы общего равномерного освещения цеха и вспомогательных помещений.
  8. Вычисление нагрузок на полку панели перекрытия.
  9. Глава 1. Понятие страхового, общего и специального трудового стажа и его юридическое значение
  10. Глава 7. Юридическая концепция общего блага 1. Общее благо как категория права
  11. Двигатели общего назначения: типы, устройство, принцип действия
  12. Дополнительные работы по ТО основных пожарных автомобилей общего применения


Последнее изменение этой страницы: 2017-03-08; Просмотров: 689; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.071 с.)
Главная | Случайная страница | Обратная связь