Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, Cell_Component, Bulb_Component, ExtCtrls;
- type
- TCirForm = class(TForm)
- CellButton: TButton;
- BulbButton: TButton;
- CurrentLabel: TLabel;
- DrawTimer: TTimer;
- Button1: TButton;
- PaintBox1: TPaintBox;
- procedure FormCreate(Sender: TObject);
- procedure CellButtonClick(Sender: TObject);
- procedure BulbButtonClick(Sender: TObject);
- procedure DrawTimerTimer(Sender: TObject);
- procedure PaintBox1Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- Published
- end;
- Type
- TComponent = Record
- Start,Finish:TPoint;
- ID: Integer;
- End;
- Type
- TValue = Record
- Resistance, Volts : Double;
- ID:Integer;
- End;
- TNodePtr = ^TNode;
- TNode = Record
- Component : TValue;
- NodePtr : TNodePtr;
- End;
- var
- CirForm: TCirForm;
- Head,Tail:TNodePtr;
- LinePoints:Array[0..10] of TComponent;
- Cell:Array[0..10] of TBattery;
- Bulb:Array[0..10] of TBulb;
- ActiveConnection,Done:Boolean;
- Start, Finish: TPoint;
- YDistance,XDistance,Count,I,BulbCount,CellCount:Integer;
- Bitmap: TBitmap;
- Procedure Drawlines;
- Procedure AddNode(Component : TValue);
- implementation
- {$R *.dfm}
- Procedure DistanceBetweenPoints(Start,Finish:TPoint);
- begin
- YDistance:= Finish.Y-Start.Y;
- XDistance:= Finish.X-Start.X;
- end;
- procedure TCirForm.BulbButtonClick(Sender: TObject);
- begin
- Bulb[BulbCount]:= TBulb.Create(nil);
- Bulb[BulbCount].Top := Random(500);
- Bulb[BulbCount].Left := Random(500);
- Bulb[BulbCount].Parent := Self;
- Bulb[BulbCount].ID := BulbCount;
- BulbCount:= BulbCount + 1;
- end;
- procedure TCirForm.CellButtonClick(Sender: TObject);
- begin
- Cell[CellCount]:= TBattery.Create(nil);
- Cell[CellCount].Top := Random(500);
- Cell[CellCount].Left := Random(500);
- Cell[CellCount].Parent := Self;
- Cell[CellCount].ID := CellCount;
- CellCount := CellCount + 1;
- end;
- procedure TCirForm.Button1Click(Sender: TObject);
- begin
- DrawTimer.Enabled := True;
- end;
- procedure TCirForm.DrawTimerTimer(Sender: TObject);
- begin
- for I := 0 to Count do
- begin
- DistanceBetweenPoints(LinePoints[I].Start,LinePoints[I].Finish);
- PaintBox1.canvas.fillrect(rect(0,0,clientwidth,clientheight));
- PaintBox1.Canvas.MoveTo(LinePoints[I].Start.X,LinePoints[I].Start.Y);
- PaintBox1.Canvas.LineTo(LinePoints[I].Start.X+Round(XDistance/2),LinePoints[I].Start.Y);
- PaintBox1.Canvas.LineTo(LinePoints[I].Start.X+Round(XDistance/2),(LinePoints[I].Start.Y+YDistance));
- PaintBox1.Canvas.LineTo(LinePoints[I].Start.X+(XDistance),LinePoints[I].Finish.Y);
- Sleep(50);
- end;
- end;
- procedure TCirForm.FormCreate(Sender: TObject);
- begin
- PaintBox1.Canvas.Handle := GetDC(0);
- PaintBox1.Canvas.Pen.Color := clBlack;
- PaintBox1.Canvas.Pen.Width := 2;
- PaintBox1.Canvas.Pen.Style := psSolid;
- ActiveConnection := False;
- InitLinkedList;
- Done := False;
- Count := 0;
- BulbCount :=0;
- CellCount := 0;
- end;
- procedure TCirForm.PaintBox1Click(Sender: TObject);
- begin
- {PaintBox1.Canvas.MoveTo(Start.X,Start.Y);
- PaintBox1.Canvas.LineTo(Start.X+Round(XDistance/2),Start.Y);
- PaintBox1.Canvas.LineTo(Start.X+Round(XDistance/2),(Start.Y+YDistance));
- PaintBox1.Canvas.LineTo(Start.X+(XDistance),Finish.Y); }
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement