sga-help.ru

Все вопросы к тесту (html) Технология программирования



Разработка графического интерфейса. Разработка главного и вспомогательного меню (меню в виде строки данных). Теоретическая часть

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

Вначале на форму помещается соответствующий компонент и осуществляется настройка его свойств. На втором этапе осуществляется вызов стандартного для диалогов метода Execute, который создает и показывает на экране диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события. Например, обработчик выбора опции меню «Открыть файл» может вызвать метод execute диалога TOpenDialog, обработчик нажатия инструментальной кнопки «сохранить» может вызвать такой же метод у компонента TSaveDialog и т.д. Только после обращения к Execute на экране появляется соответствующее диалоговое окно. Окно диалога является модальным окном, поэтому сразу после обращения к Execute дальнейшее выполнение программы приостанавливается до тех пор, пока пользователь не закроет окно.

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

TSaveDialog — диалог сохранения файла. Свойство FileName имеет то же самое значение.

TFontDialog — создает и обслуживает стандартное окно выбора шрифта. Результат выбора шрифта содержит свойство Font.

TColorDialog — создает и обслуживает стандартное окно выбора цвета. Свойство Color содержит выбранный цвет.

TOpenPictureDialog — специализированный диалог для открытия графических файлов. Свойство FileName содержит имя файла.

TSavePictureDialog — специализированный диалог для сохранения графических файлов.

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

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

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

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

Состав меню зависит от конкретного приложения, но размещение общедоступных разделов должно быть стандартным. Все пользователи уже привыкли, что меню «Файл» размещается слева в полосе главного меню, раздел справки — справа, пере ним в приложениях MDI размещается меню «Окно» и т.д. Главное меню должно также снабжаться инструментальной панелью, быстрые кнопки которой дублируют наиболее часто используемые команды меню.

По возможности стандартным должно быть и расположение разделов и выпадающих меню.

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

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

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

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

Многим разделам могут быть поставлены в соответствие горячие клавиши, позволяющие обратиться к команде данного раздела, даже не заходя в меню. Комбинации таких горячих клавиш должны быть традиционными. Например, команды вырезания, копирования и вставки фрагментов текста практически всегда имеют горячие клавиши Ctrl-X, Ctrl-C и Ctrl-V соответственно.

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

Не все разделы меню имеют смысл в любой момент работы пользователя с приложением. Например, если в приложении не открыт ни один документ, то бессмысленно выполнять команды редактирования в меню «Правка». Если в тексте документа ничего не изменялось, то бессмысленным является раздел этого меню «Отменить», отменяющий последнюю команду редактирования. Такие меню и отдельные разделы должны делаться временно недоступными или невидимыми.

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

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

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

Основное свойство компонента — Items. Его заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов. При работе в Конструкторе Меню новые разделы можно вводить, помещая курсор в рамку из точек, обозначающую место расположения нового раздела.

В PascalABC у пунктов меню в Инспекторе Объектов нет такого количества свойств и событий, как, например, в Delphi.

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

Свойство Caption обозначает надпись раздела.

Свойство

 
Items
 о
пределяет массив пунктов меню (индексация производится с единицы).

Свойство 
ItemsCount
 о
пределяет количество пунктов меню.

Конструктор 
Create
 с
оздает главное меню и привязывает его к главной форме приложения (т.е. форме, создаваемой первой). Если главная форма не создана, генерируется ошибка.

Коструктор
 Create(owner: Form) — с
оздает главное меню и привязывает его к форме
owner.

Процедура
 
Add
(
caption
: 
string
; 
on
С
lick
: 
procedure
) д
обавляет пункт меню с заголовком
caption
и обработчиком
onСlick
.

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

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

Формирование контекстного всплывающего меню производится с помощью Конструктора Меню, вызываемого двойным щелчком на PopupMenu, точно так же, как и для главного меню.

Меню можно создать динамически в процессе выполнения программы. Для добавления пунктов меню используется метод Add. Пример создания меню:

//Создание меню

uses vcl;

var MainForm:Form;

procedure FClose;

begin

MainForm.Close;

end;

begin

MainForm:=Form.Create(200,200,300,300); // Создание формы

with MainForm do begin

Menu:=MainMenu.Create; // Создание меню

//создаем корневые пункты меню

Menu.Add('Файл'); //1

Menu.Add('Меню1'); //2

Menu.Add('Меню2'); //3

//создаем подменю

Menu[1].Add('Выход',FClose,'exit');

Menu[2].Add('Пункт меню'); // ~ Menu.items[2].add(...)

Menu[2].Add('Подменю');

Menu[2][2].Add('Пункт подменю1'); // ~ Menu.items[2].items[2].add(...)

Menu[2][2].Add('Пункт подменю2');

end;

end.



0641.03.03;ЭПТ2.01;1

План

  • Теоретическая часть
    • Стиль меню
    • Проектирование главного меню окна
    • Стандартные диалоги
  • Пример разработки приложения

Цель занятия: научиться разрабатывать интерфейс на основе меню.

Приобретаемые навыки:

  • практика использования компонентов TMainMenu, TPopupMenu, для разработки графического интерфейса на основе меню;
  • практика использования компонентов для организации стандартных диалогов.

Список рекомендуемой литературы:

  • А.Я Архангельский. Программирование в Delphi 7 — М.: ООО «Бином-Пресс», 2005.
  • С. А. Орлов Технологии разработки программного обеспечения. — СПб.: Питер. 2002.
  • Э.А. Акчурин Человеко-машинное взаимодействие. Учебное пособие. — М.: «СОЛОН-ПРЕСС», 2008.
  • WWW.sunschool.math.rsu.ru

Используемые программы:

1. PascalABC

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

2. Redaktor.pas.

Программа для демонстрации примера разработки.



Вариант

Разработать приложение для Windows.

Условие (лабораторная работа № 9):

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

1. Разработать главное меню для задачи лабораторной работы № 9. В пункте меню «Формат» менять шрифт и цвет компонентов ListBox или ComboBox. Структура меню:

Главное меню:

Город

Формат

Помощь

Выход

Владивосток

Шрифт

О программе

Киев

Цвет

Красноярск

Ярославль

2. Разработать контекстное меню для задачи лабораторной работы № 9.

Контекстное меню:

Шрифт (для метки)

Цвет (для формы)

3. В приложении использовать стандартные диалоги.

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

procedure ___1OnClick;

Var FontDialog1 : FontDialog;

begin

FontDialog1 := FontDialog.___;

If FontDialog1.Execute Then TextLabel1.Font := FontDialog1.Font;

end;

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

Компоненты стандартных диалогов:

1. TOpenDialog

2. TSaveDialog

3. TFontDialog

4. TPictureDialog

5. TColorDialog

Запишите номер неверного утверждения.



Вариант

Разработать приложение для Windows.

Условие (лабораторная работа №9):

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

1. Разработать главное меню для задачи лабораторной работы № 9. В пункте меню «Формат» менять шрифт и цвет компонентов ListBox или ComboBox. Структура меню:

Главное меню:

Ассортимент

Формат

Помощь

Выход

Газета

Шрифт

О программе

Журнал

Цвет

Книгак

2. Разработать контекстное меню для задачи лабораторной работы № 9.

Контекстное меню:

Шрифт (для редактора)

Цвет (для метки)

3. В приложении использовать стандартные диалоги.

Допишите пропущенную часть оператора в обработчике пункта меню «Шрифт».

procedure MainMenu1___2___1OnClick;

Var FontDialog1 : FontDialog;

begin

FontDialog1 :=___.Create;

If FontDialog1.Execute Then ListBox1.Font := FontDialog1.Font;

ListBox1.Clear;

ListBox1.Items.Add('Газета');

ListBox1.Items.Add('Журнал');

ListBox1.Items.Add('Книга');

end;

Запишите название пропущенного метода.

procedure PopupMenu1___2OnClick;

begin

If ColorDialog1.___ Then TextLabel3.Color := ColorDialog1.Color;

end;

Запишите название свойства, которое пропущено в этом операторе.

TextBox1.___ := FontDialog1.___;



Вариант

Разработать приложение для Windows.

Условие (лабораторная работа №9):

Дан радиус R. Осуществить расчет по выбору: диаметра, длины окружности, площади круга, объема шара.

1. Разработать главное меню для задачи лабораторной работы № 9. В пункте меню «Формат» менять шрифт и цвет компонентов ListBox или ComboBox. Структура меню:

Главное меню:

Вид расчета

Формат

Помощь

Выход

Диаметр

Шрифт

О программе

Длина окружности

Цвет

Площадь круга

Объем шара

2. Разработать контекстное меню для задачи лабораторной работы №9.

Контекстное меню:

Шрифт (для метки)

Цвет (для формы)

3. В приложении использовать стандартные диалоги.

Запишите свойство, которое пропущено в этом операторе..

If FontDialog1.Execute Then TextLabel1.___ := FontDialog1.___;

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

procedure MainMenu1___1___3OnClick;

begin

ListBox1.___ := 2;

ListBox1OnClick;

end;

Допишите пропущенное свойство.

Стиль формы определяется свойством —



Вариант

Разработать приложение для Windows.

Условие (лабораторная работа №9):

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

1$ = 34 руб.

1€ = 44 руб.

USD/CHF = 1,16 (доллар к Швейцарскому франку);

USD/YEN = 100 (доллар к Японскому Йену).

1. Разработать главное меню для задачи лабораторной работы № 9. В пункте меню «Формат» менять шрифт и цвет компонентов ListBox или ComboBox. Структура меню:

Главное меню:

Валюта

Формат

Помощь

Выход

Доллар

Шрифт

О программе

Евро

Цвет

Франк

Йень

2. Разработать контекстное меню для задачи лабораторной работы №9.

Контекстное меню:

Шрифт (для метки)

Цвет (для формы)

3. В разработке использовать стандартные диалоги.

В этом пункте меню осуществляется пересчет рублей в Йены.

procedure MainMenu1___1___4OnClick;

begin

ListBox1.ItemIndex := 3;

___;

end;

Допишите оператор.

Запишите латинскими буквами свойство

, которое о
пределяет массив пунктов меню.

Свойство, 
о
пределяющее динамический массив строк текстового редактора —



Вариант

Разработать приложение для Windows.

Условие (лабораторная работа №9):

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

1 дюйм = 2.54 см

1 ярд = 0.9144 м

1 верста = 500 сажень

1 косая сажень = 1.76 м

1. Разработать главное меню для задачи лабораторной работы № 9. В пункте меню «Формат» менять шрифт и цвет компонентов ListBox или ComboBox. Структура меню:

Главное меню:

Единицы измерения

Формат

Помощь

Выход

Дюйм

Шрифт

О программе

Ярд

Цвет

Сажень

Верста

2. Разработать контекстное меню для задачи лабораторной работы №9.

Контекстное меню:

Шрифт (для метки)

Цвет (для формы)

3. В приложении использовать стандартные диалоги.

Допишите оператор создания метки в обработчике создания формы «О программе».

Textl:= TextLabel. ___ (10,10, 'Учебная программа') ;

Запишите название свойства, которое пропущено в этом операторе.

If ColorDialog1.Execute Then Form1.___ := ColorDialog1.___;

Свойство, которое определяет главное меню —



Пример разработки приложения

Условие задачи

Создать текстовый редактор на основе компонента TextBox. В приложении предусмотреть главное и контекстное меню. Текстовый редактор должен осуществлять следующие функции: создавать новый файл, записывать созданный файл на диск, открывать существующий файл, изменять шрифт, выводить форму с информацией о программе. В приложении использовать контекстное меню для изменения шрифта текстового редактора.

Разработка главного меню

Разработка формы

1) Устанавливаем на форму компонент TextBox. Класс

TextBox
представляет простой текстовый редактор (компонент
TMemo
в Delphi).

Следующие свойства определены в классе

TextBox
:

§

свойство 
Lines о
пределяет динамический массив строк текстового редактора;

§

свойство
 ScrollBars о
пределяет, имеются ли у редактора полосы прокрутки.

§

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

2) Проектируем учебное меню вида:

Файл

Формат

Помощь

Выход

Создать

Шрифт

О программе

Открыть

Сохранить

3) На форму устанавливаем компонент MainMenu и формируем меню согласно условию.

Конструктор Меню.

Определяем функциональность главного меню формы

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

1. Создать новый документ:

procedure MainMenu1___1___1OnClick;

begin

TextBox1.Clear; // Метод Clear очищает редактор

end;

2. Открыть существующий документ:

procedure MainMenu1___1___2OnClick;

begin

If OpenDialog1.Execute Then // Вызываем окно открытия файла

TextBox1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

3. Сохранить документ на диске:

procedure MainMenu1___1___3OnClick;

begin

If SaveDialog1.Execute Then // Вызываем окно сохранения файла

TextBox1.Lines.SaveToFile(SaveDialog1.FileName);

end;

Форма приложения.

4. Обработчик для пункта меню «Формат/Шрифт».

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

procedure MainMenu1___2___1OnClick;

Var FontDialog1 : FontDialog;

begin

FontDialog1 := FontDialog.Create; // Создаем новый объект

If FontDialog1.Execute Then // Вызываем диалоговое окно выбора шрифта

TextBox1.Font := FontDialog1.Font;

end;

5. Обработчик для пункта меню «Помощь/О программе».

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

Окно с информацией необходимо создать. Для вывода текстовой информации необходимо создать компонент для отображения текста. Это может быть, например, метка.

procedure MainMenu1___3___1OnClick;

Var F1: Form; TextL : TextLabel; // Описываем новые объекты

begin

F1 := Form.Create(400,300,150,100,'О программе'); //Создаем форму

F1.borderStyle := bsDialog; //Определяем стиль формы

//F1.Parent := Form1; //Определяем родителя созданной формы

F1.Show;

Textl := TextLabel.Create(10,10,'Учебная программа'); //Создаем метку

TextL.Parent := F1; //Определяем родителя созданной метки

end;

Справочное окно «О программе».

Определяем контекстное меню формы

Устанавливаем на форму компонент PopupMenu. Двойным щелчком мыши вызываем Конструктор Меню и определяем его пункты:

Конструктор контекстного Меню.

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

procedure PopupMenu1___1OnClick;

begin

MainMenu1___2___1OnClick; // Вызов обработчика главного меню

end;

procedure PopupMenu1___2OnClick;

begin

If ColorDialog1.Execute Then //Вызов диалогового окна выбора цвета

TextBox1.Color := ColorDialog1.Color;

end;

Ознакомиться с работой программы можно, запустив программу Redaktor.pas.



Тестирование

Для создания главного меню приложения предназначен компонент (запишите большими латинскими буквами) —

Для создания контекстного меню используется компонент запишите большими латинскими буквами) —

Названия разделов меню, связанных с вызовом диалоговых окон, должны заканчиваться

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

Укажите наиболее верный ответ.

Состав меню зависит от конкретного приложения и




Инструментальные панели — элемент графического интерфейса. Теоретическая часть

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

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

Следующие свойства определены в классе

StatusBar
:

Text
: string — о
пределяет текст в первой панели строки статуса.

Panels
[
i
: 
integer
]: 
StatusPanel — определяет набор панелей для строки статуса. Индексация производится с 1.

PanelsCount
: integer — о
пределяет количество панелей в строке статуса. Вначале создается одна панель. Свойство предназначено только для чтения.

Следующие методы определены в классе

StatusBar
:

Add
(text: string) — д
обавляет панель с заданным текстом к строке статуса.

Add
(
text
: 
string
; 
width
: 
integer
) — д
обавляет панель с заданным текстом и заданной ширины к строке статуса.

Класс

StatusPanel
представляет панель для строки статуса StatusBar.

Следующие свойства определены в классе

StatusPanel
:

Text
: 
string
 — о
пределяет текст панели.

Alignment
: 
AlignmentType
 — о
пределяет выравнивание текста на панели. Тип
AlignmentType
определен следующим образом:
AlignmentType=(taLeftJustify, taRightJustify, taCenter)
.

Width
: 
integer
 — о
пределяет ширину панели.

Bevel
: 
BevelType — задает стиль рамки панели.

Панели создаются только неявно методом

Add
класса
StatusBar.

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

В языке PascalABC существуют следующие компоненты для организации панелей:

GroupBox — контейнер, объединяющий группу связанных органов управления;

Panel — контейнер для группирования органов управления и меньших контейнеров;

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

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

StatusBar — полоса состояния приложения, при необходимости на нескольких панелях;

ToolBar — инструментальная панель для быстрого доступа к часто используемым функциям приложения.

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

Класс

ToolBar
представляет панель инструментов. На панели инструментов могут находиться только кнопки ToolButton, создаваемые методом
AddButton
или методом
AddSeparator
.

Следующие свойства определены в классе

ToolBar
:

Buttons
[
i
: 
integer
]: 
ToolButton
 — о
пределяет массив кнопок на панели инструментов. Индексация начинается с единицы.

ButtonsCount
: integer — о
пределяет количество кнопок. Свойство доступно только для чтения.

Flat
: boolean — о
пределяет, содержит ли панель инструментов плоские кнопки (
Flat=True
) или кнопки, имеющие рамку (
Flat=False
).

Следующие методы унаследованы от класса

Control
:

SetSize

(
Width
,
Height
: 
integer
) — определяет размеры панели.

SetPos

(
Left
,
Top
: 
integer
) — определяет положение панели относительно разрабатываемой формы.

Следующие методы определены в классе

ToolBar
:

AddSeparator
 — д
обавляет на панель инструментов разделитель.

AddButton
(name: string) — д
обавляет на панель инструментов кнопку с указанием имени файла
name
, содержащего рисунок на кнопке (в качестве
name
может указываться имя стандартного ресурса).

AddButton
(
name
: 
string
; 
n
: 
integer
) — д
обавляет на панель инструментов кнопку с указанием имени файла
name
, содержащего набор рисунков;
n
указывает номер рисунка в наборе.

AddButton
(
onClick
: 
procedure
; 
name
: 
string
) — д
обавляет на панель инструментов кнопку с указанием обработчика события
onClick
и имени файла
name
, содержащего рисунок на кнопке (в качестве
name
может указываться имя стандартного ресурса).



Пример разработки приложения

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

Текстовый редактор осуществляет следующие функции:

§ создает новый файл,

§ записывает созданный файл на диск,

§ открывает существующий файл,

§ изменяет шрифт,

§ изменяет цвет фона,

§ выводит форму с информацией о программе.

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

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

Приложение «Редактор» с панелью инструментов и строкой статуса.

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

Добавляем в раздел описания новые объекты:

Var FontDialog1 : FontDialog;

Status : StatusBar; //Описание объекта для строки статуса

Tb : ToolBar; // Описание объекта для панели инструментов

В обработчик события, происходящим при создании формы, добавляем операторы создания панели и строки статуса:

Tb := ToolBar.Create;

Status:=StatusBar.create;

Свойству панели Flat присваиваем значение True, что определяет плоские кнопки в панели инструментов.

Кнопки на панель инструментов добавляем методом

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

Второй параметр — имя файла, содержащего рисунок на кнопке.

Для строки статуса панели создаются с помощью метода Add. Ознакомьтесь с обработчиком события Form1OnCreate. Код обработчика события:

procedure Form1OnCreate;

begin

FontDialog1 := FontDialog.Create;

Tb := ToolBar.Create; // Создаем панель инструментов

Tb.Flat := True; // Плоские кнопки на панели

Tb.AddButton(MainMenu1___1___1OnClick,'New');// Кнопка «Создать»

Tb.AddButton(MainMenu1___1___2OnClick,'Open');// Кнопка «Открыть»

Tb.AddButton(MainMenu1___1___3OnClick,'Save'); // Кнопка «Сохранить»

Tb.AddButton(MainMenu1___2___1OnClick,'FontDialog.bmp'); // Кнопка «Шрифт»

Tb.AddButton(PopupMenu1___2OnClick,'Color.bmp'); // Кнопка «Цвет»

Status:=StatusBar.create; // Создаем строку статуса

Status.caption:='Laboratory n.11'; // Определяем первую секцию строки статуса

Status.Add('Hello!!!'); // Определяем вторую секцию строки статуса

Status.Add('Section'); // Определяем третью секцию строки статуса

Status[3].Width:=100; // Ширина секции

Status[3].Bevel:=bvRaised; // Задаем стиль рамки

Status.Add; // Определяем четвертую секцию строки статуса

Status[4].Text:='Informatika'; // Текст четвертой секции

Status[4].Aligment:=taCenter; // Расположение текста по центру

end;

В строку состояния можно вывести информацию о текущем состоянии объектов и процессов. Создадим обработчик события, который будет осуществлять вывод координат мыши при щелчке по области текстового редактора. Событие OnMouseDown происходит при щелчке мыши на область текстового редактора. Параметрами обработчика являются X и Y — координаты мыши в этот момент времени. Координаты отображаем в четвертой панели строки статуса.

procedure TextBox1OnMouseDown(x,y,button: integer);

begin

Status[4].Text:='X:'+ IntToStr(x) + ' Y:' + IntToStr(Y);

end;

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

Познакомиться с работой приложения можно, вызвав программу Redaktor.pas.



0641.03.03;ЭПТ2.02;1

План

  • Теоретическая часть
    • Создание инструментальной панели на основе компонента ToolBar.
    • Создание строки статуса на основе компонента StatusBar.
  • Пример программы.

Цель занятия: изучить процесс создания инструментальных панелей и статус-строки в среде PascalABC.

Приобретаемые навыки: практика использования компонентов ToolBar и StatusBar для разработки графического интерфейса.

Список рекомендуемой литературы:

  • А.Я Архангельский. Программирование в Delphi 7 — М.: ООО «Бином-Пресс», 2005.
  • С. А. Орлов Технологии разработки программного обеспечения. — СПб.: Питер. 2002.
  • Э.А. Акчурин Человеко-машинное взаимодействие. Учебное пособие. — М.: «СОЛОН-ПРЕСС», 2008.
  • WWW.sunschool.math.rsu.ru

Используемые программы:

1. PascalABC

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

2. Redaktor.pas, Color.bmp, FontDialog.bmp (папка «общий пример»)

Программа для демонстрации примера разработки



Вариант

Условие исходной задачи (лабораторная работа № 9):

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

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

2. Создайте панель статуса, в которой отобразите Вашу фамилию, а также информацию о текущем положении курсора.

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

Аргументами метода AddButton компонента ToolBar являются:

1. имя обработчика события

2. номер кнопки в панели инструментов

3. имя файла с рисунком

Введите номер неверного ответа.

Допишите имя свойства, пропущенного в данном утверждении.

Если текст в свойстве ___ представляет собой пустую строку, то подсказка не появляется.

Допишите недостающую часть имени процедуры.

procedure Form1___(x,y,button: integer);

begin

Status[4].Text:='X:'+ IntToStr(x) + ' Y:' + IntToStr(Y);

end;



Вариант

Условие исходной задачи (лабораторная работа № 9):

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

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

2. Создайте панель статуса, в которой отобразите Вашу фамилию, а также информацию о текущем положении курсора.

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

Допишите оператор, добавляющий кнопку на панель инструментов. Панель инструментов имеет название Tb.

Tb. ___(MainMenu1___1___1OnClick, 'dollar.bmp') ;

Допишите оператор, добавляющий новую секцию в панели статуса.

Status.___ ('Hello!!!');

Определите свойство в операторе выравнивания текста в четвертой секции строки статуса.

Status[4].___:=taCenter;



Вариант

Условие исходной задачи (лабораторная работа № 9):

Дан радиус R. Осуществить расчет по выбору: диаметра, длины окружности, площади круга, объема шара.

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

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

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

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

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

Запишите отсутствующее слово в операторе создания строки статуса Status:=___.create;



Вариант

Условие исходной задачи (лабораторная работа № 9):

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

1$ = 34 руб.

1€ = 44 руб.

USD/CHF = 1,16 (доллар к Швейцарскому франку);

USD/YEN = 100 (доллар к Японскому Йену).

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

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

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

1. Всплывающая подсказка (Hint) — это небольшое окно, содержащее поясняющий текст.

2. Подсказка размещается ниже и правее курсора и отображается фиксированное время.

3. Для каждого компонента можно определить несколько значений свойства Hint.

4. Всплывающую подсказку можно организовать с помощью свойства Hint компонента.

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

Введите номер неверного ответа.

Запишите недостающее свойство в операторе Status[3].___:=bvRaised;.

Укажите метод создания кнопки на панели инструментов.



Вариант

Условие исходной задачи (лабораторная работа № 9):

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

1 дюйм = 2.54 см

1 ярд = 0.9144 м

1 верста = 500 сажень

1 косая сажень = 1.76 м

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

2. Создайте панель статуса, в которой отобразите Вашу фамилию, а также информацию о текущем положении курсора.

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

Вставьте пропущенное слово в операторе создания панели инструментов с именем Tb.

Tb := ___.Create;

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

___ [4] . Text:= 'X:'+ IntToStr(x) + ' Y:'+ IntToStr(Y) ;

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



Тестирование

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

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

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

Отметьте компоненты, которые выполняют функции панелей.

Установите соответствие между компонентом и его назначением.