Arsip: Buat class di Delphi untuk sebagai manager

more 15 years ago
hendra_sir84
Hallo teman2.
Saya mau nanya, gimana caranya kita membuat class di Delphi dimana class tersebut nantinya akan menerima object2 yang akan di manipulasi.
Contohnya : ada class A yang isinya button dgn nama btnOK, kemudian class A akan memanggil class C.
Class C ini akan menerima objek bntOK, dan dalam class tersebut terdapat procedure Z untuk btnOK.Enable := false.
Nah dari class A kita dapat mengakses procedure Z dengan memparsing objek yang akan dimanipulasi dan statusnya.
Gimana cara membuat class C tersebut dan procedure Z nya???
Bantu dong, saya kurang tau.

more 15 years ago
cikumiyu
Untuk mengatur sekumpulan object dari type data yang sama memang sebaiknya dibuat sebuah class yang berfungsi seperti halnya seorang manager. Class ini, kita sebut saja misalnya class manager akan bertanggung jawab untuk menjalankan segala operasi yang berkenaan dengan object² yang dimanage-nya.
Agar lebih jelas, saya telah buatkan sebagai contoh sebuah class manager TTableManager yang akan mengatur kumpulan object bertipe date TTable.
unit TestManagerUnit;
interface
uses Classes;
type
TTable = class
private
FTableId: string;
FNumberOfSeats: Integer;
public
constructor Create(ANumberOfSeats: Integer);
property TableId: string read FTableId write FTableId;
property NumberOfSeats: Integer read FNumberOfSeats write FNumberOfSeats;
end;
TTableManager = class
private
FTtables: TList;
public
constructor Create;
destructor Destroy; override;
procedure AddTable(ATableId: string; ANumberOfSeats: Integer);
function GetTable(ATableId: string): TTable;
procedure DeleteTable(ATableId: string);
procedure SetNumberOfSeats(ATableId: string; ANewNumberOfSeats: Integer);
property Tables: TList read FTables write FTables;
end;
implementation
{ TTable }
constructor TTable.Create(ANumberOfSeats: Integer);
begin
FNumberOfSeats := ANumberOfSeats;
end;
{ TTableManager }
constructor TTableManager.Create;
begin
FTables := TList.Create;
end;
destructor TTableManager.Destroy;
begin
FTables.Free;
inherited;
end;
procedure AddTable(ATableId: string; ANumberOfSeats: Integer);
var
table: TTable;
begin
table := TTable.Create(ANumberOfSeats);
table.TableId := ATableId;
FTables.Add(table);
end;
function TTableManager.GetTable(ATableId: string): TTable;
var
i: Integer;
entry: TTable;
begin
Result := nil;
for i := 0 to FTables.Count-1 do
begin
entry := FTables[i];
if entry <> nil then
if entry.TableId = ATableId then
begin
Result := entry;
Exit;
end;
end;
end;
procedure TTableManager.DeleteTable(ATableId: string);
var
theTable: TTable;
begin
theTable := GetTable(ATableId);
if theTable <> nil then
begin
FTables.Remove(theTable);
theTable.Free;
end;
end;
procedure TTableManager.SetNumberOfSeats(ATableId: string; ANewNumberOfSeats: Integer);
var
entry: TTable;
begin
entry := GetTable(ATableId);
if entry <> nil then
entry.NumberOfSeats := ANewNumberOfSeats;
end;
end.
Source dari file projectnya bisa dilihat sebagai berikut:
program TestManager;
{$APPTYPE CONSOLE}
uses
SysUtils,
TestManagerUnit in 'TestManagerUnit.pas';
const
MAX_NUMBER_OF_TABLES = 10;
NUMBER_OF_SEATS = 10
var
tableManager: TTableManager;
i: Integer;
tableId: string;
begin
tableManager := TTableManager.Create;
{ Menambahkan object table dari class TTable }
for i := 0 to MAX_NUMBER_OF_TABLES-1 do
begin
tableId := 't-' + IntToStr(i);
tableManager.AddTable(tableId, NUMBER_OF_SEATS);
end;
{ Mengubah property NumberOfSeats dari salah satu table dengan id 't-5' menjadi 2. }
tableManager.SetNumberOfSeats('t-5', 2);
{ Tampilkan isi container dari table manager }
for i := 0 to tableManager.Tables.Count-1 do
begin
Writeln(TTable(tableManager.Tables[i]).TableId, ' ', TTable(tableManager.Tables[i]).NumberOfSeats);
end;
Readln;
end;
Semoga cukup jelas dan bisa membantu. Mohon maaf kalau ada compiled-error. Saya buatnya pake Notepad2. Ngga ada IDE Delphi nih. :Dmore ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 2 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 3 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 10 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 10 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 10 years ago
Random Topic
- gimn cara memasukkan hasil .exe dari delphi ke PHP
by hasrijal in Network, Files, I/O & System more 15 years ago - Video Capture
by greatjon2002 in Multimedia & Graphic Enhancement more 16 years ago - QuickReport-PageFooter
by ichan29 in Tip n Trik Pemrograman more 15 years ago - Dua database di satu aplikasi dgn satu komponen dbexpress
by derry.othman in Hal umum tentang Pascal Indonesia more 15 years ago - delphi????
by p2bf in Tip n Trik Pemrograman more 16 years ago - blajar ZQuery
by luq_h in MySQL more 11 years ago - Delphi For Dummies
by ndenkltop in Kritik & Saran more 15 years ago - The Future of Delphi looks brighter than ever before!
by DelphiExpert in Hal umum tentang Pascal Indonesia more 13 years ago - program ga jalan gara2 resolusi
by dinox in Tip n Trik Pemrograman more 16 years ago - bantu bikin sekripsi
by sumedi in OOT more 15 years ago