Object Oriented Programming dengan Delphi (

Pengertian Class dan Object

Pengertian Class

Class merupakan tipe data yang didefinisikan oleh user, yang mempunyai prilaku dan beberapa operasi (behavior). Sebuah class dapat mempuyai beberapa data internal (data abstraction=penyembunyian data sehingga user tidak dapat mengaksesnya) dan beberapa method dalam format procedure atau function dan biasanya menjelaskan karakteristik umum dan prilaku beberapa object yang sama. Contoh suatu class adalah sebagai berikut:

Class yang telah didefinsikan merupakan class TManusia. Class TManusia mempunyai attribut dan operasi. Tanda (-),(+),(#) mempunyai arti sebagai level akses dari class:

• Level private (-), berarti setiap atribut atau operasi hanya bisa di

akses oleh class yang bersangkutan saja. • Level protected (#), berarti setiap atribut atau operasi dapat diakses oleh class itu sendiri atau dapat pula di akses oleh class turunannya.

• Level public (+), berarti setaip atribut atau operasi dapat diakses oleh semua class dan diluar class yang bersangkutan.

Deklarasi kelas dituliskan setelah kata kunci “interface”, dan definisi clas tersebut ditulis setelah kata kunci “implementation”.

Contoh dalam program Delphi adalah sebagai berikut: unit manusia;

interface uses SysUtils; type

TManusia=class private

{Data field Atribut} FNama: string; FWarnaKulit: string; FUsia:integer; FKelamin:boolean; function GetLabelKelamin: string; procedure SetWarnaKulit(const Value: string);

protected public

{Methods} procedure Makan; procedure Berjalan; procedure Berlari;

property Nama: string read FNama write FNama; property WarnaKulit: string read FWarnaKulit write SetWarnaKulit; property Nama: string read FNama write FNama; property WarnaKulit: string read FWarnaKulit write SetWarnaKulit;

end;

implementation { Manusia }

procedure TManusia.Berjalan; begin

writeln(Nama+ ' sedang berjalan...!'); end;

procedure TManusia.Berlari; begin

writeln(Nama+ ' sedang berlari...!'); end;

function TManusia.GetLabelKelamin: string; var

s:string; begin if FKelamin then s:='Pria' else s:='Wanita'; Result:=s; end;

procedure TManusia.Makan; begin

writeln(Nama+' sedang makan duren monthong...!'); end;

procedure TManusia.SetWarnaKulit(const Value: string); begin

FWarnaKulit := Value; end; end.

Pengertian Object

Object adalah instansi dari class atau variable dari tipe data yang telah didefinsikan oleh class. Object adalah entitas yang actual, ketika program dijalankan object mengambil memori untuk dirinya. Hubungan antara class dan object dapat di samakan dengan hubungan antara tipe data dan variable. Contoh object yang menggunakan class TManusia:

program Project2;

{$APPTYPE CONSOLE}

uses SysUtils, manusia in 'manusia.pas';

var Otong: TManusia;

Mince: TManusia; Rina: TManusia;

begin { TODO -oUser -cConsole Main : Insert code here } Otong:=TManusia.Create; Mince:=TManusia.Create; Rina:=TManusia.Create;

Otong.Nama:='Otong'; Mince.Nama:='Mince'; Rina.Nama:='Rina';

//writeln('Nama : '+ Otong.FNama); FNama tidak dapat diakses diluar class (private) Otong.Berjalan; Mince.Makan; Rina.Berlari; readln; Otong.Free; Mince.Free; Rina.Free;

end.

Output: Otong sedang berjalan...!

Mince sedang makan duren monthong...! Rina sedang berlari...!

Object Otong,Mince dan Rina menginstansikan dari class TManusia. Untuk dapat menggunakan object- object tersebut, terlebih dahulu harus mengambil memori dengan mengoperasi fungsi “Create”. Kemudian dari object tersebut dapat diakses operasi maupun atribut yang mempunyai level “public”. Setelah object digunakan, diharuskan melepas memori yang telah digunakan oleh masing-masing object dengan perintah “Free”,

Catatan: Operasi Create dan Free sudah didefinisikan oleh class TObject yang secara otomatis di class TManusia merupakan turunan dari class TObject oleh Delphi sendiri.

Method

Method dapat disamakan dengan prosedur dan fungsi (procedure and function) yang memiliki parameter lengkap dan mengacu pada object itu sendiri.

Constructor

Constructor digunakan untuk menginisialisasikan anggota-anggota dari class, mengalokasikan memori atau untuk melakukan tugas-tugas oleh start up yang lain.

Destructor

Destructor merupakan kebalikan dari constructor, biasanya digunakan untuk membebaskan memori yang telah digunakan olah anggota class. Destructor merupakan method special yang secara otomatis dipanggil sesaat sebelum object dihancurkan. Contoh penggunaan constructor dan destructor pada class TManusia adalah sebagai berikut: ...

protected public constructor Create(N:String); destructor Destroy;override; procedure Makan; procedure Berjalan; procedure Berlari;

... Implementasi program:

... constructor TManusia.Create(N: String); begin

inherited Create; Nama:=N;

end;

destructor TManusia.Destroy; begin

inherited; end; ...

Penggunaan class oleh object: Otong:=TManusia.Create('Otong');

Mince:=TManusia.Create('Mince'); Rina:=TManusia.Create('Rina');

Self

Self merupakan pointer yang menunjuk instansi dari class di dalam memori dan sebagai parameter ekstra tersembunyi yang dibutuhkan saat pembuatan beberapa object pada class yang sama. Contoh penggunaan Self:

unit MyRect;

interface type

TMyRect = class private

Left : Integer; Top : Integer; Right : Integer; Bottom : Integer; Text : string;

public function GetWidth : Integer; function GetHeight : Integer; public function GetWidth : Integer; function GetHeight : Integer;

constructor TMyRect.Create; begin

Left:=0;Right:=0; Top:=0;Bottom:=0; Text:='';

end;

constructor TMyRect.CreateVal(ALeft, ATop, ARight, ABottom: Integer); begin

Left:=Aleft;Right:=ARight; Top:=Atop;Bottom:=ABottom;

end;

destructor TMyRect.Destroy; begin

inherited; end;

function TMyRect.GetHeight: Integer; begin

Result:=Bottom-Top; end;

function TMyRect.GetWidth: Integer; begin

Result:=Self.Right-Self.Left; end;

procedure TMyRect.SetRect(ALeft, ATop, ARight, ABottom: Integer); begin

Left:=Aleft;Right:=ARight; Top:=Atop;Bottom:=ABottom;

end;

end.

Overloaded

Pascal object mendukung adanya overload function dan method, yaitu kita dapat membuat lebih dari satu suatu fungsi dengan nama yang sama tetapi mempunyai parameter yang berbeda. Aturan dalam pembuatan overload function atau method adalah:

• Setiap penulisan dari method harus diikuti dengan kata kunci “overload”. • Perbedaan harus dari jumlah atau tipe parameternya atau keduanya. Tipe pengembalian tidak

dapat digunakan untuk membedakan antar method. Contoh: interface dapat digunakan untuk membedakan antar method. Contoh: interface

TDate = class private

FDate: TDatetime; public procedure SetValue(y,m,d:integer);overload; procedure SetValue(NewDate:Tdatetime);overload; function GetValue:TDatetime;

procedure TDate.SetValue(y, m, d: integer); begin

FDate:=EncodeDate(y,m,d); end;

function TDate.GetValue: TDatetime; begin

Result:=FDate; end;

procedure TDate.SetValue(NewDate: Tdatetime); begin

FDate:=NewDate; end;

end.

Encapsulation

Penjelasan encapsulation dapat diartikan dengan penyembuyian data oleh class yang bersangkutan dan kita tidak dapat mengaksesnya secara langsung, tetapi dengan perantara interface yang dibuat dengan method atau property yang mempunyai level public. Contoh class: Penjelasan encapsulation dapat diartikan dengan penyembuyian data oleh class yang bersangkutan dan kita tidak dapat mengaksesnya secara langsung, tetapi dengan perantara interface yang dibuat dengan method atau property yang mempunyai level public. Contoh class:

SysUtils; const { Airplane types. } Airliner = 0; Commuter = 1; PrivateCraft = 2; { Status constants. } TakingOff = 0; Cruising = 1; Landing = 2; OnRamp = 3; { Message constants. } MsgChange = 0; MsgTakeOff = 1; MsgLand = 2; MsgReport = 3;

type TAirplane = class private

Name : string; Speed : Integer; Altitude : Integer; Heading : Integer; Status : Integer; Kind : Integer; Ceiling : Integer;

protected procedure TakeOff(Dir : Integer); virtual; procedure Land; virtual;

public constructor Create(AName : string; AKind : Integer = Airliner); function SendMessage(Msg : Integer; var Response : string;

Spd : Integer; Dir : Integer; Alt : Integer) : Boolean; function GetStatus(var StatusString : string) : Integer; overload; virtual; function GetStatus : Integer; overload; function GetSpeed : Integer; function GetHeading : Integer; function GetAltitude : Integer; function GetName : string;

end; implementation constructor TAirplane.Create(AName : string; AKind : Integer); begin

inherited Create; Name := AName; Kind := AKind; Status := OnRamp; case Kind of

Airliner : Ceiling := 35000; Commuter : Ceiling := 20000; PrivateCraft : Ceiling := 8000;

end; end; end; end;

Heading := Dir; Status := TakingOff;

end;

procedure TAirplane.Land; begin

Speed := 0; Heading := 0; Altitude := 0; Status := OnRamp;

end;

function TAirplane.SendMessage(Msg : Integer; var Response : string; Spd : Integer; Dir : Integer; Alt : Integer) : Boolean; begin Result := True; case Msg of

MsgTakeOff : if status <> OnRamp then begin

Response := Name + ': I''m already in the air!'; Result := False;

end else

TakeOff(dir); MsgChange : begin if Spd > 500 then

Response := 'Command Error: Speed cannot be more than 500.'; if Dir > 360 then Response := 'Command Error: Heading cannot be over 360 degrees.'; if Alt < 100 then Response := Name + ': I''d crash!'; if Alt > Ceiling then Response := Name + ': I can''t go that high.'; if (Spd = 0) and (Dir = 0) and (Alt = 0) then Response := Name + ': Huh?'; if Response <> '' then begin

Result := False; Exit;

end; if status = OnRamp then begin

Response := Name + ': I''m on the ground.'; Result := False;

end else begin

Speed := Spd; Heading := Dir; Altitude := Alt; Status := Cruising;

end; end; MsgLand : if status = OnRamp then begin

Response := Name + ': I''m already on the ground.';

Result := False; end else

Land; MsgReport : begin GetStatus(Response); Exit;

end; end;

if Result then Response := Name + ': Roger.'; end;

function TAirplane.GetStatus(var StatusString : string) : Integer; begin

StatusString := Format('%s, Altitude: %d, Heading: %d, ' + 'Speed: %d', [Name, Altitude, Heading, Speed]); Result := Status;

end;

function TAirplane.GetStatus : Integer; begin

Result := Status; end;

function TAirplane.GetSpeed : Integer; begin

Result := Speed; end;

function TAirplane.GetHeading : Integer; begin

Result := Heading; end;

function TAirplane.GetAltitude : Integer; begin

Result := Altitude; end;

function TAirplane.GetName : string; begin

Result := Name; end; end.

Inheritance

Inheritance merupakan penurunan suatu class yang sudah ada dengan class baru atau disebut dengan class turunan (derived class). Class baru dapat menurunkan sifat-sifat dari class dasarnya (base class / ancestor class) dan dapat mengakses data atau method dari class dasar, asalkan method atau data tersebut memiliki Inheritance merupakan penurunan suatu class yang sudah ada dengan class baru atau disebut dengan class turunan (derived class). Class baru dapat menurunkan sifat-sifat dari class dasarnya (base class / ancestor class) dan dapat mengakses data atau method dari class dasar, asalkan method atau data tersebut memiliki

private TheMission : string; Status:string; constructor Create(AName : string; AType : Integer); function GetStatus(var StatusString : string) : Integer; override;

protected procedure TakeOff(Dir : Integer); override; procedure Land; override;

public function GetStatusString:string; procedure Attack; virtual; procedure SetMission(Misi:string); virtual;

end;

TCommercialPlane= class(TAirplane) private

Passenger: integer; Destination:string; Status:string; function GetStatus(var StatusString : string) : Integer; override;

protected function GetPassenger:integer; public procedure GoPlane;virtual; function GetStatusString:string; procedure SetPassenger(P:integer);virtual; procedure SetDestination(Dest:string);virtual;

end;

{ TMilitaryPlane }

procedure TMilitaryPlane.Attack; begin

Status:=Format('%s attack %s',[Name,TheMission]); end;

constructor TMilitaryPlane.Create(AName: string; AType: Integer); begin

inherited Create(AName,Atype); end;

function TMilitaryPlane.GetStatus(var StatusString: string): Integer; var

s:string; i:integer;

begin i:=inherited GetStatus(s); s:=s+','+StatusString; Result:=i;

end;

function TMilitaryPlane.GetStatusString: string; begin

result:=Status; end; result:=Status; end;

inherited;

end;

procedure TMilitaryPlane.SetMission(Misi:String); begin

TheMission:=Misi; end;

procedure TMilitaryPlane.TakeOff(Dir: Integer); begin

inherited; end;

{ TCommercialPlane }

function TCommercialPlane.GetPassenger: integer; begin

result:=Passenger; end;

function TCommercialPlane.GetStatus(var StatusString: string): Integer; begin

result:=inherited GetStatus(Status); end;

function TCommercialPlane.GetStatusString: string; begin

Result:=Status; end;

procedure TCommercialPlane.GoPlane; begin

Status:=Status+Format('I''ve take %d passenger to %s', [Passenger,Destination]); end;

procedure TCommercialPlane.SetDestination(Dest: string); begin

Destination:=Dest; end;

procedure TCommercialPlane.SetPassenger(P: integer); begin

Passenger:=p; end;

Overriding Method

Overriding merupakan penggantian method dari class dasar oleh class turunannya.

Keyword is dan as

Is digunakan untuk mengetahui apakah suatu class termasuk bagian dari class yang lain, sedangkan as digunakan untuk mengubah bentuk class menjadi class lainnya yang masih dalam turunannya. Contoh: Is digunakan untuk mengetahui apakah suatu class termasuk bagian dari class yang lain, sedangkan as digunakan untuk mengubah bentuk class menjadi class lainnya yang masih dalam turunannya. Contoh:

{$APPTYPE CONSOLE}

uses SysUtils, MyRect in 'MyRect.pas', AirplaneU in 'AirplaneU.pas';

var Plane: TAirplane; F15:TMilitaryPlane; B555: TCommercialPlane;

begin { TODO -oUser -cConsole Main : Insert code here } B555:=TCommercialPlane.Create('Boing 555'); B555.SetPassenger(10); b555.SetDestination('Marocco'); F15:=TMilitaryPlane.Create('F15'); F15.SetMission('White House');

Plane:=B555; if Plane is TMilitaryPlane then begin

(Plane as TMilitaryPlane).Attack; writeln((Plane as TMilitaryPlane).GetStatusString);

end else begin

(Plane as TCommercialPlane).GoPlane; writeln((Plane as TCommercialPlane).GetStatusString);

end; Plane:=F15; if Plane is TMilitaryPlane then begin

(Plane as TMilitaryPlane).Attack; writeln((Plane as TMilitaryPlane).GetStatusString);

end else begin

(Plane as TCommercialPlane).GoPlane; writeln((Plane as TCommercialPlane).GetStatusString);

end; F15.Free; B555.Free; readln;

end.

Output: I've take 10 passenger to Marocco

F15 attack White House

Sumber Pustaka: Marco Cantù, 2001, Mastering Delphi 6, Sybex Inc, Alameda, San Francisco. Kent Residorph, Teach Yourself Borland Delphi 4 in 1 Days, Macmillan Computer

Publishing,Indianapolis.

Integrated Developer Environment (IDE) Delphi 7.0

IDE Delphi

IDE Delphi mempunyai beberapa bagian utama yaitu: • Main Menu dan Toolbar • Component palette • Form Designer • Code Editor • Object Inspector • Code Explorer • Project Manager

Project merupakan file yang mengumpulkan file-file yang bekerja sama dalam membentuk aplikasi (exe) atau dynamic link library (dll) yang berdiri sendiri. Project Group merupakan kuumpulan dari beberapa project. Pada saat membuat project baru, Delphi membuat file minimal empat buah yang terdiri dari:

• project source file

• main form unit • main form resource file • project resource file

Tipe-tipe file yang digunakan oleh Delphi

Extension Description .pas

The Object Pascal source files. There will be one for each unit, as well as any other source files that you add to the project.

.dfm The form file. It is a description of the form and all its components. Each form has its own .dfm file.

.dsk The project desktop file. This file keeps track of the way the desktop appeared when you last saved (or closed) the project. All the open windows' sizes and positions are saved so that when you reopen the project it looks the same as you left it. This file is created only if you turn on the option to save your desktop (Environment Options dialog box).

.dof The project options file. This file contains the project options as set in the Project Options dialog.

.exe The final executable program. .cfg

The project configuration file. This file primarily contains the current compiler and linker settings for the project.

.dcu The compiled binary object files. These are the files that the compiler produces when it compiles your Object Pascal units.

.dpr The project source file. .res

The compiled binary resource file.

Ilustrasi bagaimana Delphi mengkompilasi source code dan menghubungkannya dengan form sehingga membentuk file executable. 1

1 Marco Cantù, 2001, Mastering Delphi 6,chapter 04.

Contoh-contoh pembuatan aplikasi sederhana Contoh #1

1. Desain sebuah form yang terdiri dari tujuh label, enam edit dan sebuah button.

2. Ubah properti Caption pada Label1 sampai Label7 dengan nama: Informasi Biaya, Kode, Rincian Biaya, Pendaftaran, Pendidikan, Ujian Lokal dan Total Biaya.

3. Ubah properti Name pada komponen button1 dengan nama: btnProses.

4. Ubah properti Name pada komponen Edit1 dampai Edit6 dengan nama: edKode, edDaftar, edDidik, edUjian dan edTotal.

5. Kosongkan property Text untuk semua komponen Edit.

6. Ubah properti Font pada Label1 (“Informasi Biaya”) menjadi Arial – Bold – 12.

7. Simpan File unit dengan nama FContoh1.pas dan file project PContoh1.dpr.

Kode: procedure TForm1.btnProsesClick(Sender: TObject); begin

if edKode.Text='OKP' then begin

edJurusan.Text:='Operator Komputer Praktis'; edDaftar.Text:='25000'; edDidik.Text:='550000'; edUjian.Text:='125000';

end else if edKode.Text='KAP' then begin

edJurusan.Text:='Komputer Akuntansi & Perpajakan'; edDaftar.Text:='50000'; edDidik.Text:='750000'; edUjian.Text:='175000';

end else if edKode.Text='AMP' then begin

edJurusan.Text:='Administrasi Manajemen & Perkantoran'; edDaftar.Text:='50000'; edDidik.Text:='750000'; edUjian.Text:='150000';

end else begin end else begin

end; edTotal.Text:=inttostr(strtoint(edDaftar.Text)+ strtoint(edDidik.Text)+

strtoint(edUjian.Text)); end;

Contoh #2

1. hapus komponen label Kode dan edKode.

2. tambahkan komponen Group Box dan empat komponen RadioButton dalam komponen Group Box.

3. atur posisi dan ukuran komponen tersebut, ubah properti Caption GroupBox1 dengan Kode Jurusan.

4. Ubah property Caption komponen RadioButton1 sampai dengan RadioButton4 dengan: OKP, PIT, KAP, AMP.

Kode: procedure TForm1.btnProsesClick(Sender: TObject);

begin if RadioButton1.Checked then begin

edJurusan.Text:='Operator Komputer Praktis'; edDaftar.Text:='25000'; edDidik.Text:='550000'; edUjian.Text:='125000';

end else if RadioButton2.Checked then begin

edJurusan.Text:='Komputer Akuntansi & Perpajakan'; edDaftar.Text:='50000'; edDidik.Text:='750000'; edUjian.Text:='175000';

end else if RadioButton3.Checked then end else if RadioButton3.Checked then

end else begin

edJurusan.Text:='Program Intensive Terpadu'; edDaftar.Text:='25000'; edDidik.Text:='650000'; edUjian.Text:='125000';

end; edTotal.Text:=inttostr(strtoint(edDaftar.Text)+ strtoint(edDidik.Text)+

strtoint(edUjian.Text)); end;

Contoh #3

1. Buat form yang terdiri dari Label, Memo, Button dan ComboBox.

2. Simpan nama file unit dengan FContoh3.pas dan file project dengan nama PContoh.dpr.

3. Ubah porperti Items komponen ComboBox1 dan ketik teks daftar pilihan Gemblonx, Combro, Asinan, Misro, Timus, pada jendela String List Editor, dan kosongkan property Text.

4. Ubah property Name ComboBox1 dengan nama cboMakanan

5. Ubah property Name dan Caption komponen Button1 dengan teks Keluar.

6. Ubah property Lines komponen Memo1 dan hapus teks Memo1 pada jendela String Editor List.

Kode: procedure TForm1.KeluarClick(Sender: TObject);

begin Close; //Application.Terminate; end;

procedure TForm1.cboMakananChange(Sender: TObject); begin

Memo1.Lines.Clear; Memo1.Lines.Add('KILAS INFO MAKAN:'); case cboMakanan.ItemIndex of

0: Memo1.Color:=clred;

1: Memo1.Color:=clYellow;

2: Memo1.Color:=clGreen;

3: Memo1.Color:=clMaroon;

4: Memo1.Color:=clLime; end;

if cboMakanan.ItemIndex=0 then Memo1.Lines.Add(cboMakanan.Text+' kesukaanku.') else if cboMakanan.ItemIndex=1 then Memo1.Lines.Add(cboMakanan.Text+' favoritku.') else if cboMakanan.ItemIndex=2 then Memo1.Lines.Add(cboMakanan.Text+' sayangku.') else if cboMakanan.ItemIndex=3 then Memo1.Lines.Add(cboMakanan.Text+' manisku.') else Memo1.Lines.Add(cboMakanan.Text+' idamanku.'); end;

Semua contoh dikutip dari: MADCOMS, 2003, Pemrograman Borland Delphi 7 (Jilid 1), Andi Yogyakarta.

Sumber Pustaka: Marco Cantù, 2001, Mastering Delphi 6, Sybex Inc, Alameda, San Francisco. Kent Residorph, Teach Yourself Borland Delphi 4 in 21 Days, Macmillan Computer

Publishing,Indianapolis.

Class dan Object (Lanjutan)

Membuat Komponen secara dinamis

implementation uses stdctrls; {$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var btn:TButton; Comp: TComponent;

begin if Shift=[ssLeft] then begin

btn:=TButton.Create(self); inc(btn_index); btn.Name:='btn'+inttostr(btn_index); btn.Parent:=self; btn.Left:=X; btn.Top:=Y; btn.Width:=btn.Width+50; btn.Caption:=Format('Button %d di [%d,%d]',[btn_index,X,Y]);

end else if Shift=[ssRight] then begin

if btn_index>0 then begin

Comp:=FindComponent('btn'+inttostr(btn_index)); (Comp as TButton).Free; dec(btn_index);

end; end; end;

procedure TForm1.FormCreate(Sender: TObject); begin

btn_index:=0; end;

Contoh class TDate

unit FDateClass;

interface type

TDate = class private

FDate : TDateTime; function GetDay: Integer; function GetMonth: Integer; function GetYear: Integer; procedure SetDay(const Value: Integer); procedure SetMonth(const Value: Integer); procedure SetYear(const Value: Integer);

public constructor Create;overload; constructor Create(y,m,d:integer);overload; public constructor Create;overload; constructor Create(y,m,d:integer);overload;

end;

implementation uses SysUtils,DateUtils; { TDate }

constructor TDate.Create(y, m, d: integer); begin

FDate:=EncodeDate(y,m,d); end;

constructor TDate.Create; begin

FDate:=Date; end;

procedure TDate.Decrease(Num: Integer); begin

FDate:=FDate-Num; end;

function TDate.GetDay: Integer; begin

Result:=DayOf(FDate); end;

function TDate.GetMonth: Integer; begin

Result:=MonthOf(FDate); end;

function TDate.GetText: String; begin

result:=DateToStr(FDate); end;

function TDate.GetYear: Integer; begin

Result:=YearOf(FDate); end;

procedure TDate.Increase(Num: Integer); begin

FDate:=FDate+Num; end;

function TDate.LeapYear: Boolean; begin

Result:=IsInLeapYear(FDate); end;

procedure TDate.SetDay(const Value: Integer); begin

FDate:=RecodeDay(FDate,Value); end;

procedure TDate.SetMonth(const Value: Integer); begin

FDate:=RecodeMonth(FDate,Value); end;

procedure TDate.SetValue(NewDate: TDatetime); begin

FDate:=NewDate; end;

procedure TDate.SetValue(y, m, d: integer); begin

FDate:=EncodeDate(y,m,d); end;

procedure TDate.SetYear(const Value: Integer); begin

FDate:=RecodeYear(FDate,Value); end;

end.

Program View Date

procedure TForm1.FormCreate(Sender: TObject); begin

theDay:=TDate.Create(2006,1,27); LabelDate.Caption:=theDay.GetText;

end; procedure TForm1.FormDestroy(Sender: TObject); begin

theDay.Free; end; procedure TForm1.btnIncreaseClick(Sender: TObject); begin

theDay.Increase; LabelDate.Caption:=theDay.GetText;

end;

procedure TForm1.btnDecreaseClick(Sender: TObject); begin

theDay.Decrease; LabelDate.Caption:=theDay.GetText;

end;

procedure TForm1.btnAdd10Click(Sender: TObject); begin

theDay.Increase(10); LabelDate.Caption:=theDay.GetText;

end;

procedure TForm1.btnSub10Click(Sender: TObject); begin

theDay.Decrease(10);

LabelDate.Caption:=theDay.GetText; end;

procedure TForm1.btnLeapClick(Sender: TObject); begin

if theDay.LeapYear then LabelDate.Caption:='TRUE' else LabelDate.Caption:='FALSE'; end;

Delphi’s Object Reference Model

Dalam OOP, mendeklarasi variable dari tipe class akan membuat instansi dari class tersebut (Object Reference Model). Variable tersebut, contohnya “theDay“, tidak punya nilai object, sedangkan variable tersebut memiliki reference atau pointer yang mengindikasi lokasi memori dimana object disimpan. Masalahnya adalah pada saat mendeklarasikan variable. Kita tidak membuat object dalam memori. Sehingga kita harus menuliskannya secara manual. theDay:=TDate.Create(2006,1,27);

Assigning Objects

Perhatikan contoh di bawah ini: procedure TForm1.btnTodayClick(Sender: TObject);

var NewDate: TDate; begin NewDate:=TDate.Create; theDay:=NewDate; LabelDate.Caption:=theDay.GetText;

end;

Kode ini hanya akan mengcopy alamat memory dari NewData ke variable theData dan tidak mengcopy datanya. Sehingga hal ini menyebabkan terjadinya memory sampah yang tidak di kendalikan oleh object apapun karena belum dilepaskan. Maka cara yang terbaik adalah: procedure TForm1.btnTodayClick(Sender: TObject);

begin theDay.Free; theDay:=TDate.Create; LabelDate.Caption:=theDay.GetText;

end;

Polymorphism Inherit (Menurunkan) dari Class yang ada

TNewDate=class(TDate) public function GetText: string; end;

{ TNewDate }

function TNewDate.GetText: string; begin

Result:=FormatDateTime('dddddd',FDate); end;

Inheritance dan Kompatibilitas Tipe

interface type

TAnimal = class public

constructor Create; function GetKind: string;

private FKind: string;

procedure TForm1.FormCreate(Sender: TObject); end;

begin

MyAnimal:=TAnimal.Create;

TDog = class (TAnimal)

end;

public

constructor Create; procedure TForm1.RadioButton1Click(Sender: end;

TObject); begin

implementation

if MyANimal<>nil then begin

{ TDog }

FreeAndNil(MyANimal); MyAnimal:=TAnimal.Create;

constructor TDog.Create;

FKind:='Dog';

end; procedure TForm1.RadioButton2Click(Sender: TObject);

{ TAnimal }

begin

if MyANimal<>nil then

constructor TAnimal.Create;

begin

begin

FreeAndNil(MyANimal);

FKind:='Animal';

MyAnimal:=TDog.Create;

end;

end; end;

function TAnimal.GetKind:

string; procedure TForm1.Button1Click(Sender: TObject); begin

begin

Result:=FKind; Label1.Caption:=MyAnimal.GetKind; end;

end;

Override dan Definisi ulang Method

MyClass = class

Untuk mendefinisi ulang method statis kita dapat

public

menambahkan method baru di sub class dengan procedure One;virtual; procedure Two; {static method}

parameter yang sama, dan untuk method virtual

end;

dapat di tambahkan method baru dengan parameter

MySubClass =class(MyClass) yang sama dan diikuti kata kunci “override”.

public

procedure One; override; procedure Two;

end;

procedure MySubClass.One; begin

inherited; end;

Abstract Method

Method abstrak digunakan jika definisi dari method tersebut hanya dilakukan oleh subclass dari class yang bersangkutan.

interface type

TAnimal = class public

constructor Create; function GetKind: string; function Voice:

string;virtual;abstract; function Eat: string;virtual;abstract; private FKind: string; end;

procedure TForm1.FormCreate(Sender: TObject);

TDog = class (TAnimal)

begin

public MyAnimal:=TCat.Create; end;

constructor Create;

function Voice: string;override; function Eat: string;virtual;

procedure TForm1.RadioButton1Click(Sender:

end;

TObject);

TCat = class (TAnimal)

begin

if MyANimal<>nil then public

begin

constructor Create; function Voice: string;override;

FreeAndNil(MyANimal); function Eat: string;virtual;

MyAnimal:=TCat.Create; end;

{ TDog } TForm1.RadioButton2Click(Sender: TObject);

begin

constructor TDog.Create; begin

if MyANimal<>nil then FKind:='Dog';

begin

FreeAndNil(MyANimal); end; MyAnimal:=TDog.Create;

end; end;

function TDog.Eat: string; begin

result:=FKind+' is eating a bone.'; procedure TForm1.Button1Click(Sender: TObject);

end;

begin

function TDog.Voice: string; if MyAnimal is TDog then

Label1.Caption:=

begin result:='Arrfff';

(MyAnimal as TDog).Voice+ ' ' + end;

(MyAnimal as TDog).Eat else

{ TAnimal }

Label1.Caption:=

(MyAnimal as TCat).Voice+ ' ' + (MyAnimal as TCat).Eat

constructor TAnimal.Create;

end;

begin FKind:='Animal'; end;

function TAnimal.GetKind: string; function TAnimal.GetKind: string;

{ TCat }

constructor TCat.Create; begin

FKind:='Cat'; end;

function TCat.Eat: string; begin

Result:=FKind+ ' is eating a fish.'; end;

function TCat.Voice: string; begin

Result:='Meeooooongg'; end;

Contoh #1 (ListBox)

1. Tambahkan komonen ListBox dalam form

2. Ubah property komponen ListBix dengan ketentuan:

a. Ubah property Items dan ktik daftar teks: MS-Word, MS-Excel, MS-Access, MS-Power Point dan MS- Outlook.

b. Ubah property Name dengan lbProgram.

3. Tambahkan satu komponen ComboBox di sembarang tempat dalam form, dengan ketentuan properti sebagai berikut:

a. Ubah property Items dan ketik teks daftar piliha: • Program Pengolah Kata: surat-surat, buku-buku, makalah, paper,

laporan,skripsi dll. • Program Pengolah data dalam bentuk tabel, perhitungan angka/rumus,grafik

dan pengolah data dalam bentuk database, dll. • Program Pengolah database. Untuk membuat lembar kerja form interaktif,

input data, laporan dalambentuk tabel dll. • Program Presentasi data & gambar, biasa digunakan sebagai alat presentasi

dengan OHP di dalam rapat/seminar, dll. • Program Pengolah data dalam bentuk pengiriman surat/e-mail dalam suatu

jaringan komputer intranet/internet.

b. Kosongkan property Text, ubah Name menjadi cboInfo dan Visible menjadi FALSE

4. Klik dua kali komponen lbProgram dan ketik kode sebagai berikut: procedure TForm1.lbProgramClick(Sender: TObject);

begin Memo1.Clear; Memo1.Lines.Add('KILAS INFORMASI PROGRAM KOMPUTER:'); case lbProgram.ItemIndex of

0: Memo1.Color:=clRed;

1: Memo1.Color:=clYellow;

2: Memo1.Color:=clGreen;

3: Memo1.Color:=clLime;

4: Memo1.Color:=clMaroon; end;

if lbProgram.ItemIndex = 0 then Memo1.Lines.Add(cboInfo.Items[0]) else if lbProgram.ItemIndex = 1 then Memo1.Lines.Add(cboInfo.Items[1]) else if lbProgram.ItemIndex = 2 then Memo1.Lines.Add(cboInfo.Items[2]) else if lbProgram.ItemIndex = 3 then Memo1.Lines.Add(cboInfo.Items[3]) else if lbProgram.ItemIndex = 4 then Memo1.Lines.Add(cboInfo.Items[4]); end;

procedure TForm1.btnExitClick(Sender: TObject); begin

Application.Terminate; end;

Contoh #2 (CheckBox)

1. Tambahkan komponen GroupBox dan empat buah komponen CheckBox ke dalam GroupBox.

2. Ubah property Caption dari GroupBox1 dengan tulisan “Format Teks”, serta komponen CheckBox1 sampai CheckBox4 dengan “Teks Tebal”, “Teks Miring”, “Teks Besar”, dan “Teks Kecil”.

3. Tambahkan Komponen Button dan ganti property Name dengan “btnProses” dan Caption dengan “Proses”.

4. Klik dua kali pada Button Proses, kemudian ketik kode di bawah ini:

procedure TForm1.btnProsesClick(Sender: TObject); begin

Memo1.Font.Style:=[]; Memo1.Font.Name:='Bookman

Old Style'; if CheckBox1.Checked then

Memo1.Font.Style:=Memo1.Font. Style+[fsBold];

if CheckBox2.Checked then

Memo1.Font.Style:=Memo1.Font. Style+[fsItalic]; Memo1.Font.Style:=Memo1.Font. Style+[fsItalic];

Contoh #3 (MainMenu & Popup Menu)

1. Buat aplikasi baru dan tambahkan komponen MainMenu dan PopUpMenu. Simpan aplikasi dengan nama file UMenu.pas dan nama file project PMenu.dpr.

2. Pilih perintah MainMenu dan untuk membuka lembar kerja Menu Designer, kita dapat menggunakan salah satu perintah berikut:

a. Klik ganda pada komponen MainMenu

b. Klik kanan pada komponen MainMenu dan pilih perintah Menu Designer

c. Klik tombol builder pada baris property Items.

3. Ketik sebuah item menu “&Warna” pada baris property Caption dalam Object Inspector. Karakter “&” untuk menyatakan karakter menu short cut, di mana pada tampilan menu karakter W akan bergaris bawah.

4. Dengan cara yang sama lengkapi rancangan menu seperti di samping ini.

5. Tambahkan komponen Edit untuk mengaplikasikan penggunaan fungsi dari masing-masing item menu.

6. Langkah selanjutnya adalah pengisian baris program pada item menu. Klik dua kali item menu MainMenu

PopupMenu

Edit1 Edit1

procedure TForm1.Merah1Click(Sender: TObject); begin

Edit1.Color:=clRed; end;

procedure TForm1.Kuning1Click(Sender: TObject); begin

Edit1.Color:=clYellow; end;

procedure TForm1.Hijau1Click(Sender: TObject); begin

Edit1.Color:=clGreen; end;

procedure TForm1.Biru1Click(Sender: TObject); begin

Edit1.Color:=clBlue; end;

procedure TForm1.Besar1Click(Sender: TObject); begin

Edit1.Font.Size:=Edit1.Font.Size+2; end;

procedure TForm1.Kecil1Click(Sender: TObject); begin

Edit1.Font.Size:=Edit1.Font.Size-2; end;

procedure TForm1.ebal1Click(Sender: TObject); begin

Edit1.Font.Style:=Edit1.Font.Style+[fsBold]; end;

procedure TForm1.Miring1Click(Sender: TObject); begin

Edit1.Font.Style:=Edit1.Font.Style+[fsItalic]; end;

7. Langkah pembuatan PopUpMenu hampir sama dengan MainMenu. Buatlah deretan menu untuk PopUpMenu berikut: Teks Merah, Teks Kuning, Teks Hijau, Teks Biru, Teks Regular dan Keluar.

8. Kemudian ubah property PopupMenu pada Form1 dengan PopupMenu1. Kode untuk PopUp Adalah: procedure TForm1.eksKuning1Click(Sender:

TObject); begin

Edit1.Font.Color:=clYellow; end; Edit1.Font.Color:=clYellow; end;

Edit1.Font.Color:=clRed; end;

procedure TForm1.eksHijau1Click(Sender: TObject); begin

Edit1.Font.Color:=clGreen; end;

procedure TForm1.teksBiru1Click(Sender: TObject); begin

Edit1.Font.Color:=clBlue; end;

procedure TForm1.eksRegular1Click(Sender: TObject); begin

Edit1.Font.Style:=[]; end;

procedure TForm1.Keluar1Click(Sender: TObject); begin

Application.Terminate; end;

Semua contoh dikutip dari: MADCOMS, 2003, Pemrograman Borland Delphi 7 (Jilid 1), Andi Yogyakarta.

Sumber Pustaka: Marco Cantù, 2001, Mastering Delphi 6, Sybex Inc, Alameda, San Francisco. Kent Residorph, Teach Yourself Borland Delphi 4 in 21 Days, Macmillan Computer

Publishing,Indianapolis.

KOMPONEN DELPHI 1

ActionList

Komponen ini berisi daftar aksi yang dapat digunakan bersama-sama dengan komponen dan control lain.

1. Klik komponen ActionList dan letakkan pada lembar kerja Form Designer.

2. Klik kanan object ActionList dan pilih perintah Action List Editor dari daftar menu popup yang ditampilkan atau dengan bias juga dengan klik ganda object tersebut.

3. Klik tombol drop down New Action untuk mulai membuat daftar aksi.

4. New Action, item menu yang digunakan untuk menambahkan sebuah aksi baru dalam daftar dengan cara membuat dan menentukan perintah sendiri.

5. Buat Action baru dengan ketentuan sebagai berikut: Category Window: WindowClose; Category Edit: EditCopy, EditCut, EditPaste.

6. Kemudian buat komponen TextBox dan Button seperti pada gambar disamping:

7. Kosongkan property Text untuk kedua komponen Edit.

8. Ubah property Action untuk keempat komponen Button tersebut di atas dengan ketentuan: • Pilih aksi EditCut untuk Button1 • Pilih aksi EditCopy untuk Button2 • Pilih aksi EditPaste untuk Button3 • Pilih aksi WindowClose untuk Button4

9. Tulis kode dengan cara klik ganda daftar aksi pada kotak action list dengan ketikan kode program sebagai berikut: procedure TForm1.EditCopyExecute(Sender: TObject);

begin Edit1.SelectAll; Edit1.CopyToClipboard;

end;

procedure TForm1.EditCutExecute(Sender: TObject); begin

Edit1.SelectAll; Edit1.CutToClipboard; Edit1.Clear;

end;

procedure TForm1.EditPasteExecute(Sender: TObject); begin

Edit2.Clear; Edit2.PasteFromClipboard;

Edit2.SetFocus; end;

procedure TForm1.WindowCloseExecute(Sender: TObject); begin

Application.Terminate; end;

MaskEdit

1. Letakkan empat komponen MaskEdit, empat Label dan dua Button pada form.

2. Ubah property Label dan Button dengan ketentuan: • Ubah property Caption untuk komponen Label1

sampai Label4 dengan teks Kode Barang, Kode Jual, Tanggal Jual dan Kota Tujuan.

• Ubah Properti Caption untuk komponen Button1 dan Button2 dengan teks Proses dan Keluar.

3. Buat kode format (mask) kompone MaskEdit dengan klik kanan komponen MaskEdit dan pilih perintah Input Mask Edit dari menu popup yang ditampilkan. • Input Mask, digunakan untuk mendefinisikan kode format (mask) untuk kotak edit. Penulisan

mask terbagi dalam tiga bagian field yang dipisahkan oleh karakter titik koma. • Character For Blanks menyatakan karakter yang dipakai sebagai pengisi spasi atau ruang kosong di dalam mask. • Save Literal Characters adalah kotak cek yang digunakan untuk menginsdikasikan apakah karakter literal dari mask akan disimpan di dalam data. • Test Input digunakan untuk menguji mask yang telah dibentuk pada bagian input mask. Kotak teks ini menampilkan mask seperti tampilan pada form. • Sample Masks adalah bagian yang menampilkan pilihan mask yang disediakan Delphi yang dapat digunakan pemakai. • Masks digunakan untuk menampilkan pilihan bentuk penulisan mask dari suatu Negara tertentu. Tabel Kode Format.

Kode Keterangan

> Kode yang menyatakan bahwa semua karakter yang mengikutinya akan diubah menjadi huruf besar sampai ditemukan karakter >.

< Kode yang menyatakan bahwa semua karakter yang mengikutinya akan diubah menjadi huruf kecil sampai ditemukan karakter <.

<> Kode yang menyatakan bahwa tidak ada pemeriksaan penulisan huruf besar dan kecil dan data diformat sesuai dengan data saat diinputkan

\ Kode yang menyatakan bahwa karakter yang mengikutinya adalah karakter \ Kode yang menyatakan bahwa karakter yang mengikutinya adalah karakter

L Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini hanya menerima data karakter, yaitu A-Z atau a-z

l Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini hanya menerima data karakter, tetapi tidak harus ada atau boleh dikosongkan

A Kode yang menyatakan bahwa posisi yang diwakili oelh penulisan kode ini hanya dapat menerima data karakter dan angka (A-Z,a-z, dan 0-9).

a Kode yang menyatakan bahwa posisi yang diwakili oelh penulisan kode ini hanya dapat menerima data karakter dan angka (A-Z,a-z, dan 0-9), tetpai tidak harus ada atau boleh kosong.

C Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini dapat menerima sembarang karakter.

c Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini dapat menerima sembarang karakter, tetapi tidak harus ada atau boleh dikosongkan

0 Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini dapat menerima data angka, yaitu 0-9

9 Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini dapat menerima data angka, yaitu 0-9, tetapi tidak harus ada atau boleh dikosongkan

# Kode yang menyatakan bahwa posisi yang diwakili oleh penulisan kode ini dapat menerima data angka, yaitu 0-9, tanda minus dan plus, tetapi tidak harus ada atau boleh dikosongkan

: Kode yang digunakan untuk memisahkan penulisan data waktu, yaitu jam, menit dan detik

/ Kode yang digunakan untuk memisahkan penulisan data tanggal, yaitu: tanggal, bulan dan tahun

; Kode yang digunakan untuk memisahkan tiga bagian field dalam kotak teks Input Mask

- Kode yang digunakan untuk menyisipkan spasi dalam teks secara otomatis.

Karakter literal adalah karakter-karakter lain yang tidak tercantum dalam table di atas. Karakter literal akan ditambahkan secara otomatis dan kursor akan melewatinya pada saat proses input data. Karakter literal khusus akanditampilkan jika penulisannya didahului oleh \.

4. MaskEdit1 untuk input Kode Barang: >LL\-00;1;_ Karakter pertama dan kedua harus berisi data teks, karakter ketiga dan keempat harus berisi angka, dan angka 1 pada posisi field ke-2 menunjukan bahwa karakter literal “-“ termasuk dalam data sehingga data input Kode Barang terdiri dari 5 karakter.

5. MaskEdit2 untuk data input kode Jual: >L\-0\-L;0;_ Karakter pertama dan ketiga harus berisi teks, karakter kedua harus berisi data angka, dan angka 0 pada posisi field ke-2 menunjukkan bahwa dua karakter literal “-“ tidak termasuk dalam data sehingga data input Kode Jual terdiri dari 3 karakter.

6. MaskEdit3 untuk dara input Tanggal Jual: !99/99/0000;1;_ Karakter pertama dan kedua adalah data angka untuk bulan, karakter ketiga dan keempat adalah data tanggal, di mana data angka bulan dan tanggal boleh diisi dengan 1 digit atau 2 digit. Karakter kelima dan tanggal boleh diisi dengan 1 digit atau 2 digit. Karakter kelima sampai kedelapan harus berisi data angka, serta angka 1 pada posisi field ke-2 menunjukkan bahwa dua karakter literal “/” termasuk dalam data sehingga data input tanggal Jual terdiri dari 10 karakter.

7. MaskEdit4 untuk data input Kota Tujuan: >l<llllllllllllll;1;_

Kode terdiri dari 15 kode l kecil yang menunjukan bahwa data input untuk Kota Tujuan maksimal

15 karakter. Karakter pertama akan diubah menjadi huruf besar sedangka karakter kedua dan seterusnya diubah menjadi huruf kecil.

CheckListBox

1. Buatlah aplikasi baru dengan menambahkan komponen CheckListBox dan beberapa komponen lain.

2. Pilih komponen CheckList dan klik tombol Elipsis (…) pada properti Items untuk memasukkan daftar pilihan yang akan ditampilkan: Cetak Tebal, Cetak Miring, Cetak Garis, Cetak Coret, Warna Latar, Warna Font, Jenis Font dan Ukuran Font.

3. Ketik Kode berikut pada event OnClick di komponen CheckListBox: procedure TForm1.CheckListBox1Click(Sender: TObject);

begin if CheckListBox1.State[0]=cbChecked then Edit1.Font.Style:=Edit1.Font.Style+[fsBold] else Edit1.Font.Style:=Edit1.Font.Style-[fsBold];

if CheckListBox1.State[1]=cbChecked then Edit1.Font.Style:=Edit1.Font.Style+[fsItalic] else Edit1.Font.Style:=Edit1.Font.Style-[fsItalic];

if CheckListBox1.State[2]=cbChecked then Edit1.Font.Style:=Edit1.Font.Style+[fsUnderline] else

Edit1.Font.Style:=Edit1.Font.Style-[fsUnderline];

if CheckListBox1.State[3]=cbChecked then Edit1.Font.Style:=Edit1.Font.Style+[fsStrikeOut] else Edit1.Font.Style:=Edit1.Font.Style-[fsStrikeOut];

if CheckListBox1.State[4]=cbChecked then begin

COmboBox1.Visible:=true; Label1.Visible:=true;

end else begin

COmboBox1.Visible:=false; Label1.Visible:=false;

end; if CheckListBox1.State[5]=cbChecked then begin

COmboBox2.Visible:=true; Label2.Visible:=true;

end else begin

COmboBox2.Visible:=false; Label2.Visible:=false;

end; if CheckListBox1.State[6]=cbChecked then begin

COmboBox3.Visible:=true; Label3.Visible:=true;

end else begin

COmboBox3.Visible:=false; Label3.Visible:=false;

end; if CheckListBox1.State[7]=cbChecked then begin

COmboBox4.Visible:=true; Label4.Visible:=true;

end else begin

COmboBox4.Visible:=false; Label4.Visible:=false;

end; end;

4. Definisikan property untuk komponen lain dengan ketentuan: • Ubah property Caption untuk Label1 sampai Label4 dengan teks Warna Latar, Warna Font, Jenis Font dan Ukuran Font • Ubah property Caption untuk komponen Button1 dengan teks “Keluar”. • Hapus Caption untuk ComboBox • Ubah Properti Visible menjadi False untuk komponen Label1-Label4 dan ComboBox1-

ComboBox4

5. Definisikan property pada masing-masing komponen ComboBox dengan ketentuan:

• IsiProperti Items ComboBox1 dengan teks Merah, Kuning, Hijau dan Biru. Kode untuk event OnChange: case ComboBox1.ItemIndex of

0: Edit1.Color:=clred;

1: Edit1.Color:=clYellow;

2: Edit1.Color:=clGreen;

3: Edit1.Color:=clBlue; end; • IsiProperti Items ComboBox2 dengan teks Merah, Kuning, Hijau dan Biru. Kode untuk

event OnChange: case ComboBox2.ItemIndex of

0: Edit1.Font.Color:=clred;

1: Edit1.Font.Color:=clYellow;

2: Edit1.Font.Color:=clGreen;

3: Edit1.Font.Color:=clBlue; end ; • IsiProperti Items ComboBox3 dengan teks Arial, Courer, Roman, Comic Sans. Kode

untuk event OnChange case ComboBox3.ItemIndex of

0: Edit1.Font.Name:='Arial';

1: Edit1.Font.Name:='Courier New';

2: Edit1.Font.Name:='Times New Roman';

3: Edit1.Font.Name:='Comic Sans MS'; end; • IsiProperti Items ComboBox3 dengan teks 12, 16, 20 dan 24. Kode untuk event

OnChange if ComboBox4.ItemIndex>-1 then

Edit1.Font.Size:=strtoint(ComboBox4.Text);

6. Ketik kode pada komponen Button1 di event OnClick: procedure TForm1.KeluarClick(Sender: TObject);

begin Close; end;

TrackBar

1. Buat aplikasi dengan menggunakan beberapa komponen seperti Shape1 dan ubah Name menjadi Kotak, tambahkan komponen Label sebanyak tujuh dengan Caption masing-masing: Lebar, Tinggi, Merah, Hijau dan Biru.

2. Tambahkan pula komponen Button sebanyak dua dan ubah name manjadi Ulang dan Keluar.

3. Tambahkan komponen Edit sebanyak tujuh dan ubah Name-nya menjadi edLebar, edTinggi, edMerah, edHijau dan edBiru

4. Tambahkan komponen TrackBar sebanyak tujuh dan ubah Name-nya menjadi trkLebar, trkTinggi, trkMerah, trkHijau dan trkBiru.

5. Untuk komponen trkLebar dan trkTinggi, ubah property Max dengan nilai 200

6. Untuk komponen trkMerah, trkHijau dan trkBiru, ubah property Max dengan nilai 255.

7. Tuliskan kodenya sebagai berikut: procedure TForm1.trkLebarChange(Sender: TObject);

begin edLebar.Text:=IntTostr(trkLebar.Position); Kotak.Width:=trkLebar.Position;

end;

procedure TForm1.trkTinggiChange(Sender: TObject); begin

edTinggi.Text:=IntToStr(trkTinggi.Position); Kotak.Height:=trkTinggi.Position;

end;

procedure TForm1.trkMerahChange(Sender: TObject); begin

edMerah.Text:=IntTostr(trkMerah.Position);

Kotak.Brush.Color:=RGB(trkMerah.Position,trkHijau.Position,trkBiru.Posi tion); end;

procedure TForm1.trkHijauChange(Sender: TObject); begin

edHijau.Text:=IntTostr(trkHijau.Position);

Kotak.Brush.Color:=RGB(trkMerah.Position,trkHijau.Position,trkBiru.Posi tion); end;

procedure TForm1.trkBiruChange(Sender: TObject); begin

edBiru.Text:=IntTostr(trkBiru.Position);

Kotak.Brush.Color:=RGB(trkMerah.Position,trkHijau.Position,trkBiru.Posi tion); end;

procedure TForm1.KeluarClick(Sender: TObject); begin

Close; end;

procedure TForm1.UlangClick(Sender: TObject); begin

trkLebar.Position:=0; trkTinggi.Position:=0; trkMerah.Position:=0; trkHijau.Position:=0; trkBiru.Position:=0;

end;

Semua contoh dikutip dari: MADCOMS, 2003, Pemrograman Borland Delphi 7 (Jilid 1), Andi Yogyakarta.

PEMROGRAMAN DATABASE

Arsitektur Database Delphi

Fitur-fitur ringkasan database Tool Kegunaan

Data Access components Access databases, tables, stored procedures, and custom component editors. Data Control components

Provide user interface to database tables.

Database Desktop (DBD)

Create, index, and query Paradox and dBASE tables, and SQL databases. Access and edit data from all sources.

Database

Database terdiri dari tabel-tabel, dimana tiap tabel berisi kolom-kolom yang membentuk record atau baris.

Memahami arsitektur komponen database

Sumber data Delphi Data source

Description

File extension

Paradox

Tables created with Paradox or Database Desktop.

.DB

Each table is in a separate file.

dBASE

Tables created with dBASE or Database Desktop.

.DBF

Each table is in a separate file.

ASCII files

Tables created with Database Desktop. Each table is

.TXT

in a separate file.

Local InterBase Server

Database created with InterBase Windows

.GDB

ISQL.Multiple tables in a single database file.

SQL Database Server: Oracle, Sybase,Microsoft

Depends on server SQL Server, Informix, InterBase

Database created with server-specific tools, or the

DBD, accessed across network with SQL Links. Delphi Client/Server Edition only.

ODBC data sources

Databases such as Microsoft Access, Btrieve, FoxPro,

Depends on data source

etc.

Komponen Data Access

Komponen ini merupakan komponen yang digunakan untuk mengakses database, diantaranya terdiri dari:

Komponen Fungsi

Komponen penghubung antara komponen Data Access dengan DataSource

komponen Visual Data Aware Komponen untuk mengimplementasikan suatu cache dataset dalam

ClientDataSet

memori Menyandikan data dalam paket yang dapat dikirim ke client dan

DatasetProvider

menerima perubahan yang diterima dari client Mengubah dokumen XML dalam suatu paket data atau sebuah paket

XMLTransform data XML ke sebuah dokumen XML dengan struktur yang berbeda. Menyediakan data dari sebuah Dokumen XML ke suatu dataset

XMLTransfromProvider client atau XML broker dan menetapkan perubahan dari dataset client atau XML broker kembali ke sumber dokumen XML Mengubah data dari suatu provider ke dalam dokumen XML dan

XMLTransformClient menetapkan perubahan dalam form suatu dokumen XML ke suatu komponen provider.

Komponen Borland Database Engine (BDE)

Komponen Fungsi

Komponen yang digunakan sebagai Data Source yang mengakses

Table

record dari table Komponen yang digunakan sebagai data source yang mengakses

Query

record dari table berdasarkan perintah SQL Komponen yang digunakan sebagai data source yang mengakses record dari table berdasarkan perintah store procedure untuk

StoredProc

database server Komponen yang digunakan untuk membuat hubungan client/server

Database

dengan sebuah database dalam sebuah session Komponen yang digunakan untuk membuat suatu session dalam

Session

aplikasi database tingkat-ganda Komponen yang digunakan memindahkan seluruh record/field dari

BatchMove

suatu table ke table lain dengan cepat Komponen yang digunakan untuk menjalankan perintah SQL seperti

UpdateSQL

INSERT, UPDATE, DELETE dan lain-lain Komponen yang digunakan untuk memanggil data dalam suatu field

dataset bersarang dan memberikannya ke komponen data-aware NestedTable

melalui komponen data source.

Komponen-komponen ini digunakan untuk menghubungkan database dengan driver dari Borland Database Engine. Diantaranya adalah:

Komponen Data Controls

Komponen-komponen ini digunakan sebagai alat komunikasi antara pemakai dengan Data Source yang diletakan pada bagian Form. Diantaranya adalah:

Contoh Kasus Sistem Penjualan Barang

Membuat file database

1. Pilih menu Tools->DatabaseDekstop, kemudian pilih menu Working Directory, untuk menentukan direktori/folder sebagai tempat file-file database diletakkan.

2. Lalu buat table untuk databasenya dengan memilih menu File->New->Table, kemudian muncul dialog box dan biarkan table type berisi Paradox 7, klik tombol OK.

3. Kemudian isilah field dan tipenya.