Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LYeKTsII_GURSKOGO_1.doc
Скачиваний:
10
Добавлен:
16.11.2019
Размер:
3.31 Mб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]