Arsip: Buat class di Delphi untuk sebagai manager
                
                   more 18 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 18 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
                  
                AI Forward
            
🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: 
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 5 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
 - Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 13 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 13 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 13 years ago 
Random Topic
- Select Case when then hasilnya masih salah
by onsir in MySQL more 18 years ago - Mohon pertolongan nya master2 delphi
by fongers in Hal umum tentang Pascal Indonesia more 17 years ago - Print Secara Otomatis
by umarbakri in Hal umum tentang Pascal Indonesia more 19 years ago - OnMouseLeave..
by pikachu in Form Enhancement & Graphical Controls more 18 years ago - Harga Software
by delphi1st in Tip n Trik Pemrograman more 18 years ago - Indy
by Butani in Tip n Trik Pemrograman more 18 years ago - Ternyata programmer bisa juga jadi milyuner
by delphinewbie in OOT more 18 years ago - auto_increment
by irmains in MySQL more 16 years ago - AQ3: Cannot Perform this operation an a closed dataset
by ade_jm in Hal umum tentang Pascal Indonesia more 13 years ago - Delphi oh Delphi
by Butani in OOT more 18 years ago