
Министерство образования и науки Российской Федерации
ФГБОУВПО Тульский государственный университет
РАБОТА С ГРАФИКОЙ В DELPHI
Отчёт по лабораторной работе
http://vk.com/pomoshtulgu - создатели этой работы. Отчеты и курсовые на заказ, недорого.
Цель и задача работы
Научиться использовать графику в языке программирования Delphi.
Задание на работу
1) Предусмотреть возможность изменения цвета графика, созданного из вводимых точек.
2) Написать программу, в которой происходит симуляция броуновского движения молекул.
3) Создать файл MS Word и записать в него рисунок с комментарием
Схема алгоритма
Н
а
рисунке 1.1 приведена схема алгоритма
выбора цвета.
1
2
3
5
6
4
7
Graph_Points.AddXY(arr[0][i],arr[1][i],'',Colors.Color);
8
10
9
10
Рисунок 1.1 – Схема
алгоритма создания и выбора
цвета графика
Текст программы
Ниже приведён текст программы, написанный на языке программирования Delphi 7, выполняющий создание графика по точкам и изменение его цвета.
unit Lab;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
arra=array of array of integer;
TMainProgram = class(TForm)
MainProgramInf: TLabel;// Информация о назначении ПО
InputArray: TStringGrid;// Таблица для ввода массива точек
startinf: TLabel;// Объект для вывода информации на дисплей
endinformation: TLabel;// Объект для вывода информации на дисплей
start: TButton;// Объект для запуска программы
InfWind: TLabel;// Информация о вводе размера
InputLength: TEdit;// Объект для ввода размера массива точек
StartLength: TButton;// Объект для изменения размера массива точек
Graph: TChart;// Объект, на котором выводится график
Graph_Points: TLineSeries;// Объект - график
X_inf: TLabel;// обозначение ввода координаты Х
Y_inf: TLabel;// обозначение ввода координаты Y
Colors: TColorDialog;// Объект для выбора цвета графика
procedure startClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure StartLengthClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainProgram: TMainProgram;
{Подпрограмма для проверки ввода данных}
procedure checkandinputarr(var flag:boolean;InputArray:TStringGrid;var arr:arra);
var
size:integer;
flag:boolean;
implementation
{$R *.dfm}
{Подпрограмма для проверки ввода данных}
procedure checkandinputarr(var flag:boolean;InputArray:TStringGrid;var arr:arra);
var i,j:integer;
begin
i:=-1;
while ((i<size-1)and(flag=false)) do
begin
inc(i);
try
arr[i][0]:=strtoint(InputArray.Cells[i,0]);
arr[i][1]:=strtoint(InputArray.Cells[i,1]);
except
on EConvertError do
begin
ShowMessage('Ошибка преобразования ввода элемента матрицы. Введите целое число!');
flag:=true;
end;
end;
end;
end;
{Подпрограмма для создания динамического массива}
function GetMem(var arr:arra;size:integer):boolean;
var i:integer;
flag:boolean;
begin
flag:=false;
SetLength(arr,size);
if arr<>nil then
begin
i:=0;
while ((i<=size-1)and(flag<>true)) do
begin
SetLength(arr[i],2);
if arr[i]=nil then
begin
flag:=true;
Result:=true;
end;
inc(i);
end;
end;
end;
{Подпрограмма для освобождения памяти из-под динамического массива}
procedure FreeMem(var arr:arra;size:integer);
var i:integer;
begin
for i:=0 to size-1 do
arr[i]:=nil;
arr:=nil;
end;
{Подпрограмма для создания графика с выбираемым цветом по вводимым точкам}
procedure TMainProgram.startClick(Sender: TObject);
var arr:arra;
i:integer;
begin
Graph_Points.Clear;
Graph.BottomAxis.Automatic:=True;
Graph.LeftAxis.Automatic:=True;
flag:=false;
SetLength(arr,size);
if GetMem(arr,size)<>true then
begin
checkandinputarr(flag,InputArray,arr);
if ((flag=false)and(colors.Execute)) then
begin
for i:=1 to size do
Graph_Points.AddXY(arr[0][i],arr[1][i],'',Colors.Color);
end;
FreeMem(arr,size);
{output_from_file(Graph_Points,SaveFile);}
end
else
ShowMessage('Память не выделилась!!');
end;
procedure TMainProgram.FormCreate(Sender: TObject);
begin
size:=9;
Graph_Points.Clear;
end;
{Подпрограмма для изменения размеров таблицы с точками}
procedure TMainProgram.StartLengthClick(Sender: TObject);
begin
try
size:=strtoint(InputLength.Text);
except
on EConvertError do
begin
ShowMessage('Ошибка преобразования ввода элемента матрицы. Введите целое число!');
flag:=true;
end;
end;
if ((size<3)or(size>32768)) then
begin
flag:=true;
ShowMessage('Ошибка ввода смещения. Введите значение в допустимом диапозоне');
end;
InputArray.ColCount:=size;
end;
end.