modul untuk praktikum delphi

45
Praktikum 1 PRAKTIKUM PEMROGRAMAN BORLAND DELPHI 1.1 Sekilas Borland Delphi Delphi adalah perangkat pengembangan aplikasi yang berjalan di sistem operasi Windows. Delphi merupakan kelanjutan dari Turbo Pascal yang merupakan produk Borland, sekarang telah berganti menjadi Inprise Corporation. Delphi diluncurkan pertama kali pada tahun 1995. Borland menyatakan bahwa Delphi merupakan alat yang dapat digunakan untuk Rapid Application Development (RAD), yang hingga kini tetap terbukti menjadi bahasa pemrograman yang paling baik. Dengan keberhasilan ini maka Borland (sebelum menjadi Inprise), mengembangkan produk lain yang mirip yakni C++Builder, Jbuilder (Java Language). Dengan demikian jika kita telah menguasai Delphi dengan mudah kita dapat berpindah menggunakan bahasa lainnya yaitu C++Builder atau Jbuilder. Kedua produk ini sengaja dibuat memiliki IDE yang sama dengan Delphi. Selain sebagai aplikasi biasa dengan mudah Delphi membuat aplikasi untuk internet. Seperti Win-CGI (Windows Common Gateway Interface), ISAPI (Internet Service Application Program Interface) . Bahkan Borland menyatakan sebagai satu langkah menuju ActiveX. Seperti dengan mudah membuat sebuah aplikasi ActiveForm yang dapat berjalan pada Internet Explorer sebagai suatu aplikasi biasa. Selain itu Delphi dapat membuat aplikasi MIDAS, pada aplikasi ini kita harus membuat dua lapis, lapis pertama adalah aplikasi Server yang melayani permintaan aplikasi kedua yaitu Client. Delphi dapat mengakses database Paradox, xBase, MS-Access juga dengan menggunakan ODBC Delphi dapat mengakses database lain seperti Oracle, Sybase, Interbase, DB2, MS-SQL, MySQL. Sehingga kita dapat berpindah dari satu database ke database lain tanpa perlu mengubah aplikasi secara keseluruhan. 1.2 Microsoft Access Microsoft Access merupakan program paket Microsoft office untuk pengolahan database, lengkap dengan fasilitas query atau permintaan data, form yang berfungsi untuk menginput data dan report untuk menampilkan data. Serta bisa ditambah dengan fasilitas – fasilitas lain, seperti switchboard yang berfungsi untuk navigasi program, serta dapat dikembangkan dengan menggunakan kode pemrograman visual basic. 1. Membuat Tabel dan Memasukkan Records Keyword : ALTER TABLE INSERT INTO CREATE TABLE SELECT INTO DELETE UPDATE Definisi - ALTER TABLE : keyword yang digunakan untuk memodifikasi column dan constraints dari tabel yang sudah dibuat

Upload: rale-ku

Post on 30-Jan-2016

268 views

Category:

Documents


0 download

DESCRIPTION

panduan untuk praktikum delphi

TRANSCRIPT

Page 1: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

PRAKTIKUM PEMROGRAMAN BORLAND DELPHI

1.1 Sekilas Borland Delphi

Delphi adalah perangkat pengembangan aplikasi yang berjalan di sistem operasi Windows. Delphi merupakan

kelanjutan dari Turbo Pascal yang merupakan produk Borland, sekarang telah berganti menjadi Inprise Corporation.

Delphi diluncurkan pertama kali pada tahun 1995.

Borland menyatakan bahwa Delphi merupakan alat yang dapat digunakan untuk Rapid Application Development

(RAD), yang hingga kini tetap terbukti menjadi bahasa pemrograman yang paling baik. Dengan keberhasilan ini maka

Borland (sebelum menjadi Inprise), mengembangkan produk lain yang mirip yakni C++Builder, Jbuilder (Java Language).

Dengan demikian jika kita telah menguasai Delphi dengan mudah kita dapat berpindah menggunakan bahasa

lainnya yaitu C++Builder atau Jbuilder. Kedua produk ini sengaja dibuat memiliki IDE yang sama dengan Delphi.

Selain sebagai aplikasi biasa dengan mudah Delphi membuat aplikasi untuk internet. Seperti Win-CGI

(Windows Common Gateway Interface), ISAPI (Internet Service Application Program Interface) . Bahkan Borland

menyatakan sebagai satu langkah menuju ActiveX. Seperti dengan mudah membuat sebuah aplikasi ActiveForm yang

dapat berjalan pada Internet Explorer sebagai suatu aplikasi biasa. Selain itu Delphi dapat membuat aplikasi MIDAS,

pada aplikasi ini kita harus membuat dua lapis, lapis pertama adalah aplikasi Server yang melayani permintaan aplikasi

kedua yaitu Client.

Delphi dapat mengakses database Paradox, xBase, MS-Access juga dengan menggunakan ODBC Delphi dapat

mengakses database lain seperti Oracle, Sybase, Interbase, DB2, MS-SQL, MySQL. Sehingga kita dapat berpindah dari

satu database ke database lain tanpa perlu mengubah aplikasi secara keseluruhan.

1.2 Microsoft Access

Microsoft Access merupakan program paket Microsoft office untuk pengolahan database, lengkap dengan

fasilitas query atau permintaan data, form yang berfungsi untuk menginput data dan report untuk menampilkan data.

Serta bisa ditambah dengan fasilitas – fasilitas lain, seperti switchboard yang berfungsi untuk navigasi program, serta

dapat dikembangkan dengan menggunakan kode pemrograman visual basic.

1. Membuat Tabel dan Memasukkan RecordsKeyword :

ALTER TABLE INSERT INTO CREATE TABLE SELECT INTODELETE UPDATE

Definisi- ALTER TABLE : keyword yang digunakan untuk memodifikasi column dan constraints dari tabel yang

sudah dibuatConstraint : digunakan untuk membatasi nilai yang akan diinputkan ke dalam field dan untuk menetapkan relasiantar tabel

- CREATE TABLE : keyword yang digunakan memberi perintah pada database untuk membuat sebuah tabel baruData Type : menentukan jenis tipe data tiap kolom/field

- DELETE: statement yang digunakan untuk menghapus record dalam tabel- INSERT : statement yang digunakan untuk menyisipkan/memasukan data ke dalam tabel- UPDATE : statement yang digunakan untuk memperbaharui record yang ada dalam table

CREATE TABLE Syntax CREATE TABLE Tablename (

Columnname Datatype Field Size, [NULL | NOT NULL][optional constraints]

);

Page 2: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 2

Tipe Data

Page 3: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 3

Contoh 1 :

CREATE TABLE Toys(

ToyID INTEGER CONSTRAINT ToyPk PRIMARY KEY, ToyName CHAR (30) NOT NULL,Price MONEY NOT NULL,Description CHAR (40) NULL

);

Untuk melihat hasil tabel tersebut ketik kode berikut :

SELECT * FROM Toys;

Contoh 2 :

CREATE TABLE Manufacturers(

ManufacturerID INTEGER CONSTRAINT ManfID PRIMARY KEY, ToyID INTEGER NOT NULL,CompanyName CHAR (50) NOT NULL, Address CHAR (50) NOT NULL,City CHAR (20) NOT NULL,State CHAR (2) NOT NULL, Postalcode CHAR (5) NOT NULL, Areacode CHAR (3) NOT NULL,Phonenumber CHAR (8) NOT NULL UNIQUE,CONSTRAINT ToyFk FOREIGN KEY (ToyID) REFERENCES Toys (ToyID) ON UPDATE CASCADEON DELETE CASCADE

);

Menambah Constraint ke dalam tableSyntax :

ALTER TABLE TablenameADD COLUMN ColumnName ColumnType (Size) ColumnConstraint | DROP COLUMN ColumnName |ADD CONSTRAINT ColumnConstraint |DROP CONSTRAINT ColumnConstraint;

Contoh 3 :ALTER TABLE ToysADD CONSTRAINT ToyNameUnique UNIQUE (ToyName);

ALTER TABLE ToysDROP CONSTRAINT ToyNameUnique;

Contoh 4 :ALTER TABLE ToysADD CONSTRAINT CheckAmountCHECK (Price > 3);

ALTER TABLE ToysDROP CONSTRAINT CheckAmount;

Menambahkan constraint PRIMARY KEY, FOREIGN KEY, dan NOT NULL Syntax

ALTER TABLE TablenameADD CONSTRAINT ConstraintName PRIMARY KEY (ColumnName); ALTER TABLE TablenameADD CONSTRAINT ConstraintName FOREIGN KEY (ColumnName) REFERENCES LinkedTableName (PrimaryKey);ALTER TABLE TablenameALTER COLUMN ColumnName Datatype (Field size) NOT NULL;

Page 4: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 4

Memasukan DataSyntax :

INSERT INTO Tablename [(ColumnNames, ...)] VALUES (values, ...);

Contoh 5 :INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (1, 'ToyTrain1', 11.00, 'Red/blue battery powered train');

INSERT INTO Toys (ToyID, ToyName, Price, Description)VALUES (2, 'ToyTrain2', 11.00, 'Green/red/blue battery powered train');

INSERT INTO Toys (ToyID, ToyName, Price, Description)VALUES (3, 'ElectricTrain', 15.00, 'Red/white AC/DC powered train');

INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (4, 'LivingDoll1', 12.00, 'Asian American Doll');

INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (5, 'LivingDoll2', 12.00, 'African American Doll');

Menampilkan Data SELECT * FROM Toys;

Memasukan Data tanpa menuliskan nama kolomContoh 6 :

INSERT INTO ToysVALUES (6, 'Doll House', 17.00, 'Grand Town House');

Memasukan nilai NULL Contoh 7 :

INSERT INTO ToysVALUES (7, 'Doll/Town House', 15.00, NULL);

Mengcopy records dari satu table ke table lainContoh 8 :

CREATE TABLE ToysTest(ToyID CHAR (7) CONSTRAINT ToyPk PRIMARY KEY, ToyName CHAR (30) NOT NULL,Price MONEY NOT NULL,Description CHAR (40) NULL);

Copy Data :INSERT INTO ToysTest (ToyID, ToyName, Price, Description) SELECT ToyID, ToyName, Price, Description

FROM Toys;

Tampilkan Data : SELECT *FROM ToysTest;

Menyalin Records dari Satu Tabel ke Tabel Baru Bersamaan

Contoh 9 :SELECT ToyID, ToyName, Price, DescriptionINTO Toys2FROM Toys;

Memperbarui recordsSyntax :

UPDATE TablenameSET ColumnName = ValueWHERE Condition;

Page 5: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 5

Contoh 10 :UPDATE ToysSET Description = ‘Town House’WHERE ToyID = 7;

Menghapus records : Syntax :

DELETE FROM TablenameWHERE Condition

Contoh 11 :DELETE FROM Toys2WHERE ToyID = 7;

2. Mengambil / Menampilkan Records

KeywordsAS ORDER BY ASC SELECTDESC TOPDISTINCT TOP PERCENT DISTINCTROW

Definisi :AS - Digunakan untuk menetapkan nama alternatif untuk sebuah kolom atau tabel. ASC - Digunakan untuk mengurutkan nilai-nilai kolom dalam urutan ascendingDESC - Digunakan untuk mengurutkan kolom nilai-nilai dalam urutan descending DISTINCT - Digunakan untuk menampilkan nilai-nilai unik di kolom. DISTINCTROW - Digunakan untuk menghilangkan record duplikat.ORDER BY - Digunakan untuk menyortir record secara ascending atau descendingSELECT - Digunakan untuk mengambil record dari database.TOP - Digunakan untuk menampilkan record yang diambil dari bagian atas atau bagian bawah table menggunakanORDER BYTOP PERCENT - Digunakan untuk menampilkan persentase record yang diambil dari bagian atas atau bagian bawah table menggunakan ORDER BY

Pernyataan Select : Syntax :

SELECT Columnname(s) FROM TableName(s);

Contoh 1 :SELECT ToyName, PriceFROM Toys;

Data diurut secara Descending : Contoh 2 :

SELECT *FROM ToysORDER BY ToyName DESC;

Data diurut secara Ascending : Contoh 3 :

SELECT * FROM ToysORDER BY ToyName;SELECT * FROM ToysORDER BY ToyName ASC;

Buat Tabel Employees :CREATE TABLE Employees(

SocialSecNum CHAR (11) CONSTRAINT NumPk PRIMARY KEY, Firstname CHAR (50),Lastname CHAR (50), Address CHAR (50),

Page 6: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 6

Zipcode CHAR (10), Areacode CHAR (3), PhoneNumber CHAR (8)

);Isi terlebih dahulu datanya minimal 5 buah data!

Data diurut berdasarkan beberapa kolom : Contoh 4 :

SELECT Lastname, FirstnameFROM EmployeesORDER BY Lastname, Firstname;

Data diurut menggunakan nomor urutan kolom : Contoh 5 :

SELECT *FROM EmployeesORDER BY 3, 2;

Contoh 6 :SELECT Lastname, Firstname, PhoneNumberFROM EmployeesORDER BY 1, 2;

Penanganan Nilai Ganda / Duplikat

Menggunakan DISTINCT Keyword : Contoh 7 :

SELECT DISTINCT PriceFROM Toys;

TOP Keyword : Contoh 8 :

SELECT TOP 3 CompanyName, PostalCodeFROM ManufacturersORDER BY PostalCode DESC;

Contoh 9 :SELECT TOP 3 CompanyName, PostalCodeFROM ManufacturersORDER BY PostalCode;

TOP PERCENT Keyword : Contoh 10 :

SELECT TOP 50 PERCENT CompanyNameFROM ManufacturersORDER BY CompanyName;

Contoh 11 :SELECT TOP 50 PERCENT CompanyNameFROM ManufacturersORDER BY CompanyName DESC;

3. Menyaring Record

KeywordsWHERE

DefinisiOperator Pembanding : Digunakan untuk melakukan perbandingan antara ekspresiExpression : Tipe data apapun yang mengembalikan sebuah nilaiLogical operators : Digunakan untuk menguji kebenaran dari beberapa kondisi. Klausa WHERE : Digunakan untuk menyaring recordWildcard characters : Karakter khusus yang digunakan untuk mencocokkan bagian-bagian dari sebuah nilai

Page 7: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 7

Operator Pembanding

Logical Operators

Operator Precedence

Contoh 1 :SELECT SerialNum, Brand, DepartmentFROM ComputersWHERE (Brand = 'Dell' OR Brand = 'Gateway') AND OfficeNumber < 130;

LIKE Operator

Contoh 2 :SELECT * FROM ToolsWHERE Manufacturer LIKE 'D*' AND Location LIKE '[A-C]';

Page 8: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 8

Contoh 3 :SELECT * FROM ToolsWHERE Manufacturer LIKE '*H';

Contoh 4 :SELECT * FROM ToolsWHERE Manufacturer LIKE '*Dewalt*';

Contoh 5 :SELECT * FROM ToolsWHERE Manufacturer LIKE 'Bos?h';

Contoh 6 :SELECT * FROM ToolsWHERE ToolID LIKE '1#';

Contoh 7 :SELECT * FROM ToolsWHERE Location LIKE '[!A-C]';

Contoh 8 :SELECT * FROM ToolsWHERE ToolID LIKE '[!1-5]';

Contoh 9 :SELECT * FROM ToolsWHERE ToolID LIKE 'b[!a-e]#';

BETWEEN Operator

Contoh 10 : SELECT * FROM ToolsWHERE ToolID BETWEEN 3 AND 10;

SELECT * FROM ToolsWHERE ToolID >= 3 AND ToolID <=10;

IN and NOT Operators

Contoh 11 : SELECT * FROM ToolsWHERE Manufacturer NOT IN ('Bosch', 'Porter', 'Makita'); SELECT *FROM ToolsWHERE Manufacturer IN ('Bosch', 'Porter', 'Makita');

Page 9: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 9

2.1 Membuat Aplikasi Kepegawaian

Membuat aplikasi database kepegawaian yang memuat informasi tentang biodata pegawai sebuah

perusahaan beserta data aktifitas pekerjaannya.

2.1.1 Membuat database kepegawaian

Langkah-langkah untuk membuat database kepegawaian menggunakan Microsoft Access.

1. Buka aplikasi Microsoft Access 2007 yang sudah terinstal pada komputer

2. Klik File -> New -> Blank Database

3. Pada isian File Name, klik tombol browse yang ada disebelah kanannya kemudian pindahkan aktif folder pada

Drive D: , lalu buatlah folder dengan nama Anda dan klik Open pada folder tersebut

4. Berikutnya ketik DBPraktikum_NPM pada isian File name dan pilih Microsoft Access Database (2002-2003

Format) (*.mdb).

5. Lalu klik OK. Terakhir klik Create.

6. Buatlah tabel pegawai dengan struktur sebagai berikut :

Tabel Name : Biodata

Field Name Data Type Field SizeNIP Text 5 Primary KeyNama Text 30Tempat_Lahir Text 15Tanggal_Lahir DateTimeAlamat Text 50Kode_POS Text 5Telp Text 15

Tabel Name : Kepegawaian

Field Name Data Type Field SizeNIP Text 5Jabatan Text 25Golongan Text 10Bidang_Kerja Text 25Tanggal_Masuk DateTimeStatus Text 10

7. Setelah tabel selesai dibuat, isi data setiap tabel minimal 3 buah data sebagai sampel.

Relasi Tabel

Dari struktur tabel yang telah dibuat diatas, maka dapat dilihat ada relasi antara kedua tabel tersebut. Kunci

relasi dari kedua tabel tersebut adalah Field NIP. Field NIP pada tabel Bidoata digunakan sebagai kunci primer (Primary

Key) yang berfungsi sebgai pengidentifikasi unik setiap record yang terdapat pada tabel tersebut. Sedangkan Field NIP

pada tabel Kepegawaian digunakan sebagai kunci tamu (Foreign Key) yang berfungsi sebagai kunci referensi terhadap

tabel Biodata, sehingga data Tabel Kepegawaian memiliki ketergantungan terhadap data pada Tabel Biodata.

Kardinalitas dari kedua tabel tersebut adalah 1 : 1 , artinya setiap pegawai yang terdaftar pada tabel Biodata akan

berrelasi dengan satu record pada Tabel Kepegawaian.

Field Name Data Type Field SizeNIP Text 5 Primary Key

Field Name Data Type Field SizeNIP Text 5

Page 10: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

2.1.2 Membuat Aplikasi Kepegawaian Menggunakan Borland Delphi

Aplikasi database kepegawaian yang dibuat menggunakan borland delphi 7. Buatlah tampilan visual (User

Interface) seperti di bawah ini!

Pemberian nama komponen silahkan diatur sendiri, boleh juga menggunakan penamaan bawaan dari

Delphinya. Tambahkan komponen Data Aware diantaranya adalah :

Nama Komponen PropertyAdoConnection Name : AdoConnection1

Login Prompt : FalseConnection String : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DOCUMENT ~\PraktikumDelphi\DBPraktikum.mdb;Persist Security Info=False

Connected : TrueAdoQuery Name : Adoquery1

SQL : Select * From BiodataActive : True

DataSource Name : Datasource1DataSet : Adoquery1

DBGrid DataSource : Datasource1

Page 11: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

Listing Kode Program

EVENT ONCREATE

Event OnCreate pada form untuk membersihkan field dan menampilkan data pada DBGrid

procedure TFormbiodata.FormCreate(Sender: TObject);begin

// kosongkan semua field Editnip.Clear; Editnamapeg.Clear; Edittempatlahir.Clear; Editalamat.Clear; Editpos.Clear; Edittelepon.Clear; Editcari.Clear;DateTimePickerlahir.Date := Now();

// tampilkan semua data karyawan pada dbgridbiodata with ADOQuery1 dobegin

Active := False;SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA '; Active := True;

end;end;

EVENT BUTTONSAVE

Proses button Save. Untuk menyimpan data pada Database, dilengkapi dengan validasi Field NIP tidak kboleh

kosong dan tidak boleh terjadi duplikasi NIP

procedure TFormbiodata.ButtonsaveClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 thenbegin

MessageDlg('Field NIP tidak boleh kosong!',mtWarning,[mbOK],0); Exit;

end;

// validasi duplikasi NIP pegawai with ADOQuery1 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text); Active := True;

// tampilkan pesan jika terjadi duplikasi// dan keluar proses SAVEif ADOQuery1.RecordCount > 0 then

beginMessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang

baru!',mtError,[mbOK],0);Editnip.Clear; Editnip.SetFocus;

// keluar dari proses insertExit;

end;

Page 12: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

end;

// proses simpan biodata pegawai with ADOQuery1 dobegin

SQL.Clear; SQL.Text :=

' INSERT INTO BIODATA(NIP,Nama,Tempat_Lahir,Tanggal_Lahir,Alamat,Kode_POS,Telp) VALUES (' +

QuotedStr(Editnip.Text) + ' , ' + QuotedStr(Editnamapeg.Text) + ' , ' + QuotedStr(Edittempatlahir.Text) + ' , ' +'#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' + QuotedStr(Editalamat.Text) + ' , ' + QuotedStr(Editpos.Text) + ' , ' + QuotedStr(Edittelepon.Text) + ')';

ExecSQL;MessageDlg('Data sudah tersimpan',mtInformation,[mbOK],0);

// panggil event formcreate untuk merefresh data pada dbgridFormCreate(Sender);

end;end;

EVENT DBGRIDDOUBLECLICK

Proses double click dbGrid untuk mengcopy data dari DbGrid ke dalam field di form

procedure TFormbiodata.DBGridbiodataDblClick(Sender: TObject);begin

// proses meng-copy isi dbgrid ke dalam field dalam form Editnip.Text := DBGridbiodata.Fields[0].AsString; Editnamapeg.Text := DBGridbiodata.Fields[1].AsString; Edittempatlahir.Text := DBGridbiodata.Fields[2].AsString; DateTimePickerlahir.Date := DBGridbiodata.Fields[3].AsDateTime; Editalamat.Text := DBGridbiodata.Fields[4].AsString; Editpos.Text := DBGridbiodata.Fields[5].AsString; Edittelepon.Text := DBGridbiodata.Fields[6].AsString; Editnip.SetFocus;

end;

EVENT BUTTONUPDATE

Proses untuk memperbaharui biodata pegawai

procedure TFormbiodata.ButtonupdateClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 thenbegin

MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit;

end;

// proses update biodata pegawai with ADOQuery1 dobegin

SQL.Clear; SQL.Text :=

' UPDATE BIODATA SET ' +' NAMA = ' + QuotedStr(Editnamapeg.Text) + ' , ' +

Page 13: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

' Tempat_Lahir = ' + QuotedStr(Edittempatlahir.Text) + ' , ' +' Tanggal_Lahir = ' + '#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' +' Alamat = ' + QuotedStr(Editalamat.Text) + ' , ' +' Kode_POS = ' + QuotedStr(Editpos.Text) + ' , ' +' Telp = ' + QuotedStr(Edittelepon.Text) +' WHERE NIP = ' + QuotedStr(Editnip.Text);

ExecSQL;MessageDlg('Data sudah diperbaharui',mtInformation,[mbOK],0);

end;

// panggil event formcreate untuk merefresh data pada dbgridFormCreate(Sender);

end;

EVENT BUTTONDELETE

Proses untum menghapus salah satu Biodata pegawai berdasarkan NIP yang dipilih dari DBGrid

procedure TFormbiodata.ButtondeleteClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 thenbegin

MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit;

end;

// proses hapus biodata pegawaiif Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) =

mrYes then begin

with ADOQuery1 do beginSQL.Clear; SQL.Text :=' DELETE FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text);

ExecSQL;MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0);

end;end;

// panggil event formcreate untuk merefresh data pada dbgridFormCreate(Sender);

end;

EVENT ONCHANGE PENCARIAN DATA

Proses untuk mencari data dari tabel Biodata berdasarkan nama pegawai

procedure TFormbiodata.EditcariChange(Sender: TObject);begin

// proses pencarian biodata pegawai berdasarkan nama pegawai// dibuat didalam event onChange editcari with ADOQuery1 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcari.Text+'%'); Active := True;

end;

end;2.1.3 Form Kepegawaian

Page 14: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

Buatlah sebuah form seperti dibawah ini. Form ini digunakan untuk memproses data kepegawaian berdasarkan

data pegawai yang sudah diolah pada form Biodata

Item ComboBox Jabatan diisi dengan :

Direktur Wakil Direktur Kepala Bagian Kepala Sub Staff

Item ComboBox Golongan diisi dengan :

I II III IV

Item ComboBox Golongan diisi dengan :

Administrasi Keuangan Umum SDM

Page 15: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

Marketing Produksi Gudang

Item ComboBox Status diisi dengan :

Aktif Cuti Keluar

Listing Kode Program

Buatlah Variable Global dengan nama nip : String;

EVENT ONCREATE

procedure TFormkepeg.FormCreate(Sender: TObject);begin

nip := ''; Editcarinip.Clear; Labelnamapeg.Caption := '....'; ComboBoxjabatan.Text := ''; ComboBoxgolongan.Text := ''; ComboBoxbidangkerja.Text := ''; ComboBoxstatus.Text := ''; DateTimePickerkepeg.Date := Now();

// tampilkan semua data kepegawaian pada dbgrid with ADOQuery2 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM KEPEGAWAIAN '; Active := True;

end;

end;

EVENT ONDOUBLECLICK DBGRID KEPEGAWAIAN

procedure TFormkepeg.DBGridkepegawaianDblClick(Sender: TObject);begin

// tampilkan data pada field di dalam form

nip := DBGridkepegawaian.Fields[0].AsString;// lakukan proses pencarian nama pegawai untuk ditampilkan pada labelnamapeg// berdasarkan nip with ADOQuery3 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT NAMA FROM BIODATA WHERE NIP = ' + QuotedStr(nip); Active := True;

// tampilkan nama pegawaiLabelnamapeg.Caption := ADOQuery3.FieldValues['NAMA'];

end;

ComboBoxjabatan.Text := DBGridkepegawaian.Fields[1].AsString; ComboBoxgolongan.Text := DBGridkepegawaian.Fields[2].AsString; ComboBoxbidangkerja.Text := DBGridkepegawaian.Fields[3].AsString;

Page 16: Modul Untuk Praktikum Delphi

DateTimePickerkepeg.Date := DBGridkepegawaian.Fields[4].AsDateTime; ComboBoxstatus.Text := DBGridkepegawaian.Fields[5].AsString;

end;

EVENT ONCHANGE PENCARIAN DATA PEGAWAI

procedure TFormkepeg.EditcarinipChange(Sender: TObject);begin

// proses pencarian NIP dan Nama pegawai berdasarkan namanya with ADOQuery3 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcarinip.Text+'%'); Active := True;

end;end;

EVENT ONDOUBLECLICK DBGRIDPENCARIAN

procedure TFormkepeg.DBGridpencarianDblClick(Sender: TObject);begin

// mengambil nilai NIP, hasil dari query pencarian nip// dan disimpan pada variabel global nip nip := ADOQuery3.FieldValues['NIP'];

Labelnamapeg.Caption := ADOQuery3.FieldValues['NAMA']; ComboBoxjabatan.SetFocus;

end;

EVENT SAVE BUTTONSAVE

procedure TFormkepeg.ButtonsaveClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if nip = '' thenbegin

MessageDlg('Cari data pegawai terlebih dahulu!',mtWarning,[mbOK],0); Exit;

end;

// validasi duplikasi NIP pegawai with ADOQuery2 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip); Active := True;

// tampilkan pesan jika terjadi duplikasi// dan keluar proses SAVEif ADOQuery2.RecordCount > 0 then

beginMessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang

baru!',mtError,[mbOK],0);Editcarinip.Clear; Editcarinip.SetFocus;// keluar dari proses insertExit;

end;end;

Praktikum Pemrograman Delphi 16

Page 17: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

// proses simpan data kepegawaian berdasarkan NIPwith ADOQuery2 do begin

SQL.Clear; SQL.Text :=

' INSERT INTO KEPEGAWAIAN(NIP,Jabatan,Golongan,Bidang_Kerja,Tanggal_Masuk,Status) VALUES ( ' +

QuotedStr(nip) + ' , ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' +'#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' + QuotedStr(ComboBoxstatus.Text) + ')';

ExecSQL;MessageDlg('Data sudah tersimpan!',mtInformation,[mbOK],0); FormCreate(Sender);

end;

end;

EVENT EVENT UPDATE BUTTONUPDATE

procedure TFormkepeg.ButtonupdateClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if nip = '' thenbegin

MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit;

end;

// proses update data kepegawaian with ADOQuery2 dobegin

SQL.Clear; SQL.Text :=

' UPDATE KEPEGAWAIAN SET ' +' Jabatan = ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' +' Golongan = ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' +' Bidang_Kerja = ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' +' Tanggal_Masuk = ' + '#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' +' Status = ' + QuotedStr(ComboBoxstatus.Text) +' WHERE NIP = ' + QuotedStr(nip);

ExecSQL;MessageDlg('Data sudah diperbaharuo!',mtInformation,[mbOK],0); FormCreate(Sender);

end;

end;

EVENT DELETE BUTTONDELETE

procedure TFormkepeg.ButtondeleteClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if nip = '' thenbegin

MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit;

end;

// proses hapus data kepegawaianif Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) =

mrYes then begin

Page 18: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

with ADOQuery2 do beginSQL.Clear; SQL.Text :=' DELETE FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip);

ExecSQL;MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0);

end;

FormCreate(Sender);

end;end;

EVENT ONKEYPRESS

procedure TFormkepeg.DBGridpencarianKeyPress(Sender: TObject;var Key: Char);

beginif Key = #13 thenDBGridpencarianDblClick(Sender);

end;

EVENT FORMACTIVATE

procedure TFormkepeg.FormActivate(Sender: TObject);begin

FormCreate(Sender);end;

CODING LENGKAP FORM BIODATA

unit Unit1;

interface

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls, Grids, DBGrids, ComCtrls, DB, ADODB;

typeTFormbiodata = class(TForm) Label1: TLabel;Label2: TLabel;Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Editnip: TEdit; Editnamapeg: TEdit;Edittempatlahir: TEdit; Editalamat: TEdit; Editpos: TEdit; Edittelepon: TEdit;DateTimePickerlahir: TDateTimePicker; DBGridbiodata: TDBGrid;Buttonsave: TButton;Buttonupdate: TButton; Buttondelete: TButton;

Page 19: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 1

Buttonkepeg: TButton; GroupBox1: TGroupBox; Editcari: TEdit; XPManifest1: TXPManifest;ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DataSource1: TDataSource;procedure FormCreate(Sender: TObject); procedure ButtonsaveClick(Sender: TObject); procedure DBGridbiodataDblClick(Sender: TObject); procedure EditcariChange(Sender: TObject); procedure ButtondeleteClick(Sender: TObject); procedure ButtonupdateClick(Sender: TObject); procedure ButtonkepegClick(Sender: TObject);

private{ Private declarations }

public{ Public declarations }

end;

varFormbiodata: TFormbiodata;

implementation

uses Unit2;

{$R *.dfm}

procedure TFormbiodata.FormCreate(Sender: TObject);begin

// kosongkan semua field Editnip.Clear; Editnamapeg.Clear; Edittempatlahir.Clear; Editalamat.Clear; Editpos.Clear; Edittelepon.Clear; Editcari.Clear;DateTimePickerlahir.Date := Now();

// tampilkan semua data karyawan pada dbgridbiodata with ADOQuery1 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA '; Active := True;

end;end;

procedure TFormbiodata.ButtonsaveClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 thenbegin

MessageDlg('Field NIP tidak boleh kosong!',mtWarning,[mbOK],0); Exit;

end;

// validasi duplikasi NIP pegawai with ADOQuery1 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text);

Page 20: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 2

Active := True;

// tampilkan pesan jika terjadi duplikasi// dan keluar proses SAVEif ADOQuery1.RecordCount > 0 then

beginMessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang

baru!',mtError,[mbOK],0);Editnip.Clear; Editnip.SetFocus;

// keluar dari proses insertExit;

end;end;

// proses simpan biodata pegawai with ADOQuery1 dobegin

SQL.Clear; SQL.Text :=

' INSERT INTO BIODATA(NIP,Nama,Tempat_Lahir,Tanggal_Lahir,Alamat,Kode_POS,Telp) VALUES (' +

QuotedStr(Editnip.Text) + ' , ' + QuotedStr(Editnamapeg.Text) + ' , ' + QuotedStr(Edittempatlahir.Text) + ' , ' +'#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' +QuotedStr(Editalamat.Text) + ' , ' + QuotedStr(Editpos.Text) + ' , ' + QuotedStr(Edittelepon.Text) + ')';

ExecSQL;MessageDlg('Data sudah tersimpan',mtInformation,[mbOK],0);

// panggil event formcreate untuk merefresh data pada dbgridFormCreate(Sender);

end;end;

procedure TFormbiodata.DBGridbiodataDblClick(Sender: TObject);begin

// proses meng-copy isi dbgrid ke dalam field dalam form Editnip.Text := DBGridbiodata.Fields[0].AsString; Editnamapeg.Text := DBGridbiodata.Fields[1].AsString; Edittempatlahir.Text := DBGridbiodata.Fields[2].AsString; DateTimePickerlahir.Date := DBGridbiodata.Fields[3].AsDateTime; Editalamat.Text := DBGridbiodata.Fields[4].AsString; Editpos.Text := DBGridbiodata.Fields[5].AsString; Edittelepon.Text := DBGridbiodata.Fields[6].AsString; Editnip.SetFocus;

end;

procedure TFormbiodata.EditcariChange(Sender: TObject);begin

// proses pencarian biodata pegawai berdasarkan nama pegawai// dibuat didalam event onChange editcari with ADOQuery1 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcari.Text+'%'); Active := True;

end;

end;

Page 21: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 2

procedure TFormbiodata.ButtondeleteClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 thenbegin

MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit;

end;

// proses hapus biodata pegawaiif Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) =

mrYes then begin

with ADOQuery1 do beginSQL.Clear; SQL.Text :=' DELETE FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text);

ExecSQL;MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0);

end;end;

// panggil event formcreate untuk merefresh data pada dbgridFormCreate(Sender);

end;

procedure TFormbiodata.ButtonupdateClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 thenbegin

MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit;

end;

// proses update biodata pegawai with ADOQuery1 dobegin

SQL.Clear; SQL.Text :=

' UPDATE BIODATA SET ' +' NAMA = ' + QuotedStr(Editnamapeg.Text) + ' , ' +' Tempat_Lahir = ' + QuotedStr(Edittempatlahir.Text) + ' , ' +' Tanggal_Lahir = ' + '#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' +' Alamat = ' + QuotedStr(Editalamat.Text) + ' , ' +' Kode_POS = ' + QuotedStr(Editpos.Text) + ' , ' +' Telp = ' + QuotedStr(Edittelepon.Text) +' WHERE NIP = ' + QuotedStr(Editnip.Text);

ExecSQL;MessageDlg('Data sudah diperbaharui',mtInformation,[mbOK],0);

end;

// panggil event formcreate untuk merefresh data pada dbgridFormCreate(Sender);

end;

procedure TFormbiodata.ButtonkepegClick(Sender: TObject);begin

Formkepeg.Show;end;

end.

Page 22: Modul Untuk Praktikum Delphi

CODING LENGKAP FORM KEPEGAWAIAN

unit Unit2;

interface

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, ComCtrls, DB, ADODB;

typeTFormkepeg = class(TForm) GroupBox1: TGroupBox; Editcarinip: TEdit; ComboBoxjabatan: TComboBox; ComboBoxgolongan: TComboBox; ComboBoxbidangkerja: TComboBox; ComboBoxstatus: TComboBox;DateTimePickerkepeg: TDateTimePicker; Label1: TLabel;Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel;DBGridkepegawaian: TDBGrid; Label6: TLabel; Labelnamapeg: TLabel; Buttonsave: TButton; Buttonupdate: TButton; Buttondelete: TButton; ADOQuery2: TADOQuery; DataSource2: TDataSource; DBGridpencarian: TDBGrid; ADOQuery3: TADOQuery; DataSource3: TDataSource;procedure EditcarinipChange(Sender: TObject); procedure DBGridpencarianDblClick(Sender: TObject); procedure ButtonsaveClick(Sender: TObject); procedure FormCreate(Sender: TObject);procedure DBGridkepegawaianDblClick(Sender: TObject); procedure ButtonupdateClick(Sender: TObject); procedure ButtondeleteClick(Sender: TObject);procedure DBGridpencarianKeyPress(Sender: TObject; var Key: Char);procedure FormActivate(Sender: TObject);

private{ Private declarations }

public{ Public declarations }

end;

varFormkepeg: TFormkepeg;nip : String;

implementation

uses Unit1;

{$R *.dfm}

procedure TFormkepeg.EditcarinipChange(Sender: TObject);begin

// proses pencarian NIP dan Nama pegawai berdasarkan namanya with ADOQuery3 dobegin

Praktikum Pemrograman Delphi 22

Page 23: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 2

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcarinip.Text+'%'); Active := True;

end;end;

procedure TFormkepeg.DBGridpencarianDblClick(Sender: TObject);begin

// mengambil nilai NIP, hasil dari query pencarian nip// dan disimpan pada variabel global nip nip := ADOQuery3.FieldValues['NIP'];

Labelnamapeg.Caption := ADOQuery3.FieldValues['NAMA']; ComboBoxjabatan.SetFocus;

end;

procedure TFormkepeg.ButtonsaveClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if nip = '' thenbegin

MessageDlg('Cari data pegawai terlebih dahulu!',mtWarning,[mbOK],0); Exit;

end;

// validasi duplikasi NIP pegawai with ADOQuery2 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip); Active := True;

// tampilkan pesan jika terjadi duplikasi// dan keluar proses SAVEif ADOQuery2.RecordCount > 0 then

beginMessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang

baru!',mtError,[mbOK],0);Editcarinip.Clear; Editcarinip.SetFocus;

// keluar dari proses insertExit;

end;end;

// proses simpan data kepegawaian berdasarkan NIPwith ADOQuery2 dobegin

SQL.Clear; SQL.Text :=

' INSERT INTO KEPEGAWAIAN(NIP,Jabatan,Golongan,Bidang_Kerja,Tanggal_Masuk,Status) VALUES ( ' +

QuotedStr(nip) + ' , ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' +'#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' + QuotedStr(ComboBoxstatus.Text) + ')';

ExecSQL;MessageDlg('Data sudah tersimpan!',mtInformation,[mbOK],0); FormCreate(Sender);

end;

Page 24: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 2

end;

procedure TFormkepeg.FormCreate(Sender: TObject);begin

nip := ''; Editcarinip.Clear; Labelnamapeg.Caption := '....'; ComboBoxjabatan.Text := ''; ComboBoxgolongan.Text := ''; ComboBoxbidangkerja.Text := ''; ComboBoxstatus.Text := ''; DateTimePickerkepeg.Date := Now();

// tampilkan semua data kepegawaian pada dbgrid with ADOQuery2 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT * FROM KEPEGAWAIAN '; Active := True;

end;

end;

procedure TFormkepeg.DBGridkepegawaianDblClick(Sender: TObject);begin

// tampilkan data pada field di dalam form

nip := DBGridkepegawaian.Fields[0].AsString;// lakukan proses pencarian nama pegawai untuk ditampilkan pada labelnamapeg// berdasarkan nip with ADOQuery3 dobegin

Active := False; SQL.Clear; SQL.Text :=

' SELECT NAMA FROM BIODATA WHERE NIP = ' + QuotedStr(nip); Active := True;

// tampilkan nama pegawaiLabelnamapeg.Caption := ADOQuery3.FieldValues['NAMA'];

end;

ComboBoxjabatan.Text := DBGridkepegawaian.Fields[1].AsString; ComboBoxgolongan.Text := DBGridkepegawaian.Fields[2].AsString; ComboBoxbidangkerja.Text := DBGridkepegawaian.Fields[3].AsString; DateTimePickerkepeg.Date := DBGridkepegawaian.Fields[4].AsDateTime; ComboBoxstatus.Text := DBGridkepegawaian.Fields[5].AsString;

end;

procedure TFormkepeg.ButtonupdateClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if nip = '' thenbegin

MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit;

end;

// proses update data kepegawaian with ADOQuery2 dobegin

SQL.Clear; SQL.Text :=

' UPDATE KEPEGAWAIAN SET ' +

Page 25: Modul Untuk Praktikum Delphi

Praktikum Pemrograman 2

' Jabatan = ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' +' Golongan = ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' +' Bidang_Kerja = ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' +' Tanggal_Masuk = ' + '#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' +' Status = ' + QuotedStr(ComboBoxstatus.Text) +' WHERE NIP = ' + QuotedStr(nip);

ExecSQL;MessageDlg('Data sudah diperbaharuo!',mtInformation,[mbOK],0); FormCreate(Sender);

end;

end;

procedure TFormkepeg.ButtondeleteClick(Sender: TObject);begin

// validasi field NIP tidak boleh kosong if nip = '' thenbegin

MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit;

end;

// proses hapus data kepegawaianif Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) =

mrYes then begin

with ADOQuery2 dobegin SQL.Clear; SQL.Text :=' DELETE FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip);

ExecSQL;MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0);

end;

FormCreate(Sender);

end;end;

procedure TFormkepeg.DBGridpencarianKeyPress(Sender: TObject;var Key: Char);

beginif Key = #13 thenDBGridpencarianDblClick(Sender);

end;

procedure TFormkepeg.FormActivate(Sender: TObject);begin

FormCreate(Sender);end;

end.