Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Cell_Component;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, pngimage, ExtCtrls;
- type
- TBattery = class(TFrame)
- BatteryIcon: TImage;
- DeleteIcon: TImage;
- ValueEdit: TEdit;
- VoltLabel: TLabel;
- BatteryTimer: TTimer;
- Connector1: TImage;
- Connector2: TImage;
- OhmEdit: TEdit;
- OhmLabel: TLabel;
- procedure DeleteIconMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure DeleteIconMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure DeleteIconMouseLeave(Sender: TObject);
- procedure BatteryIconMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure BatteryIconMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure BatteryTimerTimer(Sender: TObject);
- procedure Connector2MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure Connector1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure Connector1MouseLeave(Sender: TObject);
- procedure Connector2MouseLeave(Sender: TObject);
- procedure DeleteIconClick(Sender: TObject);
- procedure Connector1Click(Sender: TObject);
- procedure Connector2Click(Sender: TObject);
- private
- public
- Volts,Resistance: Extended;
- P: TPoint;
- ID:Integer;
- end;
- var
- ComponentID, ComponentID2:Integer;
- Connected, ConnectedUp, ConnectedDown, Parralel, FirstUp,
- FirstDown, Connected1,Connected2: Boolean;
- Procedure Register;
- implementation
- uses Circuits;
- {$R *.dfm}
- Procedure Register;
- begin
- RegisterComponents('MyFrames',[TBattery]);
- end;
- Function CheckConnection(UP,DOWN: Boolean):Boolean;
- begin
- if (UP=True) and (DOWN=True) then
- Result := True
- Else
- Result := False;
- end;
- Procedure AddToList(Up,Down:Boolean);
- begin
- if CheckConnection(Up,Down) then
- begin
- LinePoints[Count].Start := Start;
- LinePoints[Count].Finish := Finish;
- LinePoints[Count].ID := Count;
- ComponentID := Count;
- Count := Count + 1;
- LinePoints[0].Start := LinePoints[0].Start;
- end;
- end;
- Procedure AddToArray;
- begin
- LinePoints[Count].Start := Start;
- LinePoints[Count].Finish := Finish;
- LinePoints[Count].ID := Count;
- ComponentID := Count;
- Count := Count + 1;
- end;
- Procedure AddToArrayD;
- begin
- LinePoints[Count].Start := Start;
- LinePoints[Count].Finish := Finish;
- LinePoints[Count].ID := Count;
- ComponentID2 := Count;
- Count := Count + 1;
- end;
- ///// CONNECTORS //////
- procedure TBattery.Connector1Click(Sender: TObject);
- begin
- if ConnectedUp = False then
- begin
- if ActiveConnection = true then
- begin
- Finish.X := Left+38;
- Finish.Y := Top+30;
- //AddToList(ConnectedUp,ConnectedDown);
- //DrawLines;
- AddToArray;
- ConnectedUp := True;
- ActiveConnection := False;
- Connected1 := True;
- FirstUp := False;
- end
- else
- begin
- Start.X := Left+38;
- Start.Y := Top+30;
- FirstUp:= True;
- Connected1:=True;
- ComponentID:= Count;
- ActiveConnection := True;
- ConnectedUp := True;
- end;
- end;
- end;
- procedure TBattery.Connector2Click(Sender: TObject);
- begin
- if ConnectedDown = False then
- begin
- if ActiveConnection = true then
- begin
- Finish.X := Left+38;
- Finish.Y := Top+120;
- //AddToList(ConnectedUp,ConnectedDown);
- //DrawLines;
- AddToArrayD;
- ConnectedDown := True;
- ActiveConnection := False;
- Connected2 := True;
- FirstDown:=False;
- end else
- begin
- Start.X := Left+38;
- Start.Y := Top+120;
- FirstDown:= True;
- Connected2:=True;
- ComponentID2:= Count;
- ActiveConnection := True;
- ConnectedDown := True;
- end;
- end;
- end;
- procedure TBattery.BatteryIconMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- BatteryTimer.Enabled := True;
- end;
- procedure TBattery.BatteryIconMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- BatteryTimer.Enabled:= False;
- end;
- procedure TBattery.Connector1MouseLeave(Sender: TObject);
- begin
- Connector1.Picture.LoadFromFile('Connector.png');
- end;
- procedure TBattery.Connector1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
- begin
- Connector1.Picture.LoadFromFile('Connector Over.png');
- end;
- procedure TBattery.Connector2MouseLeave(Sender: TObject);
- begin
- Connector2.Picture.LoadFromFile('Connector.png');
- end;
- procedure TBattery.Connector2MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- begin
- Connector2.Picture.LoadFromFile('Connector Over.png');
- end;
- ///// DELETING /////
- procedure TBattery.DeleteIconClick(Sender: TObject);
- begin
- Free;
- end;
- procedure TBattery.DeleteIconMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- DeleteIcon.Picture.LoadFromFile('Delete Down Icon.png');
- end;
- procedure TBattery.DeleteIconMouseLeave(Sender: TObject);
- begin
- DeleteIcon.Picture.LoadFromFile('Delete Icon.png');
- end;
- procedure TBattery.DeleteIconMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- begin
- DeleteIcon.Picture.LoadFromFile('Delete Over Icon.png');
- end;
- ///// TIMERS /////
- procedure TBattery.BatteryTimerTimer(Sender: TObject);
- begin
- GetCursorPos(P);
- top := P.Y-50;
- left := P.X-35;
- if Connected1 then
- begin
- if FirstUp then
- begin
- LinePoints[ComponentID].Start.X := Cell[ID].Left+35;
- LinePoints[ComponentID].Start.Y := Cell[ID].Top;//+30;
- end else
- begin
- LinePoints[ComponentID].Finish.X := Cell[ID].Left+35;
- LinePoints[ComponentID].Finish.Y := Cell[ID].Top;//+30;
- end;
- end;
- if Connected2 then
- begin
- if FirstDown then
- begin
- LinePoints[ComponentID2].Start.X := Cell[ID].Left+35;
- LinePoints[ComponentID2].Start.Y := Cell[ID].Top+90;
- end else
- begin
- LinePoints[ComponentID2].Finish.X := Cell[ID].Left+35;
- LinePoints[ComponentID2].Finish.Y := Cell[ID].Top+90;
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement