• Tidak ada hasil yang ditemukan

LAMPIRAN 1 : STRUKTUR INSTANSI

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN 1 : STRUKTUR INSTANSI"

Copied!
57
0
0

Teks penuh

(1)

LAMPIRAN 1 : STRUKTUR INSTANSI KEPALA BALAI KOORDINATOR PROGRAM KOORDINATOR PROYEK SUB. BAGIAN TATA USAHA SEKSI PELAYANAN TEKNIK SEKSI JASA PENELITIAN KELTI BIOLOGI MOLEKULAR KELTI REPRODUKSI & PERTUMBUHAN KELTI REKAYASA PROTEIN & IMMUNOLOGI

KELTI MIKROBIOLOGI & TEKNOLOGI PROSES KELTI SUMBER DAYA GENETIK LAB HASIL GEN & GENETIKA LAB BIOLOGI MOLEKULER & REKAYASA GENETIKA LAB BIOSAFETY COINTAINMENT LAB BIOLOGI SEKULER & KULTUR JARINGAN LAB DIAGNOSTIK & MIKROSKOP ELEKTRON LAB BIOPESTISIDA LAB BIOKIMIA & ENZIMATIK LAB MIKROBIOLOGI TANAH LAB PILOT PLANT LAB DNA REKOMBINAN

(2)

LAMPIRAN 2 : DATA PERCOBAAN PENGAMATAN BOBOT BIJI JAGUNG

Blok No Nama varietas Bobot Biji Blok No Nama Varietas Bobot Biji Blok No Nama Varietas Bobot Biji 1 Wisanggeni 1617.6 31 G. Sili 2194 789.7 61 Putik 3118 1371.7 2 Tongkol 641 316.2 32 Arkani Kng 2376 1020.0 62 L. Lepok Daya 3170 1647.5 3 Penjalinan 849 611.3 33 Philip SS 2383 1295.6 63 Arjuna 2093.9

4 Nakula 1293.5 34 Kalingga 3207.4 64 L. Jantuk 3177 2374.6

5 Krasekan 1126 688.4 35 Lena mutu 2427 957.8 65 L. Aur 3204 1305.5 6 Parikesit 1860 1108.6 36 2586 2586 1701.3 66 L. Telaga Seg 3206 345.6 7 G. Kretek 1904 808.9 37 Wiyasa 2587 1770.4 67 Kalingga 2316.1

8 Bisma 1912.8

2

38 Abimanyu 2604 981.1 68 G. Medok 3291 1300.5

9 Doke 2001 439.5 39 Nakula 2307.0 69 Paseh 3292 1494.7

10 Pulut 2005 1117.6 40 Bayu 2612 2192.1 70 Nakula 747.8

11 Campolaga 2009 1010.6 41 IESCN# 2619 1885.5 71 L. Majalengka 3296 1326.3

12 Kalingga 767.0 42 Bisma 1896.7

4

72 G. Kodok 3304 842.2 13 J. Putih 2021 1235.1 43 CM-90 2663 1149.2 73 Pirta 3311 1791.5 14 Masiga 2025 1174.8 44 L-NTT 3037 1228.1 74 G. Spokal 3314 545.1

15 Arjuna 1846.0 45 Antasena 1720.6 75 Kalingga 1372.2

16 Leha – leha 2026 1125.1 46 Ketan Kakian 3058 1618.8 76 Ontong Sili 3315 438.7 17 Dalo – dalo 2027 837.3 47 L. Satuabrang 3061 1941.0 77 EEY-DMR-Cc 3324 1386.5

18 Antasena 2371.6 48 Putik 3074 1473.6 78 Antasena 4211.0

19 Daco 2030 641.9 49 Arjuna 2816.8 79 EW DMR-Po 3325 1567.3 1

20 G. Madura 2048 631.9 50 Putik 3075 648.0 80 YCPG85 3361 1710.7 21 Arjuna 2728.3 51 Putik 3077 715.6 81 Tuxpeno 1 Ht 3364 1742.9 22 L. Putih 2065 1680.0 52 3079 3079 811.3 82 CM-105 3394 1087.6

23 Nakula 2011.4 53 Kalingga 931.6 83 Bisma 2519.3

24 Manado Putih 2072 1071.7 54 3104 3104 1398.4 84 Super Comp. 3397 1689.9 25 2113 2113 1321.0

3

55 L. Sokong 3106 785.9 85 Shweta(w) 3417 1625.7 26 Ketip 2118 1642.9 56 Antasena 2135.9 86 A 503 N 3463 981.1

27 Antasena 2406.4 57 Lopok 3108 903.2 87 Nakula 831.1

28 Telango 2067 628.0 58 Putik 3112 1857.0 88 DMR CONVT 3469 864.5

29 Gelatik 2174 788.5 59 Bisma 2752.7 89 Arjuna 1911.9

2 30 Bisma 1895.3 4 60 Putik 3115 905.9 5 90 Latung Roje 3510 1357.8

(3)

LAMPIRAN 3 : LISTING PROGRAM

1. Form Input Data Awal

unit uaugmented; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Math, ExtCtrls;

type Tform1 = class(TForm) Label3: TLabel; bLihatBlokData: TButton; Button1: TButton; Button8: TButton; Panel1: TPanel; Label1: TLabel; eCek: TEdit; Label2: TLabel; eUji: TEdit; bHitung: TButton; Label4: TLabel; Label6: TLabel; eBMin: TEdit; eBlok: TEdit; Button2: TButton;

procedure bLihatBlokDataClick(Sender: TObject); procedure bHitungClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure eUjiKeyPress(Sender: TObject; var Key: Char); procedure eCekKeyPress(Sender: TObject; var Key: Char); procedure eBlokKeyPress(Sender: TObject; var Key: Char); procedure Button8Click(Sender: TObject);

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure eCekChange(Sender: TObject); procedure eUjiChange(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

(4)

var form1: Tform1; c,v,b,bmin,mulai: integer; implementation uses ublok,ulsd; {$R *.dfm}

procedure Tform1.bLihatBlokDataClick(Sender: TObject); begin

if length(ecek.Text)<1 then

showmessage('Anda belum mengisi Jumlah Perlakuan Cek') else if length(eUji.Text)<1 then

showmessage('Anda belum mengisi Jumlah Perlakuan Uji') else if length(eblok.Text)<1 then

showmessage('Anda belum mengisi Jumlah Blok yang diinginkan'); mulai:=1;

Form4.show; form1.Hide; end;

procedure Tform1.bHitungClick(Sender: TObject); begin

if (length(eCek.Text)>0) and (length(eUji.Text)>0) then begin c:=strtoint(eCek.Text); v:=strtoint(eUji.Text); bmin:=(12 div(c-1))+2; eBMin.Text := inttostr(bmin); eBlok.SetFocus; end; end;

procedure Tform1.FormCreate(Sender: TObject); begin

bLihatBlokData.Enabled :=false; end;

procedure Tform1.eUjiKeyPress(Sender: TObject; var Key: Char); begin

if not(key in['0'..'9',#8,#13])then key:= #0; if (key=chr(13))and(length(eUji.Text)>0)then {begin

if strtoint(eUji.Text)>200 then begin

(5)

euji.SelectAll; end

else if strtoint(euji.Text)<2 then begin

showmessage('Jumlah Uji tidak boleh kurang dari 2'); euji.SelectAll;

end

else }bHitungClick(sender); //end;

end;

procedure Tform1.eCekKeyPress(Sender: TObject; var Key: Char); begin

if not(key in['0'..'9',#8,#13])then key:= #0; if (key=chr(13))and(length(eCek.Text)>0) then { begin

if strtoint(eCek.Text)>15 then begin

showmessage('Jumlah Cek tidak boleh lebih besar dari 15'); ecek.SelectAll;

end

else if strtoint(ecek.Text)<2 then begin

showmessage('Jumlah Cek tidak boleh kurang dari 2'); ecek.SelectAll;

end

else }euji.SetFocus; // end;

end;

procedure Tform1.eBlokKeyPress(Sender: TObject; var Key: Char); begin if key=chr(13) then begin b:=strtoint(eBlok.Text); if b<bmin then begin

showmessage('Jumlah blok tidak boleh lebih kecil dari: '+floattostr(bmin)); bLihatBlokData.Enabled:=false;

eblok.SelectAll; end

else if b>14 then begin

showmessage('Jumlah blok tidak boleh lebih besar dari: 14'); blihatblokdata.Enabled := false;

eblok.SelectAll; end

(6)

else begin bLihatBlokData.Enabled:=true; bLihatBlokData.SetFocus; end; end; end;

procedure Tform1.Button8Click(Sender: TObject); begin

Application.Terminate; end;

procedure Tform1.Button1Click(Sender: TObject); begin

form4.bBukaClick(sender); form4.Show;

form1.Hide; end;

procedure Tform1.Button2Click(Sender: TObject); begin

form4.Button3Click(sender); form4.Show;

form1.Hide; end;

procedure Tform1.FormShow(Sender: TObject); begin

eCek.SetFocus; end;

procedure Tform1.eCekChange(Sender: TObject); begin

if (length(ecek.Text)>0)and(length(euji.text)>0) then bhitung.Enabled :=true else bhitung.Enabled :=false;

end;

procedure Tform1.eUjiChange(Sender: TObject); begin

if (length(ecek.Text)>0)and(length(euji.text)>0) then bhitung.Enabled :=true else bhitung.Enabled :=false;

end; end.

(7)

2. Form Blok Data

unit ublok; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,uAugmented, ExtCtrls,comobj, OleServer,

Excel2000, DB, ADODB; type TForm4 = class(TForm) gridInputBlok: TStringGrid; bLihatTabelBdg: TButton; Label6: TLabel; bInputData: TButton; gridInputCek: TStringGrid; gridInputUji: TStringGrid; bRandom: TButton; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; ListBox1: TListBox; Button1: TButton; Button2: TButton; Panel1: TPanel; bSimpan: TButton; OpenDialog2: TOpenDialog; ADOQuery1: TADOQuery; ADOConnection1: TADOConnection; ComboBox1: TComboBox; xlsapp: TExcelApplication; Panel2: TPanel; Button4: TButton; Panel3: TPanel; bBuka: TButton; Button3: TButton; bLihat: TButton;

procedure bLihatTabelBdgClick(Sender: TObject); procedure FormShow(Sender: TObject);

procedure bRandomClick(Sender: TObject); procedure bInputDataClick(Sender: TObject); procedure ClearGrid;

procedure bSimpanClick(Sender: TObject); procedure bBukaClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject);

(8)

procedure bLihatClick(Sender: TObject); procedure ConnectToExcel(namafile:string); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; jmlcek,jmluji,jmlblok:integer; n,p:integer; implementation uses utabelbanding,ulsd; {$R *.dfm}

procedure TForm4.bLihatTabelBdgClick(Sender: TObject); begin

if (gridInputBlok.Cells[gridinputblok.ColCount-1,gridInputBlok.RowCount-

1]='')or(gridInputCek.Cells[0,gridInputCek.RowCount-1]='')or(gridInputUji.Cells[0,gridInputUji.RowCount-1]='') then begin

showmessage('Pengacakan perlakuan pada blok dan nilai hasil percobaan belum ada!'); exit; end else begin form5.show; form4.Hide; end; end; procedure tform4.ClearGrid; var i,j:integer; begin

for i:=0 to gridInputblok.RowCount-1 do for j:= 0 to gridInputBlok.ColCount-1 do gridInputBlok.Cells[j,i]:='';

end;

(9)

var n2:double; i,j:integer; begin if(mulai=1)then begin mulai:=0; bLihatTabelBdg.Enabled:=true; jmlcek:=strtoint(form1.eCek.Text); jmluji:=strtoint(form1.eUji.Text); gridInputCek.RowCount:=jmlcek+1; gridInputUji.RowCount:=jmluji+1;

gridInputCek.Cells[0,0]:='Input Nama Cek'; gridInputUji.Cells[0,0]:='Input Nama Uji'; jmlblok:=strtoint(form1.eBlok.Text); n2:=jmluji/jmlblok;

n:=jmluji div jmlblok;

if n2>n then n:=n+1; p:=c+n;

gridInputBlok.ColCount:=(strtoint(form1.eBlok.Text))*2; gridInputBlok.RowCount:=p+1;

for i:= 1 to gridInputCek.RowCount-1 do gridinputcek.Cells[0,i]:=chr(64+i); for i:= 1 to gridInputUji.RowCount-1 do gridInputUji.Cells[0,i]:=inttostr(i); for i:= 0 to jmlblok*2-1 do

for j:= 1 to p do

gridinputblok.Cells[i,j]:=''; end;

end;

procedure TForm4.bRandomClick(Sender: TObject); var

i,j,a,b,jmlujibaris,ujike:integer; begin

if (length(gridinputcek.Cells[0,gridinputcek.rowcount-

1])<1)or(length(gridinputuji.Cells[0,gridinputuji.rowcount-1])<1)or(length(gridinputuji.Cells[0,gridinputuji.rowcount div 2])<1) then begin

showmessage('Input nama cek dan nama uji terlebih dahulu!'); exit;

end; ClearGrid; listbox1.Clear;

(10)

for i:=1 to gridInputUji.RowCount-1 do begin

listbox1.Items[i-1]:=gridInputUji.Cells[0,i] //sebelum diacak, nilai uji disimpan di list box..

end; randomize;

//ini untuk random tempat data 'CEK'nya

for j:= 0 to (jmlblok)*2-1 do //j untuk var acak di semua kolom tapi..

begin i:=1;

if j mod 2 =0 then //kalo ada di kolom genap aja..

begin

while (i<gridinputcek.RowCount) do //kalo indeks yang mo dimasukkin masih lebih kecil dari index data di inputcek..

begin

a:=random(gridInputblok.RowCount-1)+1; //acak tempat di gridblok..

if (gridInputBlok.Cells[j,a]='')then //kalo tempat gridblok yang udah diacak kosong..

begin

gridInputBlok.Cells[j,a]:= gridInputCek.cells[0,i]; //isi dengan data yang ada di input cek..

i:=i+1; //tunjuk data input cek selanjutnya..

end; end; end; end;

//untuk random data 'UJI'nya ujike:=0;

jmlujibaris:=jmluji div jmlblok; for j:=0 to jmlblok*2-1 do begin

i:=0;

if j mod 2 =0 then

while (i<(jmlujibaris)) do // bila i masih lebih kecil dari banyak uji pada suatu blok..

begin

a:= random(gridInputBlok.RowCount-1)+1; //acak tempat di gridblok..

b:=random(gridInputUji.RowCount-1)+1; //acak tempat di grid uji..

if (gridInputblok.Cells[j,a]='') and(gridinputuji.Cells[0,b]<>'') then begin

(11)

ujike:=(i+1)+(j div 2)*jmlujibaris;

gridinputblok.Cells[j,a]:= gridinputuji.Cells[0,b]; //isi dengan data yang ada di input uji..

gridInputUji.Cells[0,b]:=''; //kosongin input uji yang ada di tempat b (tempat yg udah diacak)..

i:=i+1; end; end; end;

//ini untuk hitung sisa petak kalo tidak pas a:=1;j:=0; b:=1; if (ujike<gridInputUji.RowCount-1 ) then begin while (ujike<gridInputUji.RowCount-1) do begin

for i:=1 to gridinputuji.RowCount-1 do begin

if (gridInputUji.Cells[0,b]<>'') then break; //cek apakah input uji nggak kosong, kalo iya..selese..

b:=b+1; //pindah ke nama uji berikutnya.. end; if (gridInputblok.Cells[j,a]='')and(gridinputuji.Cells[0,b]<>'') then begin ujike:=ujike+1; gridinputblok.Cells[j,a]:= gridinputuji.Cells[0,b]; gridinputuji.Cells[0,b]:=''; j:=j+2; a:=0; end; a:=a+1; end; end;

//untuk nama bloknya for i:=0 to jmlblok-1 do begin

gridInputblok.Cells[i*2,0] := 'Blok '+inttostr(i+1);

gridInputblok.Cells[i*2+1,0] := 'Nilai Blok'+inttostr(i+1); end;

for i:=1 to gridInputUji.RowCount-1 do begin

gridInputUji.Cells[0,i] := listbox1.Items[i-1] //nama uji yang ada di listbox, dibalikin ke input uji..

end; end;

(12)

procedure TForm4.bInputDataClick(Sender: TObject); var i:integer;

begin

for i:=1 to gridInputCek.rowCount-1 do gridInputCek.Cells[0,i]:='';

for i:=1 to gridInputUji.rowCount-1 do gridInputUji.Cells[0,i]:='';

end;

procedure TForm4.bSimpanClick(Sender: TObject); var F:textFile; buffer,i,j :integer; nmfile,data:string; begin

if

(length(gridinputblok.Cells[0,1])<1)or(length(gridinputblok.Cells[gridinputblok.colc ount-2,gridinputblok.rowcount-2])<1) then

begin

showmessage('Pengacakan perlakuan pada blok atau nilai hasil percobaan yang ingin disimpan belum ada!');

exit; end;

if savedialog1.Execute then begin

nmfile:=savedialog1.FileName;

if copy(nmfile,length(nmfile)-4,5) = '.arbd' then else begin nmfile:=nmfile+'.arbd'; end; if FileExists(nmfile) then begin AssignFile(F,nmfile); reWrite(F,nmfile); closeFile(F); end else begin

buffer:=FileCreate(nmfile); //kl file blm ada, buat file baru

if (buffer=-1 )then //buffer=-1 kalo buffernya error

showmessage('Tidak bisa simpan file!'); FileClose(buffer);

(13)

AssignFile(F,nmfile); //simpan tabel cek append(F);

writeln(f,inttostr(jmlcek)); flush(f);

for i:=0 to jmlcek do begin data:=gridInputCek.cells[0,i]; append(F); writeln(f,data); flush(f); end;

//simpan tabel uji append(F);

writeln(f,inttostr(jmluji)); flush(f);

for i:=0 to jmluji do begin data:=gridInputUji.cells[0,i]; append(F); writeln(f,data); flush(f); end;

//simpan tabel blok append(F); writeln(f,inttostr(jmlblok*2)); flush(f); append(f); writeln(f,inttostr(p+1)); flush(f); for j:=0 to gridInputBlok.ColCount-1 do for i:= 0 to gridInputBlok.RowCount-1 do begin data:=gridInputBlok.Cells[j,i]; Append(F); Writeln(F,data); flush(F); end; CloseFile(F); end; end;

procedure TForm4.bBukaClick(Sender: TObject);

var F:textfile; str:string; i,j,kolom,baris:integer;n2:double; begin

if opendialog1.Execute then begin

(14)

AssignFile(F,opendialog1.FileName); Filemode:=0; reset(f); readln(f,str); baris:=strtoint(str); gridinputcek.RowCount:=baris+1; for i:= 0 to baris do

begin readln(f,str); gridInputCek.Cells[0,i]:=str; end; readln(f,str); baris:=strtoint(str); gridinputUji.RowCount:=baris+1; for i:= 0 to baris do

begin readln(f,str); gridInputUji.Cells[0,i]:=str; end; readln(f,str); kolom:=strtoint(str); readln(f,str); baris:=strtoint(str); gridInputBlok.ColCount:=kolom; gridInputBlok.rowCount:=baris; for j:=0 to kolom-1 do

for i:= 0 to baris-1 do begin readln(f,str); gridInputBlok.Cells[j,i]:=str; end; CloseFile(F); jmlblok:=gridinputblok.ColCount div 2; jmlcek:=gridInputcek.RowCount-1; jmluji:=gridInputUji.RowCount-1; n2:=0; try n2:=jmluji/jmlblok; except end;

n:=jmluji div jmlblok; if n2>n then n:=n+1; p:=jmlcek+n;

(15)

end; end;

procedure TForm4.Button1Click(Sender: TObject); begin

Application.Terminate; end;

procedure TForm4.Button2Click(Sender: TObject); begin

form1.Show;form4.Hide; end;

procedure TForm4.GridToWord (Grid :TStringGrid; FormatNum :integer); var x :integer ; y,i: integer ; Word : Olevariant ; GColCount: integer ; GRowCount : integer;//separator:string;numrows,numcols:integer; begin Word := CreateOLEobject('Word.Application') ; Word.Visible := True ; Word.Documents.Add ; GColCount := Grid.colcount ; GRowCount := Grid.rowcount; Word.ActiveDocument.Range.Font.Size := Grid.Font.Size; Word.ActiveDocument.PageSetup.Orientation := 1 ; Word.ActiveDocument.Tables.add( Word.ActiveDocument.Range,GRowCount+1,GColCount); for i:=1 to gridInputCek.RowCount-1 do

begin Word.ActiveDocument.Range.InsertAfter('Data Cek: '); Word.ActiveDocument.Range.InsertAfter(gridInputCek.Cells[0,i]+', '+#13); end; Word.ActiveDocument.Range.InsertAfter('Date ' + Datetimetostr(Now)+#13); Word.ActiveDocument.Range.Tables.Item(1).AutoFormat(FormatNum,1,1,1,1,1,0,0 ,0,1); for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(1,y).Range.InsertAfter(Grid.cells[y-1,0]) ; x :=1 ;

(16)

i:=1; begin while i<grid.rowcount do begin x := x + 1 ; for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(x,y).Range.InsertAfter(Grid.Cells[y-1,i]); i:=i+1; end; end; Word.ActiveDocument.Range.Tables.Item(1).UpdateAutoFormat ; end;

procedure TForm4.bLihatClick(Sender: TObject); begin

if

(length(gridinputblok.Cells[0,1])<1)or(length(gridinputblok.Cells[gridinputblok.colc ount-2,gridinputblok.rowcount-2])<1) then

begin

showmessage('Pengacakan perlakuan pada blok atau nilai hasil percobaan yang ingin dilihat belum ada!');

exit; end; GridToWord(gridInputUji,3); GridToWord(gridinputBLOK,3); end; procedure tform4.ConnectToExcel(namafile:string); var strConn :widestring; query:string;

begin strConn:='Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+namafile+';'+ 'Extended Properties=Excel 8.0'; AdoConnection1.Connected:=False; AdoConnection1.ConnectionString:=strConn; try AdoConnection1.Open; AdoConnection1.GetTableNames(combobox1.Items,True); except

MessageDlg('Tidak bisa konek ke Excel pastikan file tersebut ada!', mtwarning,[mbOk], 0);

raise; end;

(17)

ADOQuery1.Close;

query := 'SELECT * FROM ['+combobox1.Text+']' ; ADOQuery1.SQL.Text := query;

try

ADOQuery1.Open; except

MessageDlg('File tidak bisa terbuka', mtInformation,[mbOk], 0); raise;

end; end;

procedure TForm4.Button3Click(Sender: TObject); var i,j:integer;n2:double;

begin

if OpenDialog2.Execute then begin

cleargrid;

for i:=0 to gridinputuji.RowCount-1 do begin gridInputCek.Cells[0,i]:=''; gridInputUji.Cells[0,i]:=''; end; gridInputBlok.RowCount:=2; gridInputBlok.ColCount:=1; gridinputuji.RowCount:=2; gridinputcek.RowCount :=2; ConnectToExcel(opendialog2.FileName); //untuk nama kolomnya

for j:=2 to ADOQuery1.FieldCount-1 do begin gridInputBlok.Cells[j-2,0]:=ADOQuery1.Fields[j].FieldName; end; gridinputcek.Cells[0,0]:=ADOQuery1.Fields[0].FieldName; gridinputuji.Cells[0,0]:=ADOQuery1.Fields[1].FieldName; //pindahkan data dari db ke stringGrid

for i:=1 to adoquery1.RecordCount do begin try gridinputcek.Cells[0,i]:=ADOQuery1.Fields[0].Value; except end; try gridinputUji.Cells[0,i]:=ADOQuery1.Fields[1].Value; except end;

(18)

gridInputcek.RowCount:=gridInputcek.RowCount+1; gridInputuji.RowCount:=gridInputuji.RowCount+1; adoquery1.Next; end; gridInputuji.RowCount:=gridInputuji.RowCount-1; adoquery1.First; for j:=2 to ADOQuery1.FieldCount-1 do begin

for i:=1 to adoquery1.RecordCount do begin if j=2 then gridInputBlok.RowCount:=gridInputBlok.RowCount+1; try gridInputBlok.Cells[j-2,i]:=ADOQuery1.fields[j].value; except end; ADOQuery1.Next; end; gridInputBlok.ColCount :=gridInputBlok.ColCount+1; ADOQuery1.First; end; Adoquery1.Close; gridInputBlok.RowCount:=gridInputBlok.RowCount-1; gridInputBlok.ColCount :=gridInputBlok.ColCount-1; end;

//hapus yang cells yg kosong

for i:=1 to gridinputcek.RowCount-1 do begin

if length(gridInputCek.Cells[0,i])<1 then break; end;

gridInputCek.RowCount:=i;

for i:=1 to gridInputBlok.RowCount-1 do begin

if length(gridInputBlok.Cells[0,i])<1 then break; end; gridInputBlok.RowCount:=i; jmlblok:=gridinputblok.ColCount div 2; jmlcek:=gridInputcek.RowCount-1; jmluji:=gridInputUji.RowCount-1; n2:=0; try n2:=jmluji/jmlblok; except end;

n:=jmluji div jmlblok; if n2>n then n:=n+1; p:=jmlcek+n;

(19)

end;

procedure TForm4.Button4Click(Sender: TObject); var WorkBk : _WorkBook;

WorkSheet : _WorkSheet; I, J, R, C : Integer; IIndex : OleVariant; TabGrid : Variant; begin if (length(gridinputblok.Cells[0,1])<1)or(length(gridinputblok.Cells[gridinputblok.colc ount-2,gridinputblok.rowcount-2])<1) then begin

showmessage('Pengacakan perlakuan pada blok atau nilai hasil percobaan yang ingin dilihat belum ada!');

exit; end; if gridInputBlok.Cells[0,1] <> '' then begin IIndex := 1; R := gridInputUji.RowCount; C := gridInputBlok.ColCount+2;

TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],VarOleStr); I := 0; repeat TabGrid[I,0] := gridInputCek.Cells[0,I]; TabGrid[I,1] := gridInputUji.Cells[0,I]; for J := 2 to (C - 1) do TabGrid[I,J] := gridInputBlok.Cells[J-2,I]; Inc(I,1); until I > (R - 1); xlsapp.Connect; xlsapp.WorkBooks.Add(xlWBatWorkSheet,0); WorkBk := xlsapp.WorkBooks.Item[IIndex];

WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Value := TabGrid; Worksheet.Columns.HorizontalAlignment := xlRight;

WorkSheet.Columns.ColumnWidth := 14;

WorkSheet.Range['A' + IntToStr(1),chr(64+C) + IntToStr(1)].Font.Bold :=True; WorkSheet.Range['A' + IntToStr(1),'A' + IntToStr(R)].HorizontalAlignment := xlHAlignLeft;

xlsapp.Visible[0] := True; xlsapp.Disconnect;

(20)

TabGrid := Unassigned; end;

end; end.

3. Form Tabel Data Perlakuan Pembanding

unit utabelbanding; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,uAugmented, ExtCtrls,comobj;

type TForm5 = class(TForm) gridTblDataCek: TStringGrid; bLihatTabelANOVA: TButton; Label1: TLabel; Button1: TButton; Button2: TButton; bLihat: TButton;

procedure bLihatTabelANOVAClick(Sender: TObject); procedure FormShow(Sender: TObject);

procedure ClearGrid;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject);

procedure GridToWord(Grid :TStringGrid ; FormatNum :integer); procedure bLihatClick(Sender: TObject);

private { Private declarations } public { Public declarations } end; var Form5: TForm5; jml,rata2,jmlpblok,jmlpcek,rata2pblok,rata2pcek,rata2sum:double; implementation

uses uanova, ublok,ulsd; {$R *.dfm}

(21)

begin form6.show; Form5.Hide; end; procedure Tform5.ClearGrid ; var i,j:integer; begin

for i:=0 to gridTblDataCek.RowCount-1 do for j:= 0 to gridTblDataCek.ColCount-1 do gridTblDataCek.Cells[j,i]:='';

end;

procedure TForm5.FormShow(Sender: TObject); var i,j,k:integer; begin gridTblDataCek.ColCount := jmlblok+3; gridTblDataCek.RowCount := jmlcek+3; ClearGrid; gridTblDataCek.Cells[jmlblok+1,0]:='Jumlah'; gridTblDataCek.Cells[jmlblok+2,0]:='Rata-rata'; gridTblDataCek.Cells[0,0] := 'CEK';

for i:=1 to jmlblok do begin

gridTblDataCek.Cells[i,0] := 'Blok '+inttostr(i); end;

for i:= 1 to jmlcek do begin if gridTblDataCek.Cells[0,i]='' then gridTblDataCek.Cells[0,i]:= form4.gridInputCek.cells[0,i]; end; gridTblDataCek.Cells[0,jmlcek+1] := 'Jumlah'; gridTblDataCek.Cells[0,jmlcek+2] := 'Rata-rata'; for k:= 1 to jmlcek do for j:=1 to jmlblok do

for i:=1 to Form4.gridInputBlok.RowCount-1 do

if form4.gridInputBlok.Cells[(j-1)*2,i]=gridTblDataCek.Cells[0,k] then gridTblDataCek.Cells[j,k]:=form4.gridInputBlok.Cells[(j-1)*2+1,i]; //itung grand total

jml:=0;

for j:=1 to jmlblok do begin

for i:= 1 to jmlcek do

jml:=jml+strtofloat(gridTblDataCek.cells[j,i]); end;

(22)

gridTblDataCek.Cells[jmlblok+1,jmlcek+1]:=floattostr(jml); //itung total dan rata2 tiap blok

for j:=1 to jmlblok do begin

for i:=1 to jmlcek do

jmlpblok:=jmlpblok+strtofloat(gridTblDataCek.Cells[j,i]); gridTblDataCek.Cells[j,jmlcek+1]:=FloatToStr(jmlpblok) ; rata2pblok:=jmlpblok / jmlcek; gridTblDataCek.Cells[j,jmlcek+2]:=FloatToStr(rata2pblok) ; jmlpblok:=0; end;

//itung total dan rata2 tiap cek rata2sum:=0;

for j:=1 to jmlblok do begin

for i:=1 to jmlcek do

jmlpcek:=jmlpcek+strtofloat(gridTblDataCek.Cells[i,j]); gridTblDataCek.Cells[jmlcek+1,j]:=FloatToStr(jmlpcek) ; rata2pcek:=jmlpcek / jmlblok; gridTblDataCek.Cells[jmlcek+2,j]:=FloatToStr(rata2pcek) ; jmlpcek:=0; rata2sum:=rata2sum+rata2pcek; end;

//itung grand rata-rata rata2:=rata2sum / jmlblok;

gridTblDataCek.Cells[jmlblok+2,jmlcek+2]:=floattostr(rata2); end;

procedure TForm5.Button1Click(Sender: TObject); begin

form4.show; form5.hide; end;

procedure TForm5.Button2Click(Sender: TObject); begin

Application.Terminate; end;

procedure TForm5.GridToWord (Grid :TStringGrid; FormatNum :integer); var

x :integer ; y,i: integer ;

(23)

GColCount,GColCount2 : integer ; GRowCount,GRowCount2 : integer;separator:string;numrows,numcols:integer; begin Word := CreateOLEobject('Word.Application') ; Word.Visible := True ; Word.Documents.Add ; GColCount := Grid.colcount ; GRowCount := Grid.rowcount; Word.ActiveDocument.Range.Font.Size := Grid.Font.Size; Word.ActiveDocument.PageSetup.Orientation := 1 ; Word.ActiveDocument.Tables.add( Word.ActiveDocument.Range,GRowCount+1,GColCount); Word.ActiveDocument.Range.InsertAfter('Date ' + Datetimetostr(Now)+#13); Word.ActiveDocument.Range.Tables.Item(1).AutoFormat(FormatNum,1,1,1,1,1,0,0 ,0,1); for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(1,y).Range.InsertAfter(Grid.cells[y-1,0]) ; x :=1 ; i:=1; begin while i<grid.rowcount do begin x := x + 1 ; for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(x,y).Range.InsertAfter(Grid.Cells[y-1,i]); i:=i+1; end; end; Word.ActiveDocument.Range.Tables.Item(1).UpdateAutoFormat ; end;

procedure TForm5.bLihatClick(Sender: TObject); begin GridToWord(gridTblDataCek,3) end; end. 4. Form Uji F unit uanova;

(24)

interface uses

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

Dialogs, StdCtrls, Grids, ExtCtrls,uAugmented,uBlok, DBGrids, DB, ADODB,comobj, ComCtrls; type TForm6 = class(TForm) gridTblANOVA: TStringGrid; bTblHasil: TButton; Label11: TLabel; Button1: TButton; Button2: TButton; ADOQuery1: TADOQuery; bLihat: TButton; pnlUJIF: TGroupBox; pageUJIF: TPageControl; TabSheet5: TTabSheet; Label3: TLabel; Label4: TLabel; Label21: TLabel; eFHit1: TEdit; eFtbl1: TEdit; eSimpulanF1: TEdit; RadioGroup1: TRadioGroup; TabSheet6: TTabSheet; Label14: TLabel; Label15: TLabel; Label22: TLabel; RadioGroup2: TRadioGroup; eFHit5: TEdit; eFtbl5: TEdit; eSimpulanF5: TEdit;

procedure bTblHasilClick(Sender: TObject); procedure ClearGrid;

procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure tabelF;

procedure GridToWord (Grid :TStringGrid; FormatNum :integer); procedure bLihatClick(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject); procedure RadioGroup2Click(Sender: TObject); private

(25)

{ Private declarations } public { Public declarations } end; var Form6: TForm6; FK,JKB,JKP,JKG,KTB,KTP,KTG,Fblok,Fcek:double; nilaiF11,nilaiF12,nilaiF51,nilaiF52,v1,v2:string; implementation

uses utabelhasil, utabelbanding,ulsd; {$R *.dfm}

procedure TForm6.bTblHasilClick(Sender: TObject); begin form7.show; form6.hide; end; procedure Tform6.ClearGrid; var i,j:integer; begin

for i:=0 to gridTblANOVA.RowCount-1 do for j:= 0 to gridTblANOVA.ColCount-1 do gridTblANOVA.Cells[j,i]:='';

end;

procedure TForm6.FormShow(Sender: TObject); var i,j:integer; x,y:double; begin //bTblHasil.Enabled:=false; ClearGrid; gridTblANOVA.Cells[0,0]:='Sumber Keragaman'; gridTblANOVA.Cells[1,0]:='Derajat Bebas'; gridTblANOVA.Cells[2,0]:='Jumlah Kuadrat'; gridTblANOVA.Cells[3,0]:='Kuadrat Tengah'; gridTblANOVA.Cells[4,0]:='F hitung'; gridTblANOVA.Cells[5,0]:='F 1%'; gridTblANOVA.Cells[6,0]:='F 5%'; gridTblANOVA.Cells[0,1]:='Blok'; gridTblANOVA.Cells[0,2]:='Pembanding';

(26)

gridTblANOVA.Cells[0,3]:='Galat'; gridTblANOVA.Cells[0,4]:='Total'; gridTblANOVA.Cells[1,1]:=floattostr(jmlblok-1); gridTblANOVA.Cells[1,2]:=FloatToStr(jmlcek-1); gridTblANOVA.Cells[1,3]:=floattostr((jmlblok-1)*(jmlcek-1)); gridTblANOVA.Cells[1,4]:=floattostr((jmlblok-1)+(jmlcek-1)+((jmlblok-1)*(jmlcek-1))); FK:=sqr(jml)/(jmlblok*jmlcek); //itung JKB y:=0;

for i:=1 to jmlblok do begin x:=sqr(strtofloat(form5.gridTblDataCek.Cells[i,jmlcek+1])); y:=y+x; end; JKB:=y/jmlcek - FK; gridTblANOVA.Cells[2,1]:=formatfloat('###.###0',JKB); //itung JKP y:=0;

for i:=1 to jmlcek do begin x:=sqr(strtofloat(form5.gridTblDataCek.Cells[jmlblok+1,i])); y:=y+x; end; JKP:=y/jmlblok - FK; gridTblANOVA.Cells[2,2]:=formatfloat('###.###0',JKP); //itung JKG y:=0; for j:=1 to jmlblok do for i:=1 to jmlcek do begin x:=sqr(strtofloat(form5.gridTblDataCek.Cells[j,i])); y:=y+x; end; JKG:=y-FK-JKB-JKP; gridTblANOVA.Cells[2,3]:=formatfloat('##0.####',JKG); //itung total jumlah kuadrat

gridTblANOVA.Cells[2,4]:=formatfloat('##0.####',JKB+JKP+JKG); //itung KTB

KTB:= JKB / (jmlblok-1);

(27)

//itung KTP KTP:= JKP / (jmlcek-1); gridTblANOVA.Cells[3,2]:=formatfloat('##0.####',KTP); //itung KTG KTG:= JKG/((jmlblok-1)*(jmlcek-1)); gridTblANOVA.Cells[3,3]:=formatfloat('##0.####',KTG); //itung Fblok Fblok:=KTB/KTG; gridTblANOVA.Cells[4,1]:=formatfloat('##0.####',Fblok); //itung Fcek Fcek:=KTP/KTG; gridTblANOVA.Cells[4,2]:=formatfloat('##0.####',Fcek); tabelF; end;

procedure TForm6.Button1Click(Sender: TObject); begin

Application.Terminate; end;

procedure TForm6.Button2Click(Sender: TObject); begin form5.Show; form6.Hide; end; procedure TForm6.tabelF; begin v1:=gridtblanova.cells[1,1]; v2:=gridtblanova.cells[1,3]; adoquery1.close; ADOQuery1.SQL.Clear;

ADOQuery1.SQL.add('select * from F where v1='+v1+'and v2='+v2+'') ; ADOQuery1.Open;

//untuk pengaruh perlakuan

nilaiF11:=ADOQuery1.fieldbyname('a1persen').Value; nilaiF51:=ADOQuery1.fieldbyname('a5persen').Value; ADOQuery1.Close; gridTblANOVA.Cells[5,1]:=nilaiF11; gridTblANOVA.Cells[6,1]:=nilaiF51; v1:=gridtblanova.cells[1,2];

(28)

v2:=gridtblanova.cells[1,3]; adoquery1.close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.add('select * from F where v1='+v1+'and v2='+v2+'') ; ADOQuery1.Open;

//untuk pengaruh pengelompokan

nilaiF12:=ADOQuery1.fieldbyname('a1persen').Value; nilaiF52:=ADOQuery1.fieldbyname('a5persen').Value; ADOQuery1.Close; gridTblANOVA.Cells[5,2]:=nilaiF12; gridTblANOVA.Cells[6,2]:=nilaiF52; end;

procedure TForm6.GridToWord (Grid :TStringGrid; FormatNum :integer); var x :integer ; y,i: integer ; Word : Olevariant ; GColCount,GColCount2 : integer ; GRowCount,GRowCount2 : integer;separator:string;numrows,numcols:integer; begin Word := CreateOLEobject('Word.Application') ; Word.Visible := True ; Word.Documents.Add ; GColCount := Grid.colcount ; GRowCount := Grid.rowcount; Word.ActiveDocument.Range.Font.Size := Grid.Font.Size; Word.ActiveDocument.PageSetup.Orientation := 0 ; Word.ActiveDocument.Tables.add( Word.ActiveDocument.Range,GRowCount+1,GColCount); //Word.ActiveDocument.Range.InsertAfter('Date ' + Datetimetostr(Now)+#13); Word.ActiveDocument.Range.InsertAfter(#13); Word.ActiveDocument.Range.Tables.Item(1).AutoFormat(FormatNum,1,1,1,1,1,0,0 ,0,1); for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(1,y).Range.InsertAfter(Grid.cells[y-1,0]) ; x :=1 ; i:=1; begin while i<grid.rowcount do begin

(29)

x := x + 1 ; for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(x,y).Range.InsertAfter(Grid.Cells[y-1,i]); i:=i+1; end; end; Word.ActiveDocument.Range.Tables.Item(1).UpdateAutoFormat ; end;

procedure TForm6.bLihatClick(Sender: TObject); begin

GridToWord(gridTblANOVA ,3); end;

procedure TForm6.RadioGroup1Click(Sender: TObject); begin if RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]='Perlakuan' then begin eFhit1.Text := gridTblANOVA.Cells[4,2]; eFtbl1.Text := nilaiF11; if strtofloat(eFhit1.Text)>strtofloat(eFtbl1.Text) then begin

eSimpulanF1.Text := 'Tolak Ho, ada pengaruh perlakuan terhadap peubah respon';

bTblHasil.Enabled:=true; end

else begin

eSimpulanF1.Text := 'Terima Ho, tidak ada pengaruh perlakuan terhadap peubah respon';

//bTblHasil.Enabled:=true; end;

end

else if RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]='Pengelompokan' then begin

eFhit1.Text := gridTblANOVA.Cells[4,1]; eFtbl1.Text := nilaiF12;

if strtofloat(eFhit1.Text)>strtofloat(eFtbl1.Text) then begin

eSimpulanF1.Text := 'Tolak Ho, ada pengaruh pengelompokan terhadap peubah respon';

bTblHasil.Enabled:=true; end

else begin

(30)

eSimpulanF1.Text := 'Terima Ho, tidak ada pengaruh pengelompokan terhadap peubah respon'; //bTblHasil.Enabled:=true; end; end; end;

procedure TForm6.RadioGroup2Click(Sender: TObject); begin if RadioGroup2.Items.Strings[RadioGroup2.ItemIndex]='Perlakuan' then begin eFHit5.Text := gridTblANOVA.Cells[4,2]; eFtbl5.Text := nilaiF51; if strtofloat(eFHit5.Text)>strtofloat(eFtbl5.Text) then begin

eSimpulanF5.Text := 'Tolak Ho, ada pengaruh perlakuan terhadap peubah respon';

bTblHasil.Enabled:=true; end

else begin

eSimpulanF5.Text := 'Terima Ho, tidak ada pengaruh perlakuan terhadap peubah respon';

//bTblHasil.Enabled:=true; end;

end

else if RadioGroup2.Items.Strings[RadioGroup2.ItemIndex]='Pengelompokan' then begin

eFHit5.Text := gridTblANOVA.Cells[4,1]; eFtbl5.Text := nilaiF52;

if strtofloat(eFHit5.Text)>strtofloat(eFtbl5.Text) then begin

eSimpulanF5.Text := 'Tolak Ho, ada pengaruh pengelompokan terhadap peubah respon';

bTblHasil.Enabled:=true; end

else begin

eSimpulanF5.Text := 'Terima Ho, tidak ada pengaruh pengelompokan terhadap peubah respon'; //bTblHasil.Enabled:=true; end; end; end; end.

(31)

5. Form Tabel Data Terkoreksi dan Uji Lanjut

unit utabelhasil; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls, ComCtrls, DB, ADODB,comobj;

type TForm7 = class(TForm) gridTblHasil: TStringGrid; Label1: TLabel; pnlUJILSD: TGroupBox; pageUJILSD: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; TabSheet4: TTabSheet; Label17: TLabel; Label18: TLabel; eBedaLSD15: TEdit; eNilaiLSD15: TEdit; eSimpulanLSD15: TEdit; Button5: TButton; Button6: TButton; Button8: TButton; ListBox11: TListBox; comboUJILSD: TComboBox; listLSD1: TListBox; listLSD2: TListBox; Label16: TLabel; Label5: TLabel; eBedaLSD10: TEdit; Label6: TLabel; eNilaiLSD10: TEdit; eSimpulanLSD10: TEdit; Label7: TLabel; eBedaLSD5: TEdit; Label8: TLabel; eNilaiLSD5: TEdit; eSimpulanLSD5: TEdit; Label9: TLabel; eBedaLSD1: TEdit; Label10: TLabel; eNilaiLSD1: TEdit; eSimpulanLSD1: TEdit;

(32)

bPilihUji: TButton; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label23: TLabel; Label24: TLabel; GroupBox1: TGroupBox; Label19: TLabel; Label20: TLabel; gridTblMinMax: TStringGrid; bLihat: TButton; Panel1: TPanel; memoANOVA: TMemo; GroupBox2: TGroupBox; bAlpha1: TButton; bAlpha5: TButton; bAlpha10: TButton; bAlpha15: TButton; bPngaruhBlok: TButton; ADOQuery1: TADOQuery;

procedure FormShow(Sender: TObject); function cekornot(nama : string) : boolean; procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); function min(a,b:double):double;

function max(a,b:double):double;

procedure comboUJILSDChange(Sender: TObject); procedure bPilihUjiClick(Sender: TObject);

procedure GridToWord (Grid :TStringGrid; FormatNum :integer); procedure bLihatClick(Sender: TObject);

procedure tabelT(nilaiv:string);

procedure bPngaruhBlokClick(Sender: TObject); procedure bAlpha1Click(Sender: TObject); procedure bAlpha5Click(Sender: TObject); procedure bAlpha10Click(Sender: TObject); procedure bAlpha15Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form7: TForm7; nilaiT1,nilaiT5,nilaiT10,nilaiT15,v:string; SE1,SE2,SE3,SE4:double;

(33)

LSD11,LSD12,LSD13,LSD14,LSD51,LSD52,LSD53,LSD54,LSD101,LSD102,LS D103,LSD104,LSD151,LSD152,LSD153,LSD154:double; PB:double; PengaruhBlok:array[1..14] of double; implementation uses uaugmented,ublok,utabelbanding,uanova,ulsd; {$R *.dfm}

function tform7.cekornot(nama : string) : boolean; var i:integer;

begin

cekornot :=false; for i:=1 to jmlcek do begin if (nama=form4.gridInputCek.Cells[0,i]) then begin cekornot :=true; exit; end; end; end;

procedure TForm7.FormShow(Sender: TObject);

var i,j,row,hit:integer;data:string; nilaimin,nilaimax:double; begin

memoANOVA.Clear;

gridTblHasil.Cells[0,0]:='Uji'; gridTblHasil.Cells[1,0]:='Blok';

gridTblHasil.Cells[2,0]:='Data Tak Terkoreksi'; gridTblHasil.Cells[3,0]:='Data Terkoreksi'; gridTblMinMax.Cells[0,0]:='Blok'; gridTblMinMax.Cells[1,0]:='Nama Uji'; gridTblMinMax.Cells[2,0]:='Nilai Uji'; gridTblMinMax.Cells[3,0]:='Nama Uji'; gridTblMinMax.Cells[4,0]:='Nilai Uji'; gridTblHasil.RowCount := 2; row:=1; for j:=0 to jmlblok-1 do begin i:=1; while i<=p do

(34)

begin

data:=form4.gridInputBlok.Cells[(j+1)*2-2,i]; //kolom genap begin

if form4.gridInputBlok.Cells[(j+1)*2-1,i]<>'0' then //untuk memfilter apakah dia mati atau tidak, kolom ganjil

begin if cekornot(data)=false then begin gridtblhasil.RowCount:=gridtblhasil.RowCount+1; gridTblHasil.Cells[0,row]:= form4.gridInputBlok.Cells[(j+1)*2-2,i]; gridTblHasil.Cells[1,row]:= inttostr(j+1); gridTblHasil.Cells[2,row]:= form4.gridInputBlok.Cells[(j+1)*2-1,i]; row:=row+1; end; end; i:=i+1; end; end; end; gridtblhasil.RowCount:=gridtblhasil.RowCount-1; bPngaruhBlokClick(Sender);

//hitung perlakuan terkoreksi

for i:=1 to gridTblHasil.RowCount-1 do begin

gridTblHasil.Cells[3,i]:=floattostr(strtofloat(gridTblHasil.Cells[2,i])-PengaruhBlok[strtoint(gridTblHasil.Cells[1,i])]);

end;

//untuk nama bloknya tabel minmax //mulai algoritma min max

gridTblMinMax.RowCount := jmlblok + 1; for j:=1 to jmlblok do

gridTblMinMax.Cells[0,j] := 'Blok '+inttostr(j);

gridTblMinMax.Cells[2,1]:=inttostr(1); listbox11.Items.add('1');

j:=1;hit:=0;

for i:= 1 to jmlblok do begin while j<=gridTblHasil.RowCount-1 do begin if gridTblHasil.Cells[1,j]=inttostr(i) then begin hit:=hit+1; end

(35)

else begin // gridTblMinMax.Cells[2,i+1]:=inttostr(hit+1); listbox11.Items[i]:=inttostr(hit+1); break; end; j:=j+1; end; //gridTblMinMax.Cells[2,5]:=inttostr(hit); end; gridTblMinMax.RowCount:=gridTblMinMax.RowCount+1; //gridTblMinMax.Cells[2,jmlblok+1]:=inttostr(gridTblHasil.RowCount); listbox11.Items[jmlblok]:=(inttostr(gridTblHasil.RowCount)); for j:= 1 to jmlblok do begin nilaimin:=strtofloat(gridTblHasil.cells[2,strtoint(listbox11.Items[j-1])]); nilaimax:=strtofloat(gridTblHasil.cells[2,strtoint(listbox11.Items[j-1])]); for i:=strtoint(listbox11.Items[j-1]) to strtoint(listbox11.Items[j])-2 do begin nilaimin:=min(nilaimin,strtofloat(gridTblHasil.cells[2,i+1])); nilaimax:=max(nilaimax,strtofloat(gridTblHasil.cells[2,i+1])); end; gridTblMinMax.Cells[2,j]:=floattostr(nilaimin); gridTblMinMax.Cells[4,j]:=floattostr(nilaimax); end; gridTblMinMax.Cells[2,jmlblok+1]:=''; gridTblMinMax.RowCount:=gridTblMinMax.RowCount-1; for j:= 1 to jmlblok do

for i:=strtoint(listbox11.items[j-1]) to strtoint(listbox11.Items[j])-1 do begin if gridtblminmax.Cells[2,j]=gridtblhasil.Cells[2,i]then gridtblminmax.Cells[1,j]:=gridtblhasil.Cells[0,i]; if gridtblminmax.Cells[4,j]=gridtblhasil.Cells[2,i]then gridtblminmax.Cells[3,j]:=gridtblhasil.Cells[0,i]; end; end;

procedure TForm7.Button5Click(Sender: TObject); begin

form6.show; form7.Hide; end;

procedure TForm7.Button6Click(Sender: TObject); begin

(36)

bAlpha1Click(Sender); bAlpha5Click(Sender); bAlpha10Click(Sender); bAlpha15Click(Sender); FormLSD.Show; Form7.Hide; end;

procedure TForm7.Button8Click(Sender: TObject); begin

Application.Terminate; end;

function tform7.min(a,b:double):double; begin

if a<b then min:=a else min:=b; end;

function tform7.max(a,b:double):double; begin

if a>b then max:=a else max:=b; end;

procedure TForm7.comboUJILSDChange(Sender: TObject); var i:integer;

begin

if comboUJILSD.Text='Perbedaan antara dua perlakuan pembanding' then begin

listLSD1.Clear; listLSD2.Clear; for i:=1 to jmlcek do begin

listLSD1.Items.Add(Form5.gridTblDataCek.Cells[0,i]); listLSD2.Items.Add(form5.gridTblDataCek.Cells[0,i]); end;

end

else if comboUJILSD.Text='Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang sama)' then

begin

listLSD1.Clear; listLSD2.Clear;

for i:=1 to gridTblHasil.RowCount-1 do begin

listLSD1.Items.Add(gridTblHasil.Cells[0,i]); listLSD2.Items.Add(gridTblHasil.Cells[0,i]); end;

(37)

else if comboUJILSD.Text='Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang berbeda)' then

begin

listLSD1.Clear; listLSD2.Clear;

for i:=1 to gridTblHasil.RowCount-1 do begin listLSD1.Items.Add(gridTblHasil.Cells[0,i]); listLSD2.Items.Add(gridTblHasil.Cells[0,i]); end; end; end;

procedure TForm7.bPilihUjiClick(Sender: TObject); var i,j,idx1,idx2:integer; p1,p2:string;

begin

idx1:=0;idx2:=0;

for i:=0 to listLSD1.Count-1 do begin

if listLSD1.Selected[i]= true then begin p1 := listLSD1.Items[i]; idx1:=i+1; break; end; end; for j:=0 to listLSD2.Count-1 do begin if listLSD2.Selected[j]=true then begin p2 :=listLSD2.Items[j]; idx2:=j+1; break; end; end; if (listLSD1.Items.Capacity<1)or(listLSD2.Items.Capacity<1) then begin

showmessage('Pilih dulu tipe kombinasi yang diinginkan!'); exit;

end;

if (idx1=0)or(idx2=0)then begin

(38)

exit; end;

if ((p1<>'')and(p1=p2)) then begin

showmessage('Nama kedua perlakuan pembanding yang dibandingkan tidak boleh sama!');

exit; end;

if (comboUJILSD.Text = 'Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang sama)') then

begin

if gridTblHasil.Cells[1,idx1]<>gridTblHasil.Cells[1,idx2] then begin

showmessage('Blok dari kedua perlakuan harus sama!'); end else begin eNilaiLSD1.Text := formatfloat('###.###0',LSD12); eNilaiLSD5.Text := formatfloat('###.###0',LSD52); eNilaiLSD10.Text := formatfloat('###.###0',LSD102); eNilaiLSD15.Text := formatfloat('###.###0',LSD152); eBedaLSD1.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); eBedaLSD5.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); eBedaLSD10.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); eBedaLSD15.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); if strtofloat(eBedaLSD1.Text)>strtofloat(eNilaiLSD1.Text) then eSimpulanLSD1.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD1.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD5.Text)>strtofloat(eNilaiLSD5.Text) then eSimpulanLSD5.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD5.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD10.Text)>strtofloat(eNilaiLSD10.Text) then eSimpulanLSD10.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD10.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD15.Text)>strtofloat(eNilaiLSD15.Text) then eSimpulanLSD15.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD15.Text := 'Hasil Uji Tidak Berbeda Nyata' ; end;

end

else if (comboUJILSD.Text = 'Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang berbeda)') then

(39)

begin

if gridTblHasil.Cells[1,idx1]=gridTblHasil.Cells[1,idx2] then begin

showmessage('Blok dari kedua perlakuan harus berbeda!'); end else begin eNilaiLSD1.Text := formatfloat('###.###0',LSD13); eNilaiLSD5.Text := formatfloat('###.###0',LSD53); eNilaiLSD10.Text := formatfloat('###.###0',LSD103); eNilaiLSD15.Text := formatfloat('###.###0',LSD153); eBedaLSD1.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); eBedaLSD5.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); eBedaLSD10.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); eBedaLSD15.Text := floattostr(abs(strtofloat(gridTblHasil.Cells[3,idx1])-strtofloat(gridTblHasil.Cells[3,idx2]))); if strtofloat(eBedaLSD1.Text)>strtofloat(eNilaiLSD1.Text) then eSimpulanLSD1.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD1.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD5.Text)>strtofloat(eNilaiLSD5.Text) then eSimpulanLSD5.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD5.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD10.Text)>strtofloat(eNilaiLSD10.Text) then eSimpulanLSD10.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD10.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD15.Text)>strtofloat(eNilaiLSD15.Text) then eSimpulanLSD15.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD15.Text := 'Hasil Uji Tidak Berbeda Nyata' ; end;

end

else if comboUJILSD.Text = 'Perbedaan antara dua perlakuan pembanding' then begin eNilaiLSD1.Text := formatfloat('###.###0',LSD11); eNilaiLSD5.Text := formatfloat('###.###0',LSD51); eNilaiLSD10.Text := formatfloat('###.###0',LSD101); eNilaiLSD15.Text := formatfloat('###.###0',LSD151); eBedaLSD1.Text := floattostr(abs(strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx1])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx2]))); eBedaLSD5.Text := floattostr(abs(strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx1])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx2])));

(40)

eBedaLSD10.Text := floattostr(abs(strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx1])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx2]))); eBedaLSD15.Text := floattostr(abs(strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx1])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,idx2]))); if strtofloat(eBedaLSD1.Text)>strtofloat(eNilaiLSD1.Text) then eSimpulanLSD1.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD1.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD5.Text)>strtofloat(eNilaiLSD5.Text) then eSimpulanLSD5.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD5.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD10.Text)>strtofloat(eNilaiLSD10.Text) then eSimpulanLSD10.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD10.Text := 'Hasil Uji Tidak Berbeda Nyata' ; if strtofloat(eBedaLSD15.Text)>strtofloat(eNilaiLSD15.Text) then eSimpulanLSD15.Text := 'Hasil Uji Berbeda Nyata'

else eSimpulanLSD15.Text := 'Hasil Uji Tidak Berbeda Nyata' ; end;

end;

procedure TForm7.GridToWord (Grid :TStringGrid; FormatNum :integer); var x :integer ; y,i: integer ; Word : Olevariant ; GColCount,GColCount2 : integer ; GRowCount,GRowCount2 : integer;separator:string;numrows,numcols:integer; begin Word := CreateOLEobject('Word.Application') ; Word.Visible := True ; Word.Documents.Add ; GColCount := Grid.colcount ; GRowCount := Grid.rowcount; Word.ActiveDocument.Range.Font.Size := Grid.Font.Size; Word.ActiveDocument.PageSetup.Orientation := 0 ; Word.ActiveDocument.Tables.add( Word.ActiveDocument.Range,GRowCount+1,GColCount); //Word.ActiveDocument.Range.InsertAfter('Date ' + Datetimetostr(Now)+#13); Word.ActiveDocument.Range.InsertAfter(#13); bAlpha1click(Self ); Word.ActiveDocument.Range.InsertAfter(memoANOVA.Text+#13); bAlpha5click(Self ); Word.ActiveDocument.Range.InsertAfter(memoANOVA.Text+#13); bAlpha10click(Self );

(41)

Word.ActiveDocument.Range.InsertAfter(memoANOVA.Text+#13); bAlpha15click(Self ); Word.ActiveDocument.Range.InsertAfter(memoANOVA.Text+#13); bPngaruhBlokClick(self); Word.ActiveDocument.Range.InsertAfter(memoANOVA.Text+#13); Word.ActiveDocument.Range.Tables.Item(1).AutoFormat(FormatNum,1,1,1,1,1,0,0 ,0,1); for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(1,y).Range.InsertAfter(Grid.cells[y-1,0]) ; x :=1 ; i:=1; begin while i<grid.rowcount do begin x := x + 1 ; for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(x,y).Range.InsertAfter(Grid.Cells[y-1,i]); i:=i+1; end; end; Word.ActiveDocument.Range.Tables.Item(1).UpdateAutoFormat ; end;

procedure TForm7.bLihatClick(Sender: TObject); begin GridToWord(gridTblHasil ,3); GridToWord(gridTblMinMax,3); end; procedure tform7.tabelT(nilaiv:string); begin adoquery1.close; ADOQuery1.SQL.Clear;

ADOQuery1.SQL.add('select * from T where v='+nilaiv+'') ; ADOQuery1.Open;

end;

procedure TForm7.bAlpha1Click(Sender: TObject); begin

memoANOVA.Clear;

v:=form6.gridTblANOVA.cells[1,3]; tabelT(v);

(42)

nilaiT1:=ADOQuery1.fieldbyname('a1persen').Value;

memoANOVA.Lines.Add('Nilai tabel t 1% = '+formatfloat('###.###0',strtofloat(nilaiT1)));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan pembanding :'); SE1:=sqrt((2*KTG)/jmlblok);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE1)); LSD11:=SE1*(strtofloat(nilaiT1));

memoANOVA.Lines.Add(' Nilai LSD 1% = '+formatfloat('###.###0',LSD11)); memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang sama):');

SE2:=sqrt(2*KTG);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE2)); LSD12:=SE2*(strtofloat(nilaiT1));

memoANOVA.Lines.Add(' Nilai LSD 1% = '+formatfloat('###.###0',LSD12)); memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang berbeda):');

SE3:=sqrt((2*KTG)*(1+(1/jmlcek)));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE3)); LSD13:=SE3*(strtofloat(nilaiT1));

memoANOVA.Lines.Add(' Nilai LSD 1% = '+formatfloat('###.###0',LSD13)); memoANOVA.Lines.Add('Perbedaan antara perlakuan uji hasil terkoreksi dengan perlakuan pembanding:');

SE4:=sqrt((KTG*(jmlblok+1)*(jmlcek+1))/(jmlblok*jmlcek));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE4)); LSD14:=SE4*(strtofloat(nilaiT1));

memoANOVA.Lines.Add(' Nilai LSD 1% = '+formatfloat('###.###0',LSD14)); end;

procedure TForm7.bAlpha5Click(Sender: TObject); begin memoANOVA.Clear; v:=form6.gridTblANOVA.cells[1,3]; tabelT(v); nilaiT5:=ADOQuery1.fieldbyname('a5persen').Value; memoANOVA.Lines.Add('Nilai tabel t 5% = '+formatfloat('###.###0',strtofloat(nilaiT5)));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan pembanding :'); SE1:=sqrt((2*KTG)/jmlblok);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE1)); LSD51:=SE1*(strtofloat(nilaiT5));

(43)

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang sama):');

SE2:=sqrt(2*KTG);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE2)); LSD52:=SE2*(strtofloat(nilaiT5));

memoANOVA.Lines.Add(' Nilai LSD 5% = '+formatfloat('###.###0',LSD52)); memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang berbeda):');

SE3:=sqrt((2*KTG)*(1+(1/jmlcek)));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE3)); LSD53:=SE3*(strtofloat(nilaiT5));

memoANOVA.Lines.Add(' Nilai LSD 5% = '+formatfloat('###.###0',LSD53)); memoANOVA.Lines.Add('Perbedaan antara perlakuan uji hasil terkoreksi dengan perlakuan pembanding:');

SE4:=sqrt((KTG*(jmlblok+1)*(jmlcek+1))/(jmlblok*jmlcek));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE4)); LSD54:=SE4*(strtofloat(nilaiT5));

memoANOVA.Lines.Add(' Nilai LSD 5% = '+formatfloat('###.###0',LSD54)); end;

procedure TForm7.bAlpha10Click(Sender: TObject); begin memoANOVA.Clear; v:=form6.gridTblANOVA.cells[1,3]; tabelT(v); nilaiT10:=ADOQuery1.fieldbyname('a10persen').Value; memoANOVA.Lines.Add('Nilai tabel t 10% = '+formatfloat('###.###0',strtofloat(nilaiT10)));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan pembanding :'); SE1:=sqrt((2*KTG)/jmlblok);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE1)); LSD101:=SE1*(strtofloat(nilaiT10));

memoANOVA.Lines.Add(' Nilai LSD 10% = '+formatfloat('###.###0',LSD101));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang sama):');

SE2:=sqrt(2*KTG);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE2)); LSD102:=SE2*(strtofloat(nilaiT10));

memoANOVA.Lines.Add(' Nilai LSD 10% = '+formatfloat('###.###0',LSD102));

(44)

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang berbeda):');

SE3:=sqrt((2*KTG)*(1+(1/jmlcek)));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE3)); LSD103:=SE3*(strtofloat(nilaiT10));

memoANOVA.Lines.Add(' Nilai LSD 10% = '+formatfloat('###.###0',LSD103));

memoANOVA.Lines.Add('Perbedaan antara perlakuan uji hasil terkoreksi dengan perlakuan pembanding:');

SE4:=sqrt((KTG*(jmlblok+1)*(jmlcek+1))/(jmlblok*jmlcek));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE4)); LSD104:=SE4*(strtofloat(nilaiT10));

memoANOVA.Lines.Add(' Nilai LSD 10% = '+formatfloat('###.###0',LSD104));

end;

procedure TForm7.bAlpha15Click(Sender: TObject); begin memoANOVA.Clear; v:=form6.gridTblANOVA.cells[1,3]; tabelT(v); nilaiT15:=ADOQuery1.fieldbyname('a15persen').Value; memoANOVA.Lines.Add('Nilai tabel t 15% = '+formatfloat('###.###0',strtofloat(nilaiT15)));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan pembanding :'); SE1:=sqrt((2*KTG)/jmlblok);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE1)); LSD151:=SE1*(strtofloat(nilaiT15));

memoANOVA.Lines.Add(' Nilai LSD 15% = '+formatfloat('###.###0',LSD151));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang sama):');

SE2:=sqrt(2*KTG);

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE2)); LSD152:=SE2*(strtofloat(nilaiT15));

memoANOVA.Lines.Add(' Nilai LSD 15% = '+formatfloat('###.###0',LSD152));

memoANOVA.Lines.Add('Perbedaan antara dua perlakuan uji hasil terkoreksi (dalam blok yang berbeda):');

SE3:=sqrt((2*KTG)*(1+(1/jmlcek)));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE3)); LSD153:=SE3*(strtofloat(nilaiT15));

(45)

memoANOVA.Lines.Add(' Nilai LSD 15% = '+formatfloat('###.###0',LSD153));

memoANOVA.Lines.Add('Perbedaan antara perlakuan uji hasil terkoreksi dengan perlakuan pembanding:');

SE4:=sqrt((KTG*(jmlblok+1)*(jmlcek+1))/(jmlblok*jmlcek));

memoANOVA.Lines.Add(' Nilai galat baku = '+formatfloat('###.###0',SE4)); LSD154:=SE4*(strtofloat(nilaiT15));

memoANOVA.Lines.Add(' Nilai LSD 15% = '+formatfloat('###.###0',LSD154));

end;

procedure TForm7.bPngaruhBlokClick(Sender: TObject); var i : integer;

begin

memoANOVA.Clear; for i:=1 to jmlblok do begin

PB:=(strtofloat(form5.gridTblDataCek.Cells[i,jmlcek+2]))-(strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,jmlcek+2]));

memoANOVA.Lines.add('Pengaruh Blok ke - '+floattostr(i)+' = '+formatfloat('###.###0',PB));

PengaruhBlok[i]:=PB; end;

end; end.

6. Form Uji Lanjut LSD

unit ulsd; interface uses

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

Dialogs, StdCtrls, ComCtrls, Grids,uaugmented,ublok,utabelbanding,uanova,utabelhasil, ExtCtrls,comobj; type TFormLSD = class(TForm) Label2: TLabel; Button6: TButton; Button8: TButton; Button5: TButton; GroupBox1: TGroupBox; PageControl1: TPageControl;

(46)

TabSheet1: TTabSheet; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; eLSD1: TEdit; ePilihCek1: TEdit; eAlfa1: TEdit; eNTengah1: TEdit; gridLSD1: TStringGrid; TabSheet2: TTabSheet; Label7: TLabel; Label8: TLabel; Label10: TLabel; Label19: TLabel; ePilihCek5: TEdit; eNTengah5: TEdit; eLSD5: TEdit; eAlfa5: TEdit; TabSheet3: TTabSheet; Label11: TLabel; Label12: TLabel; Label14: TLabel; Label9: TLabel; ePilihCek10: TEdit; eNTengah10: TEdit; eLSD10: TEdit; eAlfa10: TEdit; TabSheet4: TTabSheet; Label15: TLabel; Label16: TLabel; Label18: TLabel; Label13: TLabel; ePilihCek15: TEdit; eNTengah15: TEdit; eLSD15: TEdit; eAlfa15: TEdit; ComboBox5: TComboBox; bLihat: TButton; gridLSD5: TStringGrid; gridLSD10: TStringGrid; gridLSD15: TStringGrid;

procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormShow(Sender: TObject);

(47)

procedure GridToWord (Grid :TStringGrid; FormatNum :integer); procedure bLihatClick(Sender: TObject);

private { Private declarations } public { Public declarations } end; var FormLSD: TFormLSD; implementation {$R *.dfm}

procedure TFormLSD.Button6Click(Sender: TObject); begin

form1.Show; FormLSD.Hide; end;

procedure TFormLSD.Button8Click(Sender: TObject); begin

Application.Terminate end;

procedure TFormLSD.Button5Click(Sender: TObject); begin

Form7.Show; FormLSD.Hide; end;

procedure TFormLSD.FormShow(Sender: TObject); var i: integer; begin gridLSD1.Cells[0,0]:='No'; gridLSD1.Cells[1,0]:='Perlakuan Uji'; gridLSD1.Cells[2,0]:='Data Terkoreksi'; gridLSD1.Cells[3,0]:='Beda Perlakuan'; gridLSD1.Cells[4,0]:='Hasil Uji'; gridLSD5.Cells[0,0]:='No'; gridLSD5.Cells[1,0]:='Perlakuan Uji'; gridLSD5.Cells[2,0]:='Data Terkoreksi'; gridLSD5.Cells[3,0]:='Beda Perlakuan'; gridLSD5.Cells[4,0]:='Hasil Uji';

(48)

gridLSD10.Cells[0,0]:='No'; gridLSD10.Cells[1,0]:='Perlakuan Uji'; gridLSD10.Cells[2,0]:='Data Terkoreksi'; gridLSD10.Cells[3,0]:='Beda Perlakuan'; gridLSD10.Cells[4,0]:='Hasil Uji'; gridLSD15.Cells[0,0]:='No'; gridLSD15.Cells[1,0]:='Perlakuan Uji'; gridLSD15.Cells[2,0]:='Data Terkoreksi'; gridLSD15.Cells[3,0]:='Beda Perlakuan'; gridLSD15.Cells[4,0]:='Hasil Uji'; ComboBox5.Clear;

for i:=1 to form4.gridInputCek.RowCount-1 do

ComboBox5.Items.Add(Form5.gridTblDataCek.Cells[0,i]); combobox5.Text := '--- Pilih Perlakuan Pembanding ---'; end;

procedure TFormLSD.ComboBox5Change(Sender: TObject); var i,a:integer; begin gridLSD1.RowCount:=form7.gridTblHasil.RowCount ; gridLSD5.RowCount:=form7.gridTblHasil.RowCount ; gridLSD10.RowCount:=form7.gridTblHasil.RowCount ; gridLSD15.RowCount:=form7.gridTblHasil.RowCount ; for i:=1 to form7.gridTblHasil.RowCount-1 do

begin gridLSD1.Cells[0,i]:=inttostr(i); gridLSD5.Cells[0,i]:=inttostr(i); gridLSD10.Cells[0,i]:=inttostr(i); gridLSD15.Cells[0,i]:=inttostr(i); gridLSD1.Cells[1,i]:= form7.gridTblHasil.Cells[0,i]; gridLSD5.Cells[1,i]:=form7.gridTblHasil.Cells[0,i]; gridLSD10.Cells[1,i]:=form7.gridTblHasil.Cells[0,i]; gridLSD15.Cells[1,i]:=form7.gridTblHasil.Cells[0,i]; gridLSD1.Cells[2,i]:= form7.gridTblHasil.Cells[3,i]; gridLSD5.Cells[2,i]:=form7.gridTblHasil.Cells[3,i]; gridLSD10.Cells[2,i]:=form7.gridTblHasil.Cells[3,i]; gridLSD15.Cells[2,i]:=form7.gridTblHasil.Cells[3,i]; gridLSD1.Cells[3,i]:= floattostr(abs(strtofloat(form7.gridTblHasil.Cells[3,i])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,ComboBox5.itemindex+1])));

(49)

gridLSD5.Cells[3,i]:=floattostr(abs(strtofloat(form7.gridTblHasil.Cells[3,i])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,ComboBox5.itemindex+1]))); gridLSD10.Cells[3,i]:=floattostr(abs(strtofloat(form7.gridTblHasil.Cells[3,i])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,ComboBox5.itemindex+1]))); gridLSD15.Cells[3,i]:=floattostr(abs(strtofloat(form7.gridTblHasil.Cells[3,i])-strtofloat(form5.gridTblDataCek.Cells[jmlblok+2,ComboBox5.itemindex+1]))); if strtofloat(gridLSD1.Cells[3,i])> LSD14 then gridLSD1.Cells[4,i]:='Berbeda Nyata'

else gridLSD1.Cells[4,i]:='Tidak Berbeda Nyata'; if strtofloat(gridLSD5.Cells[3,i])> LSD54 then gridLSD5.Cells[4,i]:='Berbeda Nyata'

else gridLSD5.Cells[4,i]:='Tidak Berbeda Nyata'; if strtofloat(gridLSD10.Cells[3,i])> LSD104 then gridLSD10.Cells[4,i]:= 'Berbeda Nyata'

else gridLSD10.Cells[4,i]:='Tidak Berbeda Nyata'; if strtofloat(gridLSD15.Cells[3,i])> LSD154 then gridLSD15.Cells[4,i]:='Berbeda Nyata'

else gridLSD15.Cells[4,i]:='Tidak Berbeda Nyata'; //1%

eAlfa1.Text:='1 %';

eLSD1.Text:=formatfloat('###.###0',LSD14); ePilihCek1.Text:=ComboBox5.Text;

for a:=1 to jmlcek do

if ComboBox5.ItemIndex=a-1 then eNTengah1.Text:=form5.gridTblDataCek.Cells[jmlblok+2,a]; //5% eAlfa5.Text:='5 %'; eLSD5.Text:=formatfloat('###.###0',LSD54); ePilihCek5.Text:=ComboBox5.Text;

for a:=1 to jmlcek do

if ComboBox5.ItemIndex=a-1 then eNTengah5.Text:=form5.gridTblDataCek.Cells[jmlblok+2,a]; //10% eAlfa10.Text:='10 %'; eLSD10.Text:=formatfloat('###.###0',LSD104); ePilihCek10.Text:=ComboBox5.Text;

for a:=1 to jmlcek do

if ComboBox5.ItemIndex=a-1 then eNTengah10.Text:=form5.gridTblDataCek.Cells[jmlblok+2,a]; //15% eAlfa15.Text:='15 %'; eLSD15.Text:=formatfloat('###.###0',LSD154); ePilihCek15.Text:=ComboBox5.Text;

for a:=1 to jmlcek do

if ComboBox5.ItemIndex=a-1 then eNTengah15.Text:=form5.gridTblDataCek.Cells[jmlblok+2,a];

(50)

end; end;

procedure TFormLSD.GridToWord (Grid :TStringGrid; FormatNum :integer); var x :integer ; y,i: integer ; Word : Olevariant ; GColCount : integer ; GRowCount : integer; begin Word := CreateOLEobject('Word.Application') ; Word.Visible := True ; Word.Documents.Add ; GColCount := Grid.colcount ; GRowCount := Grid.rowcount; Word.ActiveDocument.Range.Font.Size := Grid.Font.Size; Word.ActiveDocument.PageSetup.Orientation := 1 ; Word.ActiveDocument.Tables.add( Word.ActiveDocument.Range,GRowCount+1,GColCount); //Word.ActiveDocument.Range.InsertAfter('Date ' + Datetimetostr(Now)+#13); Word.ActiveDocument.Range.InsertAfter('Data Cek: '+combobox5.text);

Word.ActiveDocument.Range.Tables.Item(1).AutoFormat(FormatNum,1,1,1,1,1,0,0 ,0,1); for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(1,y).Range.InsertAfter(Grid.cells[y-1,0]) ; x :=1 ; i:=1; begin while i<grid.rowcount do begin x := x + 1 ; for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(x,y).Range.InsertAfter(Grid.Cells[y-1,i]); i:=i+1; end; end;

(51)

Word.ActiveDocument.Range.Tables.Item(1).UpdateAutoFormat ; end;

procedure TFormLSD.bLihatClick(Sender: TObject); begin

if PageControl1.ActivePageIndex = 0 then GridToWord(gridLSD1,3)

else if PageControl1.ActivePageIndex = 1 then GridToWord(gridLSD5,3)

else if PageControl1.ActivePageIndex = 2 then GridToWord(gridLSD10,3)

else if PageControl1.ActivePageIndex = 3 then GridToWord(gridLSD15,3);

end; end.

(52)

LAMPIRAN 4 : PETUNJUK PEMAKAIAN PROGRAM

Berikut ini adalah langkah – langkah yang harus dilakukan untuk menggunakan program aplikasi Augmented Design – RBD :

1. Pada form Input Data Awal, ada tiga langkah yang bisa user pilih :

- Isi jumlah perlakuan pembanding / cek, jumlah perlakuan yang diuji, dan masukkan blok data yang diinginkan, lalu klik tombol Lihat Blok Data, maka program aplikasi akan menampilkan form Blok Data. Jika user ingin mengubah input jumlah perlakuan cek, ganti jumlah cek yang diinginkan, lalu klik tombol Hitung Blok, sehingga program aplikasi akan menampilkan blok minimal yang baru , atau,

- Klik pada tombol Langsung Buka File ARBD apabila ingin langsung membuka file percobaan yang pernah disimpan dalam extension (.arbd) dan program aplikasi akan langsung menampilkan isi file tersebut pada form berikutnya, yaitu form Blok Data.

- Klik pada tombol Langsung Buka File Excel apabila ingin langsung membuka file percobaan yang pernah disimpan dalam extension (.xls) dan program aplikasi akan langsung menampilkan isi file tersebut pada form berikutnya, yaitu form Blok Data.

2. Pada form Blok Data, ada dua langkah yang bisa user pilih :

- tidak menginput nama perlakuan uji dan perlakuan cek yang ingin diamati dalam percobaan, dan membiarkan program aplikasi menampilkan default input berupa alphabet untuk nama cek dan angka untuk nama uji, atau,

Referensi

Dokumen terkait

Penelitian ini dilakukakan untuk mengetahui unjuk kerja dari motor diesel Multi Swirl Combustion System (MSCS) Piston Chamber saat menggunakan bahan bakar solar dari daur ulang

Untuk pemanfaatan thread ini sudah diaplikasikan sekarang dengan komputer yang memiliki lebih dari satu prosessor.. Ada juga komputer yang prossesornya satu namun

belum bisa menggunting gambar daun bayam Anak bisa menyanyi lagu “Sayur bayam menyehatkan”, menggambar, mewarnai daun bayam di kertas bisa menggunting gambar daun

[r]

Universiti menetapkan seorang pemegang amanah tidak boleh memiliki lebih dari 3 Akaun Amanah di bawah kawalannya; kecuali bagi kes Akaun Amanah Fakulti/PTj yang

Sinkronisasi antara teknologi GPS dengan kamera pada ponsel memungkinkan pengguna menghasilkan photo yang bisa digunakan untuk mengetahui lokasi foto dari pengguna,

Data yang digunakan pada penelitian ini merupakan data sekunder yaitu Laporan Keuangan Daerah dari tahun 2008 dan 2009 pada 35 Pemerintah Kabupaten/Kota yang laporan

Dengan demikian maka H0 ditolak dan Ha2 diterima, hal ini menunjukkan bahwa terdapat pengaruh yang yang signifikan secara parsial antara lingkungan kerja karyawan