- •Белорусский национальный технический университет
- •Конспект лекций по курсу «конструирование программ и языки программирования»
- •1. Введение Общие понятия
- •Недостатки ms-dos
- •Преимущества Windows
- •Основные концепции Windows
- •Объекты Windows
- •Механизмы сообщения
- •2. Основы визуального программирования в delphi Принцип создания приложений в Delphi
- •Процесс создания исполняемого файла в Delphi
- •3. Стандартные визуальные компоненты Формы
- •4. События, обрабатываемые формой
- •5. Свойства стандартных компонент Общие сведения
- •Компонент Tlabel
- •Компонент tButton
- •Компонент tEdit
- •Компонента tMemo
- •Компонента tCheckBox Это кнопка с независимой фиксацией. Такой компонент обладает следующими свойствами:
- •Компонент tRadioGroup
- •Компонент tСheckListBox
- •Компонент tPanel
- •К омпонент tScrollBar
- •К омпонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tListBox
- •Компонент tComboBox
- •6. Графические компоненты Общие свойства
- •Компонент tImage (отображение картинок)
- •Компонент tShape (стандартные фигуры)
- •Компонент tBevel (кромка)
- •Компонент tChart (построитель графиков)
- •Компонент tPaintBox
- •Компонента tImage
- •Компонента tShape
- •Компонент tBevel
- •Поддержка графических операций
- •Свойство объектов Canvas
- •7. Табличное представление данных
- •Компонент tStringGrid
- •Компонент tDrawGrid
- •8. Дополнительные компоненты Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tToolBar
- •9. Организация стандартных диалогов
- •Компонент tOpenDialog и tSaveDialog
- •Компонент tOpenPictureDialog и tSavePictuteDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDialog
- •10. Программирование печати документов
- •11. Вывод графических изображений
- •Компонент tProgressBar
- •Компонент tAnimate
- •Компонент tDateTimePicker
- •Компонент tMediaPlayer
- •Компонент tAnimate
- •Средства создания мультимедийных приложений Что такое мультимедиа
- •Компонент tMediaPlayer
- •Два вида программ мультимедиа
- •Пример программы с мультимедиа
- •Обработка исключительных ситуаций
- •Структурная обработка исключительных ситуаций
- •Модель исключительных ситуаций в Delphi
- •Синтаксис обработки исключительных ситуаций
- •Примеры обработки исключительных ситуаций
- •Вызов исключительной ситуации
- •Доступ к экземпляру объекта exception
- •Предопределенные обработчики исключительных ситуаций
- •Исключения, возникающие при работе с базами данных
- •Заключение
- •Создание и использование ini-файлов
- •Развертывание приложений. Локализация и интернационализация приложений
- •Литература
- •12. Управление программой с помощью панели инструментов
- •Компонент tImageList
- •Компонент tToolBar- инструментальная панель
- •13. Создание программы с несколькими формами и средства управления ими
- •14. Создание многостраничного документа
- •Литература
14. Создание многостраничного документа
Цель: Изучить способы использования TPageControl с закладками TabSheet.
Постановка задачи: Разработать программу с использованием TPageControl с закладками TabSheet.
Пример.
В программе будем использовать компоненты StatusBar, TabSheet, PageControl, RadioGroup. Рассмотрим кратко их свойства.
Компонент StatusBar предназначен для создания панелей состояния (информационных панелей). Компонент может иметь несколько секций. Выводимый текст задается в свойстве SimpleText.
Компонент PageControl используется для того, чтобы можно было использовать несколько перекрывающих друг друга панелей (класса TTabSheet). Каждая панель выбирается связанной с ней закладкой и может содержать, в свою очередь, свой набор помещенных на нее компонентов.
Чтобы на этапе конструирования добавить новую панель или выбрать ранее вставленную, щелкните на компоненте PageControl правой кнопкой мыши и в открывшемся меню выберете New Page (новая панель), Next Page (следующая панель) или Previous Page (предыдущая панель). Смена панелей идет циклически, т.е. после показа последней показывается первая и наоборот.
Для того чтобы изменить заголовок закладки необходимо щелкнуть мышью ниже закладки. При этом в Инспекторе объектов откроется соответствующая страница, например, TabSheet1. В ее свойстве Caption можно ввести необходимый заголовок.
Пример. Пусть требуется составить программу вычисления определенного интеграла. Имеется много численных алгоритмов нахождения приближенного значения интеграла, в том числе метод Симпсона, метод левых прямоугольников, правых прямоугольников и другие.
Рассмотрим алгоритм вычисления определенного интеграла методом левых прямоугольников. Для оценки точности вычислений вычислим точное значение интеграла, используя первообразную. Предполагается, что подынтегральная функция выбрана такой, что известна первообразная.
Алгоритм вычисления определенного интеграла методом левых прямоугольников имеет вид:
,
где ; число интервалов.
Рассмотрим программу вычисления значений интеграла для заданной подынтегральной функции, пределах интегрирования и шаге расчетов согласно рассмотренного алгоритма, а также на основе первообразной подынтегральной функции.
Интерфейс программы примем в виде:
Форма 1
Форма 2
Форма 3
Форма 4
Все вычисления будем производить на стадии загрузки программы, используя обработчик события PageControl1Change для формы Form1 (т.е. в процедуре TForm1.PageControl1Change).
Текст модуля DemoPageControl приводится ниже.
unit DemoPageControl;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Math, Chart, StdCtrls, ComCtrls, Buttons;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
BitBtn1: TBitBtn;
TabSheet2: TTabSheet;
RadioGroup1: TRadioGroup;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Chart1: TChart;
Series1: TLineSeries;
Image1: TImage;
Label4: TLabel;
BitBtn2: TBitBtn;
Label5: TLabel;
Bevel1: TBevel;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function Funkc(x : extended) : extended;
begin
Funkc := x + cos(x);
end;
function Pervoobraznaia(x : extended) : extended;
begin
Pervoobraznaia := Power(x, 2)/2 + sin(x);
end;
procedure TForm1.PageControl1Change(Sender: TObject);
var
i, N, a, b : integer;
x, y, h : extended;
begin
a := StrToInt(Form1.Edit1.Text);
b := StrToInt(Form1.Edit2.Text);
h := StrToFloat(Form1.Edit3.Text);
x := a;
y := 0;
N := Round((b - a)/h);
For i:=1 to N do
begin
y := y + Funkc(x);
x := x + h;
end;
if Form1.RadioGroup1.ItemIndex =0 then
Form1.Label5.Caption := FloatToStr(h*y);
if Form1.RadioGroup1.ItemIndex =1 then
Form1.Label5.Caption := FloatToStr(Pervoobraznaia(b) - Pervoobraznaia(a));
If Form1.RadioGroup1.ItemIndex =2 then
begin
y := 0;
For i:=2 to N-1 do
begin
y := y + Funkc(x);
x := x + h;
end;
y := ((b - a)/(2*N))*(Funkc(x) + Funkc(x) + 2*y);
Form1.Label5.Caption := FloatToStr(y);
end;
for i:=a to b do
Form1.Chart1.Series[0].AddXY(i, i + cos(i),'', clAqua);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.PageControl1Change(Sender);
PageControl1.ActivePage := TabSheet1;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Form1.PageControl1Change(Sender);
PageControl1.ActivePage := TabSheet2;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form1.PageControl1Change(Sender);
PageControl1.ActivePage := TabSheet3;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Form1.PageControl1Change(Sender);
PageControl1.ActivePage := TabSheet4;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Form1.PageControl1Change(Sender);
PageControl1.ActivePage := TabSheet1;
end;
end.