- •Введение
- •Рекомендуемая литература:
- •Цели и задачи курсовой работы
- •Постановка задачи курсовой работы
- •Задание на выполнение
- •Требования к оформлению
- •Курсовая работа по дисциплине «Высокоуровневые методы информатики и программирования» Табличный и графический способ представления данных на языках высоко уровня
- •Вопросы к защите
- •Методические рекомендации
- •6.1. Представление данных
- •6.1.1. Функции преобразования.
- •6.1.2. Ввод данных
- •6.1.3. Вывод данных
- •6.1.4. Использование компонента StringGrid.
- •6.1.5. Элементы управления программой
- •6.2. Графические возможности ide
- •6.2.1. Вывод иллюстраций и графиков на форму
- •6.2.2. Создание изображений в виде битовых матриц и пиктограмм
- •6.2.3. Создание рисованных изображений
- •6.2.4. Инструменты для рисования
- •6.2.5. Методы вычерчивания графиков
- •6.2.6. Рекомендации по созданию графического интерфейса
- •6.3. Запись инструкций программы
- •6.4. Компьютерное моделирование в Simulink
- •6.5. Оформление пояснительной записки в текстовом редакторе
- •6.6. Создание оглавления
6.1.5. Элементы управления программой
Компоненты Button (кнопка), BitBtn (кнопка с изображением) широко используются для управления программами. Связанный с кнопкой алгоритм управления реализуется в обработчике события OnClick. В отличие от других видимых компонентов кнопка класса TButton является элементами операционной системы Windows и поэтому не может изменить свой цвет произвольным образом – она меняет его вместе с изменением палитры Windows. Шрифт надписи на кнопке может менять свой стиль и размер, но компонент игнорирует изменение его цвета.
Графическая кнопка класса TBitBtn находится на палитре Additional, и представляет собой разновидность стандартной кнопки Button. Её отличительная особенность наличие свойства Glyph, с помощью которого определяется растровое отображение на поверхности кнопки.
Свойство Kind определяет одну из стандартных разновидностей кнопки TBitBtn. Стандартные значения кнопки, используемой в окнах диалога, приведены в табл. 6 (второй столбец).
Как и в кнопках TButton, пользователь не может управлять цветом поверхности кнопки, но может менять цвет надписи (Caption) на ней. Стандартный размер изображения для размещения на кнопке равен 16х16 пикселов. Количество изображений в растре задается свойством NumGlyph.
При большом количестве используемых кнопок в качестве органов управления весьма удобно располагать их на контейнере типа TPanel. За счет использования в нем двух кромок – внешней и внутренней, компонент имеет средства создания различных эффектов объемности. Свойство TBorderStyle=bsNone.bsSingle – определяет стиль рамки: bsNone – нет рамки, bsSingle – компонент по периметру обводится линией, толщиной в 1 пиксель.
В качестве элемента управления программой можно использовать пункты главного меню формы MainMenu.
Компонент класса TMainMenu определяет главное меню формы. Пункты меню создаются с использованием Инспектора Объектов и свойства Caption, каждый раз закрепляя надпись очередного пункта меню нажатием клавиши Enter. Чтобы вставить в меню разделительную линию, также используется свойство Caption. Для этого в качестве значения свойства Caption вместо текста надо ввести символ дефиса (-) см рис.7. Для создания многоуровневого меню, необходимо активизировать нужный пункт меню и нажать клавиши Ctrl + . На рисунке 7 показан пример многоуровневого меню.
Чтобы связать с выбором пункта меню нужное действие, следует определить обработчик его события OnClick.
Рис.7. Многоуровневое меню.
C помощью свойства ShortCut главного меню устанавливается сочетание клавиш для прямого вызова команд меню. Нажимая эти клавиши, пользователь может активизировать нужный пункт меню.
В IDE имеется возможность связывать с пунктами меню небольшие изображения. Эти изображения можно задать свойством BitMap, которое появляется слева от пункта меню (см. рис. 7). Введение значка повышает его наглядность с одной стороны, а с другой - способствует унификации значков в рамках механизма действия.
Компонент класса TLabel предназначен для размещения на форме различного рода надписей. Для этого служит центральное свойство компонента Caption. С помощью свойства Font можно разнообразить вид надписи. С помощью свойства AutoSize можно разрешить компоненту автоматически изменять свои размеры так, чтобы полностью отобразить текст Caption с учетом установленного шрифта.
Компонент класса TEdit представляет собой однострочное редактируемое поле, с помощью которого можно вводить и отображать достаточно длинные текстовые строки. Свойство Text отображает компонентом строку. С помощью обработчика события OnChange программа может контролировать вводимый пользователем текст.
У однострочного редактора, как и у некоторых других компонентов, имеется свойство Hint (всплывающая подсказка). С помощью Инспектора объектов это свойство заполняется соответствующими комментариями, что помогает получать дополнительную информацию и довольно наглядно организовывать работу с проектируемым приложением. Для этого необходимо программно установить его в значение True:
Edit1.ShowHint:=True; //отображение всплывающей подсказки
Для передачи клавиатурного ввода в нужный компонент, например Edit1, используется метод фокуса ввода: Edit1.SetFocus.
6.1.6. Рекомендации при создании табличного интерфейса в IDE
Для выполнения задания курсовой работы по проектированию табличного интерфейса представления данных необходимо:
1. Создать новый проект, сохранить его в папке «KR»: модуль под именем Tabl.pas, а код самого проекта под именем GraphTabl.dpr (*.lpr).
2. Разместить на форме компоненты, обеспечивающие требуемые режимы работы приложения. Например:
-
строковую таблицу StringGrid1 – для ввода исходных данных, их редактирования и вывода результатов вычислений;
-
кнопки Button1 – ButtonN (рис. 8), BitBtn1 – BitBtnN (или главное меню MainMenu1) – как средства для запуска расчета, редактирования содержимого ячеек таблицы, очистки расчетных данных, вызова средств построения графика и решения индивидуальных задач;
-
метки Label1 – LabelN – для пояснительных надписей к каждому элементу интерфейса приложения и вывода расчетных данных;
-
однострочные редакторы Edit1– EditN – как средства ввода и редактирования данных.
Рис. 8. Интерфейс табличного представления данных в IDE.
3. Для всех компонентов, включая саму форму, установить свойства, соответствующие выполняемым ими функциям.
4. Сохранить изменения в проекте.
5. Создать необходимые процедуры и обработчики событий:
5.1. Для упрощения расчета поставленных задач целесообразно создать процедуру Calculation, которая должна в соответствии с вводимой величиной конвертируемой суммы формировать взнос, вычислять комиссионные и сумму выдачи, а также отображать результаты расчета в соответствующих столбцах таблицы.
Формирование взноса для конверсии, а также вычисление комиссионного сбора по процентным ставкам и результирующей суммы выдачи при конверсии рубля производится по формулам (1) – (3):
Взнос = СуммаКонверсии. (1)
Комиссионные = Взнос ПроцентСтавка / 100; (2)
СуммаВыдачи = (Взнос – Комиссионные) / КурсРубля; (3)
При написании процедуры Calculation необходимо опубликовать процедуру и описать ее, например:
. . .
public { Public declarations }
procedure Calculate; //объявление процедуры
end;
. . .
implementation
procedure TForm1.Calculate; //описание процедуры
var . . .
begin
. . .
end;
. . . В теле процедуры предусмотреть следующее:
-
ситуацию ввода в окно редактора в качестве конвертируемой суммы нуля или отрицательного значения с соответствующим сообщением о необходимости для конверсии ввода положительных чисел,
-
функции преобразования текста в число для расчета требуемых показателей,
-
проверку условия не обращение в 0 знаменателя при расчете конвертируемой суммы по формуле (3),
-
расчет в цикле заданных показателей;
-
функции преобразования полученных при расчете численных значений в их текстовое отображение и запись их в соответствующие столбцы таблицы.
5.2. Для заполнения «шапки» таблицы с использованием фиксированных ячеек необходимо создать процедуру обработки события OnActivate (OnGreate) Form1. В этой процедуре необходимо отразить:
-
заполнение ячеек буквенными кодами валют, курсами рубля, процентными ставками,
-
очистку полей ввода средств редактирования,
-
отображение текущей даты в момент запуска проекта.
-
отображение всплывающих подсказок по отношению к величине вводимых данных с клавиатуры,
5.3. Для заполнения ячеек таблицы расчетными показателями создать обработчик события OnClick для кнопки «Принято», при выполнении которого вызывается процедура Calculation и столбцы «Взнос», «Комиссионные» и «СуммаВыдачи» заполняются значениями, рассчитанные по формулам (1) – (3).
5.4. Для редактирования данных ячеек создать обработчик события OnClick для кнопки «ОК», при выполнении которого данные из «Редактора ячеек» при нажатии кнопки заносятся в таблицу по текущим координатам. А обработчик события OnDblClick для ячеек таблицы StringGrid1, позволил бы двойным щелчком мыши по одной из ячеек таблицы переносить данные из таблицы в окно «Редактора ячеек»l, для их дальнейшего редактирования, в случае изменении курса рубля или процентных ставок. Доступ к координатам текущей ячейки обеспечивается с помощью свойств Col и Row компонента StringGrid1.
5.5. Для увеличения /уменьшения количества строк /столбцов динамически в процессе выполнения программы создать обработчики события OnClick для соответствующих кнопок.
6. Сохранить изменения в проекте. Откомпилировать проект.
7. Запустить проект на выполнение и опробовать действие кнопок Button1 – ButtonN. Внести в однострочный редактор сумму для конверсии и проконтролировать результат расчетов в соответствующих ячейках таблицы.
8. Создать адекватные процедуры для кнопок BitBth1 – BitBth 6. Для всех кнопок (кроме График), расположенных на панели, создать методы, при осуществлении которых возникают адекватные события: очистки столбцов от расчетных данных, завершения работы, нахождения минимального (максимального или среднего) значений, сортировка элементов массива, поиска элемента в таблице по образцу.
9. Для кнопки График создать обработчик события OnClick, при выполнении которого, открывается вторая форма, используемая для создания графического интерфейса (см. пункт 6.2.6).