Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laby_OAiP.pdf
Скачиваний:
31
Добавлен:
24.02.2016
Размер:
1.2 Mб
Скачать

Основы алгоритмизации и программирования в среде Delphi

Procedure ТехtОut (Х, У: Integer; const Техt: String) выводит текстовую строку Техt так, чтобы левый верхний угол прямоугольника, охватывающего текст, располагался в точке (X, У).

9.2. Как строится график с помощью компонента TChart

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

Построение графика (диаграммы) производится после вычисления таблицы значений функции y=f(x). Полученная таблица передается в специальный двух- мерный массив ChartI.SeriesList[k] (k номер графика (0,1,2,...)) компонента TСhart с помощью метода AddXY. Компонент TChart осуществляет всю работу по отображению графиков, переданных в объект ChartI.SeriesList[k]: строит и размечает оси, рисует координатную сетку, подписывает название осей и само- го графика, отображает переданную таблицу в виде всевозможных графиков или диаграмм. При необходимости с помощью встроенного редактора EditingChart компоненту TСhart передаются данные о толщине, стиле и цвете линий, параметрах шрифта подписей, шагах разметки координатной сетки и другие настройки. В процессе работы программы изменение параметров воз- можно через обращение к соответствующим свойствам компонента TChart. Так, например, свойство Chart1.BottomAxis содержит значение максимального пре- дела нижней оси графика. Перенести график в отчет можно через буфер обме-

на, используя процедуру ChartI.CopyToClipboardMetafile(True).

9.3. Пример написания программы

Задание: составить программу, выводящую график функции sin(x) двумя способами. В первом случае использовать компонент Timage, во втором ком- понент TChar. Для размещения исходных данных и двух графиков использовать три панели компонента TPageControl.

9.3.1. Работа с компонентом TPageControl

Если на одной форме необходимо разместить большое количество информа- ции или разделить эту информацию, удобно использовать компонент TPageControl (страница Win32). Этот компонент может содержать несколько перекрывающих друг друга панелей, доступ к которым осуществляется с по- мощью закладок. Для добавления новой панели необходимо щелкнуть по ком- поненту правой кнопкой мыши и выбрать пункт NewPage. Размещение элемен- тов на нужной панели производится точно так же, как и на форме.

Расположите на форме компонент PageControl1, создайте три панели и рас- положите на них компоненты в соответствии с рис. 9.1. – 9.3.

PDF created with pdfFactory Pro trial version www.pdffactory.com

________________________________________________________________________________

Рис. 9.1

Рис. 9.2

Рис. 9.3

63

PDF created with pdfFactory Pro trial version www.pdffactory.com

Основы алгоритмизации и программирования в среде Delphi

9.3.2. Работа с компонентом TChart

Для изменения параметров компонента TChart необходимо дважды щелкнуть по нему мышью в окне формы. Появится окно редактирования EditingChat1 (рис. 9.4). Для создания нового объекта Series1 щелкнуть по кнопке Add на стра- нице Series. В появившемся диалоговом окне TeeChart Gallery выбрать пикто- грамму с надписью Line (график выводится в виде линий). Если нет необходи- мости представления графика в трехмерном виде, отключить независимый пере- ключатель 3D. После нажатия на кнопку OK появится новая серия с названием Series1. Для изменения названия нажать кнопку Title. Закладка Legend задает список обозначений даиграммы (можно убирать с экрана). Название графика вводится на странице Titles. Разметка осей меняется на странице Axis. Страница Series задает характеристики (цвет, толщина линий) для определенного графика.

Данные по оси X автоматически сортируются, поэтому, если необходимо на- рисовать, например окружность, сортировку отключают функцией Order:

Chart1.Series[0].XValues.Order=loNone.

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

EditingChat.

Рис. 9.4

Текст программы приведен на листинге 9.1.

Листинг 9.1

unit Unit9; interface

PDF created with pdfFactory Pro trial version www.pdffactory.com

________________________________________________________________________________

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, StdCtrls, ComCtrls, Series, Clipbrd;

type

TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; Label1: TLabel;

Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label3: TLabel; Label8: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Button1: TButton; Button2: TButton; Image1: TImage; Button3: TButton; Button4: TButton; Chart1: TChart;

Series1: TLineSeries;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormCreate(Sender: TObject); private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1;

xn, xk, x, y, h, xomin, xomax, yomin, yomax : extended; m, i, delt : integer;

implementation

{$R *.dfm}

65

PDF created with pdfFactory Pro trial version www.pdffactory.com

Основы алгоритмизации и программирования в среде Delphi

Function f(x: extended):extended; begin

Result:=sin(x); // Функция end;

procedure TForm1.FormCreate(Sender: TObject); begin

Edit1.Text:='0,1'; Edit2.Text:='6'; Edit3.Text:='50'; Edit4.Text:='0'; Edit5.Text:='6'; Edit6.Text:='-1'; Edit7.Text:='1';

end;

procedure TForm1.Button1Click(Sender: TObject); // Рисование в Image1 var xmax, ymax, xt, yt, yo : integer;

hx, hy : extended; begin

xn:=StrToFloat(Edit1.Text);

xk:=StrToFloat(Edit2.Text);

m:=StrToInt(Edit3.Text);

xomin:=StrToFloat(Edit4.Text);

xomax:=StrToFloat(Edit5.Text);

yomin:=StrToFloat(Edit6.Text);

yomax:=StrToFloat(Edit7.Text); with Image1.Canvas do begin

Pen.Color:=clBlack;

// Установка цвета карандаша

Brush.Color:=clGreen;

// Установка цвета кисти

xmax:=Image1.Width;

// Чтение максимальной координаты по x

ymax:=Image1.Height;

// Чтение максимальной координаты по y

{Строим оси координат}

 

yo:=ymax div 2;

 

 

 

 

MoveTo(0,yo);

 

LineTo(xmax,yo);

MoveTo(0,0);

 

LineTo(0,ymax);

Pen.Color:=clRed;

 

// Установка цвета карандаша

Pen.Width:=2;

// Установка толщины карандаша

hx:=(xomax-xomin)/xmax;

// Масштабные коэффициенты, устанавли-

hy:=(yomax-yomin)/ymax;

// вающие шаг (в пикселях) по X и по Y

{Вывод графика}

 

 

 

 

h:=(xk-xn)/(m-1);

 

 

 

 

x:=xn;

 

 

 

 

y:=f(x); // Первая точка

MoveTo(Round(x/hx),Round(yo-y/hy)); for i:=1 to m do begin

x:=x+h;

y:=f(x); LineTo(Round(x/hx),Round(yo-y/hy));

end;

end;

PDF created with pdfFactory Pro trial version www.pdffactory.com

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