Kamis, 25 April 2024

Menambahkan Event pada Komponen turunan

Contoh berikut menambahkan event pada komponen bpiConnector , tujuanya untuk menambahkan indicator status koneksi database , event tersebut diambil dari event komponen master (misalnya: TMySQL55Connection) yg diteruskan pada komponen bpiConnector:

-AfterConnect
-AfterDisconnect

nantinya akan tersedia beberapa status koneksi sbb:

-property "Connected"
-property "ConnectionIndicatorLabel"
-property "ConnectionIndicatorImage"
-property "ConnectedImage"
-property "DisconnectedImage"

1.didalam blok "published" tambahkan property:
property OnAfterConnect:TNotifyEvent read FOnAfterConnect write FOnAfterConnect;
property OnAfterDisconnect:TNotifyEvent read FOnAfterDisconnect write FOnAfterDisconnect;

-kemudian tekan (Ctrl+Shift+c) , maka akan terbentuk variable private

2.pastikan didalam blok "private" sudah terbentuk variable
FOnAfterConnect
FOnAfterDisconnect

3.pada procedure "create/connect" component , buat code untuk memforward event dari komponen parent misal sbb:

      MySQL55Con.AfterConnect:=@ParentAfterConnect;
      MySQL55Con.AfterDisconnect:=@ParentAfterDisconnect;   

4.didalam blok "private" buat procedure sbb :
procedure ParentAfterConnect(Sender: TObject);
procedure ParentAfterDisconnect(Sender: TObject);

-kemudian tekan (Ctrl+Shift+c) , maka akan terbentuk kerangka procedure dibawah

5.didalam blok kerangka procedure masukkan code untuk meneruskan event dari komponen parent ke property sbb:

if Assigned(OnAfterConnect) then OnAfterConnect(Self);  
if Assigned(OnAfterDisconnect) then OnAfterDisconnect(Self);  

jadinya sbb :

procedure TbpiConnector.ParentAfterConnect(Sender: TObject);
begin
  if Assigned(OnAfterConnect) then OnAfterConnect(Self);
end;

procedure TbpiConnector.ParentAfterDisconnect(Sender: TObject);
begin
  if Assigned(OnAfterDisconnect) then OnAfterDisconnect(Self);
end;  

6.pada option package , pilih sintax mode :
Object Pascal - default (-MObjFPC)

7.dibawah nama unit pastikan/tambahkan kode sbb:
{$mode objfpc}{$H+} 

8.padapackage manager klik compile , kemudian use-install


Catatan :
-Event "AfterDisconnect" tidak dapat mendeteksi jika server terputus/server melakukan disconnect (lost connection), tetapi berfungsi jika client (aplikasi/kompnen ini) memanggil procedure disconnect