Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
28.06.2014
Размер:
4.36 Кб
Скачать
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "MainUnit.h"
#include "OptionsUnit.h"
#include "ResultUnit.h"
#include <Printers.hpp>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TResultForm *ResultForm;
//---------------------------------------------------------------------------
__fastcall TResultForm::TResultForm(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TResultForm::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
          TPoint &MousePos, bool &Handled)
{
	ResultForm->VertScrollBar->Position=ResultForm->VertScrollBar->Position-WheelDelta/6;
}
//---------------------------------------------------------------------------
// Создание отчёта
//---------------------------------------------------------------------------
void __fastcall TResultForm::FormShow(TObject *Sender)
{
	int MoveDown=10,q;
	Image1->Height=10;
	for (q = 0; q< Sn; q++)
		if (S[q]!="/")	Image1->Height+=20;
		else			Image1->Height+=300;
	Image1->Height+=300;
	Image1->Canvas->Pen->Color=clWhite;
	Image1->Canvas->Brush->Color=clWhite;
	Image1->Canvas->Rectangle(0,0,500,Image1->Height);
	for (q = 0; q<Sn; )
	{
		// Вывод текстовых строк отчёта
		Image1->Canvas->Brush->Color=clWhite;
		Image1->Canvas->Font->Color=clBlack;
		Image1->Canvas->Font->Size=12;
		for ( ; S[q] != "/" && q<Sn; q++)
		{
			if (q<2)	Image1->Canvas->Font->Style=TFontStyles() << fsBold;
			else		Image1->Canvas->Font->Style=TFontStyles() >> fsBold;
			Image1->Canvas->TextOutA(10,MoveDown,S[q]);
			MoveDown+=20;
		}
		q++;
		Image1->Canvas->Brush->Color=OptionsForm->ColorBox1->Selected;
		Image1->Canvas->Pen->Color=OptionsForm->ColorBox1->Selected;
		Image1->Canvas->Rectangle(0,MoveDown+0,500,MoveDown+300);

		// Рёбра
		Image1->Canvas->Pen->Color=OptionsForm->ColorBox3->Selected;
		for (i = 0; i < m; i++)
		{
			Image1->Canvas->MoveTo(Exy[i][0],MoveDown+Exy[i][1]);
			Image1->Canvas->LineTo(Exy[i][2],MoveDown+Exy[i][3]);
		}

		// Рёбра минимального пути в последнем графе
		if (q==(Sn+1))
		{
			Image1->Canvas->Pen->Color=clRed;
			Image1->Canvas->Pen->Width=2;
			for (i = 1; i < Lcount; i++)
			{
				for (j = 0; j < m; j++)
					if ((Exy[j][0]==Vxy[L[i-1]][0] && Exy[j][1]==Vxy[L[i-1]][1] && Exy[j][2]==Vxy[L[i]][0] && Exy[j][3]==Vxy[L[i]][1]) ||
						(Exy[j][0]==Vxy[L[i]][0] && Exy[j][1]==Vxy[L[i]][1] && Exy[j][2]==Vxy[L[i-1]][0] && Exy[j][3]==Vxy[L[i-1]][1]))
					{
						Image1->Canvas->MoveTo(Exy[j][0],MoveDown+Exy[j][1]);
						Image1->Canvas->LineTo(Exy[j][2],MoveDown+Exy[j][3]);
					}
			}
			Image1->Canvas->Pen->Width=1;
			Image1->Canvas->Pen->Color=OptionsForm->ColorBox3->Selected;
		}

		// Вершины
		Image1->Canvas->Brush->Color=OptionsForm->ColorBox2->Selected;
		for (i = 0; i < n; i++)
			Image1->Canvas->Ellipse(Vxy[i][0]-4,MoveDown+Vxy[i][1]-4,Vxy[i][0]+4,MoveDown+Vxy[i][1]+4);

		Image1->Canvas->Font->Size=8;
		Image1->Canvas->Brush->Color=OptionsForm->ColorBox1->Selected;

		// Веса рёбер
		if (OptionsForm->CheckBox2->Checked)
		{
			for (i = 0; i < m; i++)
			{
				for (j = 0; j < n; j++)
					if (Vxy[j][0]==Exy[i][0] && (MoveDown+Vxy[j][1])==(MoveDown+Exy[i][1]))
						break;
				for (k = 0; k < n; k++)
					if (Vxy[k][0]==Exy[i][2] && (MoveDown+Vxy[k][1])==(MoveDown+Exy[i][3]))
						break;
				Image1->Canvas->Pen->Color=OptionsForm->ColorBox3->Selected;
				Image1->Canvas->Ellipse((Exy[i][0]+Exy[i][2])/2-10,(MoveDown*2+Exy[i][1]+Exy[i][3])/2-7,(Exy[i][0]+Exy[i][2])/2+7,(MoveDown*2+Exy[i][1]+Exy[i][3])/2+10);
				Image1->Canvas->Font->Color=OptionsForm->ColorBox4->Selected;
				Image1->Canvas->TextOutA((Exy[i][0]+Exy[i][2])/2-5,(MoveDown*2+Exy[i][1]+Exy[i][3])/2-5,IntToStr(((++j)+(++k))%10));
			}
		}

		// Имена вершин
		if (OptionsForm->CheckBox1->Checked)
		{
			Image1->Canvas->Font->Color=OptionsForm->ColorBox4->Selected;
			for (i = 0; i < n; i++)
				Image1->Canvas->TextOutA(Vxy[i][0]-15,MoveDown+Vxy[i][1]-17,"V"+IntToStr(i+1));
		}
		MoveDown+=300;
	}
}
//---------------------------------------------------------------------------


Соседние файлы в папке LAB 4