
Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / Захаров / LAB 4 / ResultUnit
.cpp//---------------------------------------------------------------------------
#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