L. 1 LAMPIRAN 1 : STRUKTUR INSTANSI KEPALA BALAI
KOORDINATOR PROGRAM
KOORDINATOR PROYEK
SUB. BAGIAN TATA USAHA
SEKSI PELAYANAN TEKNIK
KELTI SUMBER DAYA GENETIK
LAB HASIL GEN & GENETIKA
LAB BIOLOGI MOLEKULER & REKAYASA GENETIKA
KELTI BIOLOGI MOLEKULAR
LAB BIOSAFETY COINTAINMENT
KELTI REPRODUKSI & PERTUMBUHAN
LAB BIOLOGI SEKULER & KULTUR JARINGAN
LAB DIAGNOSTIK & MIKROSKOP ELEKTRON
SEKSI JASA PENELITIAN
KELTI REKAYASA PROTEIN & IMMUNOLOGI
LAB BIOPESTISIDA
LAB BIOKIMIA & ENZIMATIK
KELTI MIKROBIOLOGI & TEKNOLOGI PROSES
LAB MIKROBIOLOGI TANAH
LAB PILOT PLANT
LAB DNA REKOMBINAN
L. 2 LAMPIRAN 2 : DATA PERCOBAAN PENGAMATAN BOBOT BIJI JAGUNG
Blok 1
2
No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Nama varietas Wisanggeni Tongkol 641 Penjalinan 849 Nakula Krasekan 1126 Parikesit 1860 G. Kretek 1904 Bisma Doke 2001 Pulut 2005 Campolaga 2009 Kalingga J. Putih 2021 Masiga 2025 Arjuna Leha – leha 2026 Dalo – dalo 2027 Antasena Daco 2030 G. Madura 2048 Arjuna L. Putih 2065 Nakula Manado Putih 2072 2113 2113 Ketip 2118 Antasena Telango 2067 Gelatik 2174 Bisma
Bobot Biji 1617.6 316.2 611.3 1293.5 688.4 1108.6 808.9 1912.8 439.5 1117.6 1010.6 767.0 1235.1 1174.8 1846.0 1125.1 837.3 2371.6 641.9 631.9 2728.3 1680.0 2011.4 1071.7 1321.0 1642.9 2406.4 628.0 788.5 1895.3
Blok 2
3
4
No 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Nama Varietas G. Sili 2194 Arkani Kng 2376 Philip SS 2383 Kalingga Lena mutu 2427 2586 2586 Wiyasa 2587 Abimanyu 2604 Nakula Bayu 2612 IESCN# 2619 Bisma CM-90 2663 L-NTT 3037 Antasena Ketan Kakian 3058 L. Satuabrang 3061 Putik 3074 Arjuna Putik 3075 Putik 3077 3079 3079 Kalingga 3104 3104 L. Sokong 3106 Antasena Lopok 3108 Putik 3112 Bisma Putik 3115
Bobot Biji 789.7 1020.0 1295.6 3207.4 957.8 1701.3 1770.4 981.1 2307.0 2192.1 1885.5 1896.7 1149.2 1228.1 1720.6 1618.8 1941.0 1473.6 2816.8 648.0 715.6 811.3 931.6 1398.4 785.9 2135.9 903.2 1857.0 2752.7 905.9
Blok 4
5
No 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
Nama Varietas Putik 3118 L. Lepok Daya 3170 Arjuna L. Jantuk 3177 L. Aur 3204 L. Telaga Seg 3206 Kalingga G. Medok 3291 Paseh 3292 Nakula L. Majalengka 3296 G. Kodok 3304 Pirta 3311 G. Spokal 3314 Kalingga Ontong Sili 3315 EEY-DMR-Cc 3324 Antasena EW DMR-Po 3325 YCPG85 3361 Tuxpeno 1 Ht 3364 CM-105 3394 Bisma Super Comp. 3397 Shweta(w) 3417 A 503 N 3463 Nakula DMR CONVT 3469 Arjuna Latung Roje 3510
Bobot Biji 1371.7 1647.5 2093.9 2374.6 1305.5 345.6 2316.1 1300.5 1494.7 747.8 1326.3 842.2 1791.5 545.1 1372.2 438.7 1386.5 4211.0 1567.3 1710.7 1742.9 1087.6 2519.3 1689.9 1625.7 981.1 831.1 864.5 1911.9 1357.8
L. 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;
L. 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 showmessage('Jumlah Uji tidak boleh lebih besar dari 200');
L. 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
14 then begin showmessage('Jumlah blok tidak boleh lebih besar dari: 14'); blihatblokdata.Enabled := false; eblok.SelectAll; end
L. 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.
L. 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); procedure GridToWord(Grid :TStringGrid ; FormatNum :integer);
L. 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.RowCount1]='')or(gridInputCek.Cells[0,gridInputCek.RowCount1]='')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; procedure TForm4.FormShow(Sender: TObject);
L. 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.rowcount1])<1)or(length(gridinputuji.Cells[0,gridinputuji.rowcount1])<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;
L. 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'') then begin
L. 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'') 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] di listbox, dibalikin ke input uji.. end; end;
//nama uji yang ada
L. 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); baru if (buffer=-1 )then error showmessage('Tidak bisa simpan file!'); FileClose(buffer); end;
//kl file blm ada, buat file //buffer=-1 kalo buffernya
L. 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
L. 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;
L. 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 ;
L. 16 i:=1; begin while i
L. 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;
L. 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;
L. 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;
L. 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} procedure TForm5.bLihatTabelANOVAClick(Sender: TObject);
L. 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;
L. 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 ; Word : Olevariant ;
L. 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
L. 24
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls,uAugmented,uBlok, DBGrids, 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
DB,
L. 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';
L. 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)+((jmlblok1)*(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); gridTblANOVA.Cells[3,1]:=formatfloat('##0.####',KTB);
L. 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];
L. 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
L. 29 x := x + 1 ; for y := 1 to GColCount do Word.ActiveDocument.Tables.Item(1).Cell(x,y).Range.InsertAfter(Grid.Cells[y1,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
L. 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.
L. 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;
L. 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;
L. 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
L. 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 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
//mulai algoritma
L. 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
L. 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 ab 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; end
L. 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 showmessage('Pilih dulu variabel yang ingin dibandingkan');
L. 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
L. 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])));
L. 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 );
:=
:=
L. 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
L. 42 nilaiT1:=ADOQuery1.fieldbyname('a1persen').Value; memoANOVA.Lines.Add('Nilai tabel '+formatfloat('###.###0',strtofloat(nilaiT1)));
t
1%
=
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 '+formatfloat('###.###0',strtofloat(nilaiT5)));
t
5%
=
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(' Nilai LSD 5% = '+formatfloat('###.###0',LSD51));
L. 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 '+formatfloat('###.###0',strtofloat(nilaiT10)));
10%
=
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));
L. 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 '+formatfloat('###.###0',strtofloat(nilaiT15)));
15%
=
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));
L. 45 memoANOVA.Lines.Add(' '+formatfloat('###.###0',LSD153));
Nilai
LSD
15%
=
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;
L. 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); procedure ComboBox5Change(Sender: TObject);
L. 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';
L. 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])));
L. 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 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 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 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 eNTengah15.Text:=form5.gridTblDataCek.Cells[jmlblok+2,a];
then
then
then
then
L. 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
L. 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.
L. 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,
L. 53 -
menginput nama perlakuan uji dan perlakuan cek yang ingin diamati dalam percobaan dengan mengklik tombol Input Data Manual
3. Masih pada form Blok Data, setelah menentukan input nama cek dan input nama uji, klik tombol acak untuk mengacak perlakuan uji dan perlakuan cek yang telah diinput tadi, sehingga program aplikasi menampilkan hasil pengacakan di grid sebelah kanan form. Hasil pengacakan dapat disimpan dalam extension .arbd, dengan mengklik tombol Simpan File ARBD. Perlakuan yang telah diacak dan menempati blok – blok tertentu pada program aplikasi, dijadikan pedoman untuk melakukan pengelompokan perlakuan pada lahan percobaan. 4. Masih pada form Blok Data, setelah melakukan percobaan, hasil dari percobaan dapat diinput kembali pada kolom nilai blok, yang ada pada grid hasil pengacakan di sebelah kanan form. Jika user sudah keluar dari program aplikasi, user dapat menampilkan kembali file hasil pengacakan tersebut dengan mengklik tombol Buka File ARBD / Buka File Excel. Kemudian bukalah file dalam extension .arbd / extension .xls yang telah disimpan sebelumnya, namun ingin diinput nilai hasil percobaan yang telah dilakukan. Setelah menginput nilai hasil percobaan, hasil percobaan dapat disimpan kembali dengan nama yang sama, atau dengan nama baru. Proses Input Data Awal dan Input Data Percobaan dalam program aplikasi telah diselesaikan. Untuk memulai proses pengolahan data, klik tombol lihat tabel Data Perlakuan Pembanding. Maka program aplikasi akan menampilkan form Tabel Data Perlakuan Pembanding. 5. Pada form Tabel Data Perlakuan Pembanding, program aplikasi menampilkan form Tabel Data Perlakuan Pembanding. Klik tombol Uji F, sehingga program aplikasi akan menampilkan form uji F.
L. 54 6. Pada form uji F, program aplikasi menampilkan tabel ANOVA dari hasil pengolahan data percobaan yang diinput user dan juga hasil uji F. Jika user ingin melihat hasil uji F, klik page control yang diinginkan (1% atau 5%), kemudian klik
radiobutton
pada
radiogroup
yang
diinginkan
(perlakuan
atau
pengelompokan), maka program aplikasi akan menampilkan hasil pengolahan dan analisis berupa nilai F Hitung, nilai F Tabel, dan Hasil Uji F. 7. Masih pada form uji F, klik tombol Tabel Data Terkoreksi & Uji Lanjut, maka program aplikasi akan menampilkan form tabel data terkoreksi dan uji lanjut. 8. Pada form Tabel Data Terkoreksi dan Uji Lanjut, program aplikasi menampilkan informasi nilai LSD, pengaruh blok, dan informasi lainnya yang berhubungan dengan uji lanjut LSD. Selain itu, ditampilkan juga tabel data terkoreksi dari perlakuan uji, tabel kesimpulan perlakuan uji minimum dan maksimum pada masing – masing blok, dan uji lanjut semua kombinasi. 9. Masih pada form Tabel Data Terkoreksi dan Uji Lanjut, jika user ingin melihat nilai – nilai LSD dan informasi lainnya yang bersangkutan, user dapat mengklik tombol Alpha = 1%, Alpha = 5%, Alpha = 10%, atau Alpha = 15% sehingga program aplikasi akan menampilkan informasi – informasi tersebut pada memo, dengan tampilan yang digolongkan berdasarkan taraf nyata (alpha) yang diklik user. Jika user ingin menampilkan informasi pengaruh blok, klik tombol Pengaruh Blok. 10. Masih pada form Tabel Data Terkoreksi dan Uji Lanjut, jika user ingin melihat hasil uji lanjut semua kombinasi, pilih pada combo box, jenis kombinasi uji lanjut yang ingin diketahui. Kemudian klik salah satu nama perlakuan pada listbox kiri dan klik nama perlakuan lain yang ingin dibandingkan pada listbox
L. 55 kanan. Klik tombol Pilih sehingga program aplikasi dapat memvalidasi apakah pilihan user memenuhi kriteria kombinasi atau tidak. Jika memenuhi kriteria, hasil uji lanjut akan ditampilkan pada page control. Untuk mengetahui hasil uji lanjut semua kombinasi yang telah dipilih berdasarkan taraf nyata yang diinginkan, klik page control yang sesuai (1%, 5%, 10%, atau 15%), maka program aplikasi akan menampilkan beda perlakuan, nilai LSD, dan hasil uji lanjut semua kombinasi. Klik tombol uji lanjut LSD, maka program aplikasi akan menampilkan form uji lanjut LSD. 11. Pada form uji lanjut LSD, klik pada combo box, perlakuan pembanding yang ingin dibandingkan. Maka program aplikasi akan menampilkan pada page control, hasil uji lanjut LSD berdasarkan perlakuan pembanding yang dipilih user. Klik page control yang diinginkan (1%, 5%, 10%, atau 15%), untuk menampilkan hasil uji lanjut LSD sesuai dengan taraf nyata yang diinginkan. Pada page control juga ditampilkan informasi – informasi lainnya yang berkaitan dengan uji lanjut LSD, yaitu : taraf nyata yang ditentukan, nilai LSD, perlakuan pembanding yang dipilih, dan nilai tengah dari perlakuan pembanding tersebut. Klik tombol Form Awal untuk kembali ke form Input Data Awal.
Tombol – tombol lain yang ada pada program aplikasi : -
tombol LIHAT DI EXCEL Klik tombol ini untuk menampilkan di Microsoft Excel, informasi nama perlakuan cek, nama perlakuan uji, dan hasil pengacakan serta input data hasil percobaan yang telah dilakukan.
-
tombol LIHAT DI WORD
L. 56 Klik tombol ini untuk menampilkan di Microsoft Word, informasi yang terdapat pada form dimana tombol ini berada. Melalui Microsoft Word, informasi yang ditampilkan, yang dikirim oleh program aplikasi, dapat disimpan, diedit, dan dicetak untuk kepentingan dokumentasi dan pembuatan laporan percobaan. -
tombol Kembali Klik tombol ini untuk kembali ke form sebelumnya, dari form dimana tombol ini berada.
-
tombol Keluar Klik tombol ini untuk keluar dari program aplikasi.
L. 57