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
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
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;
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
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
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.
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);
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;
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;
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
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;
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);
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
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;
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 ;
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;
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;
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;
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;
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}
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;
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 ;
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;
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
{ 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';
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);
//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];
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
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
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.
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;
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;
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
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
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
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;
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
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
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])));
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 );
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);
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));
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));
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));
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;
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);
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';
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])));
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];
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;
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.
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,