Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchyot_praktika_1.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
750.49 Кб
Скачать

Interface

uses

ExtCtrls, Graphics;

procedure DrawGrid(img: TImage; XLevel, YLevel: integer;

XScaleFactor, XScaleQuantity, XScaleLength: integer;

YScaleFactor, YScaleQuantity, YScaleLength: integer);

implementation

procedure DrawGrid(img: TImage; XLevel, YLevel: integer;

XScaleFactor, XScaleQuantity, XScaleLength: integer;

YScaleFactor, YScaleQuantity, YScaleLength: integer);

var

runner: integer;

begin

with img.Canvas do

begin

MoveTo(YLevel, XLevel);

LineTo(img.Width - 40, XLevel);

MoveTo(YLevel, XLevel);

LineTo(YLevel, 10);

runner := YLevel;

while (runner < img.width - 40) do

begin

MoveTo(runner, XLevel);

LineTo(runner, XLevel - 3);

runner := runner + XScaleLength;

end;

runner := XLevel;

while (runner > 10) do

begin

MoveTo(YLevel, runner);

LineTo(YLevel + 3, runner);

runner := runner - YScaleLength;

end;

TextOut(img.Width - 60, XLevel + 5, '[Мб]');

TextOut(YLevel - 30, 5, '[Руб]');

end;

end;

end.

unit DiagramForm;

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Globals, TStoreDef, THardwareDef, CommonGraphics;

type

TfrmDiagram = class(TForm)

imgDiagram: TImage;

procedure FormShow(Sender: TObject);

private

XLevel, YLevel: integer;

XScaleFactor, XScaleQuantity, XScaleLength: integer;

YScaleFactor, YScaleQuantity, YScaleLength: integer;

procedure DrawDiagram;

public

{ Public declarations }

end;

var

frmDiagram: TfrmDiagram;

implementation

{$R *.dfm}

procedure TfrmDiagram.DrawDiagram;

var

i, mem, maxind, x, y: integer;

maxprice, minprice: real;

begin

i := 0;

maxind := dbase.GetMaxIndex;

while (i<=maxind) do

begin

mem := dbase.GetElement(i).Memory;

minprice := dbase.GetElement(i).Price;

while (i<maxind)and(dbase.GetElement(i).Memory = mem) do

inc(i);

if not (dbase.GetElement(i).Memory = mem) then dec(i);

maxprice := dbase.GetElement(i).Price;

inc(i);

with imgDiagram.Canvas do

begin

x := YLevel + (mem div XScaleFactor)*XScaleLength;

y := XLevel - Round(maxprice/YScaleFactor)*YScaleLength;

TextOut(x, XLevel + 20, IntToStr(mem));

TextOut(YLevel - 50, y, FloatToStr(maxprice));

MoveTo(YLevel, y);

Pen.Style := psDashDot;

LineTo(x, y);

Pen.Style := psSolid;

Brush.Color := clRed;

Rectangle(x + (XScaleLength div 2), y,

x - (XScaleLength div 2), XLevel);

Brush.Color := clWhite;

y := XLevel - Round(minprice/YScaleFactor)*YScaleLength;

TextOut(YLevel - 50, y, FloatToStr(minprice));

MoveTo(YLevel, y);

Pen.Style := psDashDot;

LineTo(x, y);

Pen.Style := psSolid;

Brush.Color := clGreen;

Rectangle(x + (XScaleLength div 2), y,

x - (XScaleLength div 2), XLevel);

Brush.Color := clWhite;

end;

end;

end;

procedure TfrmDiagram.FormShow(Sender: TObject);

var

MaxMem: integer;

MaxPrice: real;

begin

imgDiagram.Refresh;

XLevel := imgDiagram.Height - 40;

YLevel := 60;

MaxMem := dbase.GetMaxMemory;

MaxPrice := dbase.GetMaxPrice;

XScaleFactor := 1024;

XScaleQuantity := Round(MaxMem/XScaleFactor) + 2;

if XScaleQuantity < 6 then XScaleQuantity := 6;

XScaleLength := Round((imgDiagram.Width - YLevel - 40)/XScaleQuantity);

YScaleFactor := 1000;

YScaleQuantity := Round(MaxPrice/YScaleFactor) + 2;

if YScaleQuantity < 30 then YScaleQuantity := 30;

YScaleLength := Round((imgDiagram.Height - 10)/YScaleQuantity);

DrawGrid(imgDiagram, XLevel, YLevel, XScaleFactor, XScaleQuantity,

XScaleLength, YScaleFactor, YScaleQuantity, YScaleLength);

DrawDiagram;

end;

end.

unit PlotForm;

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