You are on page 1of 8

unit sinus; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,

ComCtrls; type Tfrmsinyal = class(TForm) imgtampil: TImage; memreport: TMemo; Image1: TImage; Button1: TButton; Label3: TLabel; Label4: TLabel; ComboBox3: TComboBox; Edit1: TEdit; ComboBox4: TComboBox; Label7: TLabel; btproses: TButton; Label1: TLabel; edsumbux: TEdit; edsumbuy: TEdit; Label2: TLabel; Label6: TLabel; ComboBox1: TComboBox; ComboBox2: TComboBox; Label5: TLabel; ComboBox5: TComboBox; Label8: TLabel; StatusBar1: TStatusBar; procedure btprosesClick(Sender: TObject); procedure memreportChange(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmsinyal: Tfrmsinyal; implementation {$R *.dfm} procedure sumbu (ax,ay,b,c:integer); begin frmsinyal.imgtampil.Canvas.MoveTo(ax,ay); frmsinyal.imgtampil.Canvas.LineTo(ax+b,ay); frmsinyal.imgtampil.Canvas.MoveTo(ax,ay); frmsinyal.imgtampil.Canvas.LineTo(ax,ay-c); frmsinyal.imgtampil.Canvas.MoveTo(ax,ay); frmsinyal.imgtampil.Canvas.LineTo(ax,ay+c); frmsinyal.imgtampil.Canvas.TextOut(ax-5,ay-25,'2 - '); frmsinyal.imgtampil.Canvas.TextOut(ax-5,ay-50,'4 - '); frmsinyal.imgtampil.Canvas.TextOut(ax-5,ay-75,'6 - '); frmsinyal.imgtampil.Canvas.TextOut(ax-5,ay-100,'8 - '); frmsinyal.imgtampil.Canvas.TextOut(ax-5,ay-125,'10 - ');

end; procedure sumbuu (ax,ay,b,c:integer); begin frmsinyal.Image1.Canvas.MoveTo(ax,ay); frmsinyal.Image1.Canvas.LineTo(ax+b,ay); frmsinyal.Image1.Canvas.MoveTo(ax,ay); frmsinyal.Image1.Canvas.LineTo(ax,ay-c); frmsinyal.Image1.Canvas.MoveTo(ax,ay); frmsinyal.Image1.Canvas.LineTo(ax,ay+c); frmsinyal.Image1.Canvas.Pen.Color:=clBlack; frmsinyal.Image1.Canvas.TextOut(ax-5,ay-27,'2 frmsinyal.Image1.Canvas.TextOut(ax-5,ay-47,'4 frmsinyal.Image1.Canvas.TextOut(ax-5,ay-67,'6 frmsinyal.Image1.Canvas.TextOut(ax-5,ay-87,'8 end; procedure satu(ax,ay,a,b,i:integer); begin frmsinyal.Image1.Canvas.Pen.Color:=clred; frmsinyal.Image1.Canvas.MoveTo(ax+(i-1)*b,ay-a); frmsinyal.Image1.Canvas.LineTo(ax+b+(i-1)*b,ay-a); end; procedure nol(ax,ay,a,b,i:integer); begin frmsinyal.Image1.Canvas.Pen.Color:=clred; frmsinyal.Image1.Canvas.MoveTo(ax+(i-1)*b,ay); frmsinyal.Image1.Canvas.LineTo(ax+b+(i-1)*b,ay); end; procedure tegak(ax,ay,a,b,i:integer); begin frmsinyal.Image1.Canvas.Pen.Color:=clred; frmsinyal.Image1.Canvas.MoveTo(ax+(i-1)*b,ay); frmsinyal.Image1.Canvas.LineTo(ax+(i-1)*b,ay-a); end; procedure Tfrmsinyal.btprosesClick(Sender: TObject); var b,fasa,sx,x,y,amp:integer; sy:real; frek:double; begin Image1.Visible:=False; imgtampil.Visible:=True; frmsinyal.imgtampil.Picture:=nil; frmsinyal.imgtampil.Refresh ; x:=strtoint(edsumbux.Text); y:=strtoint(edsumbuy.Text); //b:=StrToInt(Edit2.Text); if ComboBox2.ItemIndex=0 then amp:=20; if ComboBox2.ItemIndex=1 then amp:=40; if ComboBox2.ItemIndex=2 then amp:=65;

'); '); '); ');

if ComboBox2.ItemIndex=3 then amp:=90; if ComboBox2.ItemIndex=4 then amp:=120; if if if if if ComboBox1.ItemIndex=0 ComboBox1.ItemIndex=1 ComboBox1.ItemIndex=2 ComboBox1.ItemIndex=3 ComboBox1.ItemIndex=4 then then then then then frek:=20; frek:=10; frek:=4; frek:=2; frek:=0.5;

if ComboBox5.ItemIndex=0 then fasa:=0; if ComboBox5.ItemIndex=1 then fasa:=190; if ComboBox5.ItemIndex=2 then fasa:=110; imgtampil.Canvas.FloodFill(0,0,clBlue,fsBorder); sumbu(x,y,400,150); for sx:=1 to 400 do begin sy:=amp*sin((sx/pi/frek)+fasa); imgtampil.Canvas.Pixels[sx+x,150-round(sy)]:=clblue; memreport.Lines.Add('x['+inttostr(sx)+'] = '+formatfloat('#.###',(sy))); end; end; procedure Tfrmsinyal.memreportChange(Sender: TObject); begin memreport.ScrollBars :=ssVertical; end; procedure Tfrmsinyal.Button1Click(Sender: TObject); var i,x,y,tinggi,lebar:integer; biner:string; tnd : integer; begin Image1.Visible:=True; memreport.Lines.Clear; imgtampil.Visible:=False; frmsinyal.Image1.Picture:=nil; frmsinyal.Image1.Refresh ; if if if if if if if if if ComboBox3.ItemIndex=0 ComboBox3.ItemIndex=1 ComboBox3.ItemIndex=2 ComboBox3.ItemIndex=3 ComboBox3.ItemIndex=4 ComboBox4.ItemIndex=0 ComboBox4.ItemIndex=1 ComboBox4.ItemIndex=2 ComboBox4.ItemIndex=3 then then then then then then then then then lebar:=20; lebar:=40; lebar:=60; lebar:=80; lebar:=100; tinggi:=20; tinggi:=30; tinggi:=40; tinggi:=50;

biner:=Edit1.Text; x:=strtoint(edsumbux.Text); y:=strtoint(edsumbuy.Text); sumbuu(x,y,400,150);

tnd:=0; for i:=1 to 180 do if biner[i]='1' then if tnd=0 then begin tegak(x,y,lebar,tinggi,i); satu (x,y,lebar,tinggi,i); tnd:=1; end else satu(x,y,lebar,tinggi,i) else if tnd=1 then begin tegak(x,y,lebar,tinggi,i); nol (x,y,lebar,tinggi,i); tnd:=0; end else nol(x,y,lebar,tinggi,i); end; end.

unit sinus; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type Tfrmsinyal = class(TForm) imgtampil: TImage; Panel1: TPanel; Label1: TLabel; Label2: TLabel; edsumbux: TEdit; edsumbuy: TEdit; btproses: TButton; memreport: TMemo; Label3: TLabel; Label4: TLabel; Label5: TLabel; edamp: TEdit; rdfrek: TRadioGroup; btclear: TButton; procedure btprosesClick(Sender: TObject); procedure memreportChange(Sender: TObject); procedure btclearClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmsinyal: Tfrmsinyal; implementation {$R *.dfm}

procedure sumbu (ax,ay,b,c:integer); begin frmsinyal.imgtampil.Canvas.MoveTo(ax,ay); frmsinyal.imgtampil.Canvas.LineTo(ax+b,ay); frmsinyal.imgtampil.Canvas.MoveTo(ax,ay); frmsinyal.imgtampil.Canvas.LineTo(ax,ay-c); frmsinyal.imgtampil.Canvas.MoveTo(ax,ay); frmsinyal.imgtampil.Canvas.LineTo(ax,ay+c); end; procedure Tfrmsinyal.btprosesClick(Sender: TObject); var sx,x,y,amp:integer; sy:real; frek:double; begin x:=strtoint(edsumbux.Text); y:=strtoint(edsumbuy.Text); amp:=strtoint(edamp.Text); case rdfrek.ItemIndex of 0: frek:=20; 1: frek:=10; 2: frek:=4; 3: frek:=2; 4: frek:=1; 5: frek:=0.5; end; imgtampil.Canvas.FloodFill(0,0,clred,fsBorder); sumbu(x,y,400,150); for sx:=1 to 395 do begin sy:=sin(sx/pi/frek)*amp; imgtampil.Canvas.Pixels[sx+x,150-round(sy)]:=clblue; memreport.Lines.Add('x['+inttostr(sx)+'] = '+formatfloat('#.###',(sy))); end; {edamp.Enabled := false; btproses.Enabled := false; rdfrek.Enabled :=false; } end; procedure Tfrmsinyal.memreportChange(Sender: TObject); begin memreport.ScrollBars :=ssVertical; end; procedure Tfrmsinyal.btclearClick(Sender: TObject); var sx,x,y,amp:integer; sy:real; frek:double; begin x:=strtoint(edsumbux.Text); y:=strtoint(edsumbuy.Text); amp:=strtoint(edamp.Text); case rdfrek.ItemIndex of

0: frek:=20; 1: frek:=10; 2: frek:=4; 3: frek:=2; 4: frek:=1; 5: frek:=0.5; end; btproses.Enabled:=true; edamp.Enabled:=true; rdfrek.Enabled :=true; rdfrek.ItemIndex :=0; memreport.Lines.Clear; memreport.ScrollBars := ssNone; //hapus kurva for sx:=1 to 395 do begin sy:=sin(sx/pi/frek)*amp; imgtampil.Canvas.Pixels[sx+x,150-round(sy)]:=clwhite; end; //hapus sumbu x imgtampil.Canvas.MoveTo(x,0); for sx:=1 to 800 do imgtampil.Canvas.Pixels[x,sx]:=clwhite; //hapus sumbu y imgtampil.Canvas.MoveTo(0,y); for sx:=1 to 800 do imgtampil.Canvas.Pixels[sx,y]:=clwhite; end; procedure Tfrmsinyal.FormCreate(Sender: TObject); begin rdfrek.ItemIndex :=0; end; end.

unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Gauges; type TForm1 = class(TForm) StatusBar1: TStatusBar;

Button1: TButton; ProgressBar1: TProgressBar; procedure FormCreate(Sender: TObject); procedure StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var ProgressBarStyle: integer; begin // mengaktifkan status bar Panel kedua StatusBar1.Panels[1].Style := psOwnerDraw; // Tempatkan Progressbar di atas Statusbar ProgressBar1.Parent := StatusBar1; // menghapus perbatasan progress bar ProgressBarStyle := GetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE); ProgressBarStyle := ProgressBarStyle - WS_EX_STATICEDGE; SetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE, ProgressBarStyle); end; procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin if Panel = StatusBar.Panels[1] then with ProgressBar1 do begin Top := Rect.Top; Left := Rect.Left; Width := Rect.Right - Rect.Left - 15; Height := Rect.Bottom - Rect.Top; end; end; procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin ProgressBar1.Position := 0; ProgressBar1.Max := 100; for i := 0 to 100 do

begin ProgressBar1.Position := i; Sleep(25); Application.ProcessMessages; end; end; end.

You might also like