Resistor Basic Calc V 1.0

Resistor is the simplest electronics component, but its very useful for
all electronic circuits.. This software used to calculate value of basic
circuit of resistor with series, parallel, and delta / wye configuration.
And of course, we use Ohm law's as formula. Download executable file and
source files
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, Buttons, jpeg;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
St: TTabSheet;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Label3: TLabel;
RCountEdit: TEdit;
bApplyRes: TButton;
ScrollBox1: TScrollBox;
bClear: TButton;
CalcSeries: TButton;
Edit1: TEdit;
LUnit1: TLabel;
CalcParalel: TButton;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
Button3: TButton;
LRA: TLabel;
Edit2: TEdit;
LUnit2: TLabel;
LRB: TLabel;
LRC: TLabel;
Edit3: TEdit;
LUnit3: TLabel;
TabSheet3: TTabSheet;
Panel4: TPanel;
Panel5: TPanel;
Image1: TImage;
UpDown1: TUpDown;
procedure bApplyResClick(Sender: TObject);
procedure bClearClick(Sender: TObject);
procedure CalcSeriesClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure CalcParalelClick(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
RLabels: array[1..20] of TLabel;
RValues: array [1..20] of TEdit;
RUnit: array[1..20] of TLabel;
RCount: integer;
satuan: string;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.bApplyResClick(Sender: TObject);
var
i, j: integer;
begin
//Create components as according to wanted resistor for seriess % parallel
bClearClick(sender);
j:= 0;
RCount:= StrToInt(RCountEdit.Text);
for i := 1 to StrToInt(RCountEdit.Text) do
begin
RLabels[i]:=TLabel.Create(Form1);
RLabels[i].Caption:='R' + IntToStr(i);
RLabels[i].Parent:= ScrollBox1;
RLabels[i].Top:= j + 8;
RLabels[i].Left:= 8;
RValues[i]:= TEdit.Create(Form1);
RValues[i].Text:='0';
RValues[i].Parent:= ScrollBox1;
RValues[i].Top:= j + 8;
RValues[i].Left:= 40;
RUnit[i]:=TLabel.Create(Form1);
RUnit[i].Parent:= ScrollBox1;
RUnit[i].Caption:= satuan;
RUnit[i].Top:= j + 8;
RUnit[i].Left:= RValues[i].Left + RValues[i].Width + 4;
j:= j + 22;
end;
ActiveControl:= RValues[1];
end;
procedure TForm1.bClearClick(Sender: TObject);
var
i: integer;
begin
//Freeing unwanted components
if RCount <> 0 then
begin
for i:=1 to RCount do
begin
RLabels[i].Free;
RValues[i].Free;
RUnit[i].Free;
end;
end;
RCount:= 0;
Edit1.Text:= '';
Edit2.Text:= '';
Edit3.Text:= '';
end;
procedure TForm1.CalcSeriesClick(Sender: TObject);
var
i: integer;
seri: real;
begin
//Calculate series resistor
seri:= 0;
for i:=1 to Rcount do
begin
seri:= seri + StrToFloat(Rvalues[i].Text);
end;
Edit1.Text:= FloatToStr(seri);
end;
procedure TForm1.PageControl1Change(Sender: TObject);
begin
LRA.Caption:= 'Rtotal';
if PageControl1.ActivePageIndex = 1 then
begin
bClearClick(sender);
RadioGroup2.Parent:= Panel2;
Label3.Parent:= Panel2;
RCountEdit.Parent:= Panel2;
UpDown1.Parent:= Panel2;
bApplyRes.Parent:= Panel2;
bClear.Parent:= Panel2;
ScrollBox1.Parent:= Panel2;
LRA.Parent:= Panel2;
Edit1.Parent:= Panel2;
LUnit1.Parent:= Panel2;
end;
if PageControl1.ActivePageIndex = 0 then
begin
bClearClick(sender);
RadioGroup2.Parent:= Panel1;
Label3.Parent:= Panel1;
RCountEdit.Parent:= Panel1;
UpDown1.Parent:= Panel1;
bApplyRes.Parent:= Panel1;
bClear.Parent:= Panel1;
ScrollBox1.Parent:= Panel1;
LRA.Parent:= Panel1;
Edit1.Parent:= Panel1;
LUnit1.Parent:= Panel1;
end;
if PageControl1.ActivePageIndex = 2 then
begin
bClearClick(sender);
RadioGroup2.Parent:= Panel3;
ScrollBox1.Parent:= Panel3;
RadioGroup1Click(sender);
LRA.Parent:= Panel3; //LRA.Caption:= 'RA';
Edit1.Parent:= Panel3;
LUnit1.Parent:= Panel3;
bClear.Parent:= Panel3;
end;
end;
procedure TForm1.CalcParalelClick(Sender: TObject);
var
R: array[1..20] of real;
RT, RMul, RSum: real;
i: integer;
begin
//Calculate parallel resistor
RMul:= 1; RSum:= 0;
for i:= 1 to RCount do
begin
R[i]:= StrToFloat(RValues[i].Text);
RMul:= RMul * R[i];
RSum:= RSum + R[i];
end;
RT:= RMul / RSum;
Edit1.Text:= FloatToStr(RT);
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
var
i, j: integer;
begin
//Create components as according to wanted resistor for delta-star
bClearClick(sender);
j:= 0; Rcount:= 3;
case RadioGroup1.ItemIndex of
0: begin
for i:= 1 to RCount do
begin
RLabels[i]:=TLabel.Create(Form1);
RLabels[i].Caption:='RD' + IntToStr(i);
RLabels[i].Parent:= ScrollBox1;
RLabels[i].Top:= j + 8;
RLabels[i].Left:= 8;
RValues[i]:= TEdit.Create(Form1);
RValues[i].Text:='0';
RValues[i].Parent:= ScrollBox1;
RValues[i].Top:= j + 8;
RValues[i].Left:= 40;
RUnit[i]:=TLabel.Create(Form1);
RUnit[i].Parent:= ScrollBox1;
RUnit[i].Caption:= satuan;
RUnit[i].Top:= j + 8;
RUnit[i].Left:= RValues[i].Left + RValues[i].Width + 4;
j:= j + 22;
end;
LRA.Caption:= 'RY1';
LRB.Caption:= 'RY2';
LRC.Caption:= 'RY3';
ActiveControl:= RValues[1];
end;
1: begin
for i:= 1 to RCount do
begin
RLabels[i]:=TLabel.Create(Form1);
RLabels[i].Caption:='RY' + IntToStr(i);
RLabels[i].Parent:= ScrollBox1;
RLabels[i].Top:= j + 8;
RLabels[i].Left:= 8;
RValues[i]:= TEdit.Create(Form1);
RValues[i].Text:='0';
RValues[i].Parent:= ScrollBox1;
RValues[i].Top:= j + 8;
RValues[i].Left:= 40;
RUnit[i]:=TLabel.Create(Form1);
RUnit[i].Parent:= ScrollBox1;
RUnit[i].Caption:= satuan;
RUnit[i].Top:= j + 8;
RUnit[i].Left:= RValues[i].Left + RValues[i].Width + 4;
j:= j + 22;
end;
LRA.Caption:= 'RD1';
LRB.Caption:= 'RD2';
LRC.Caption:= 'RD3';
ActiveControl:= RValues[1];
end;
end;
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
var
i: integer;
begin
//Define resistor unit
case RadioGroup2.ItemIndex of
0: satuan:= 'Ohm';
1: satuan:= 'KOhm';
2: satuan:= 'MOhm';
end;
for i:=1 to RCount do
RUnit[i].Caption:= satuan;
LUnit1.Caption:= satuan;
LUnit2.Caption:= satuan;
LUnit3.Caption:= satuan;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
RD1, RD2, RD3, RY1, RY2, RY3: real;
begin
//Calculate star-delta conversion
case RadioGroup1.ItemIndex of
0: begin //delta to wye conversion
RD1:= StrToFloat(RValues[1].Text);
RD2:= StrToFloat(RValues[2].Text);
RD3:= StrToFloat(RValues[3].Text);
RY1:= (RD2*RD3) / (RD1+RD2+RD3);
RY2:= (RD1*RD3) / (RD1+RD2+RD3);
RY3:= (RD1* RD2) / (RD1+RD2+RD3);
Edit1.Text:= FloatToStr(RY1);
Edit2.Text:= FloatToStr(RY2);
Edit3.Text:= FloatToStr(RY3);
end;
1: begin //wye to delta conversion
RY1:= StrToFloat(RValues[1].Text);
RY2:= StrToFloat(RValues[2].Text);
RY3:= StrToFloat(RValues[3].Text);
RD1:= RY2+RY3+ (RY2*RY2 / RY1);
RD2:= RY1+RY3+ (RY1*RY3 / RY2);
RD3:= RY1*RY2+ (RY1*RY2 / RY3);
Edit1.Text:= FloatToStr(RD1);
Edit2.Text:= FloatToStr(RD2);
Edit3.Text:= FloatToStr(RD3);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
PageControl1.ActivePageIndex:= 0;
RadioGroup2Click(sender);
RCountEdit.Text:= '';
Edit1.Text:= '';
end;
end.
|