Daily Archiv: Saturday - 09 March 2013

Memperbaiki “bug” TDataSetInsert (ActionList)

Pada komponen ActionList telah disediakan banyak sekali action Standard yang akan sangat membantu dalam pemrograman delphi tanpa harus menulis code lagi secara manual.

Fungi-fungsi standar seperti File, Edit, Dataset dan lain-lain sudah tersedia kita tinggal pake, jika dikehendaki kita hanya perlu mengganti Caption dan iconnya saja.

Dalam prakteknya action standard yang telah disediakan ada kalanya tidak sesuai atau kurang mewakili kebutuhan kita.

Setelah pada bahasan sebelumnya kita Menambahkan dialog konfirmasi pada TDataSetDelete, kali kita akan memperbaiki “bug” yang ada pada TDataSetInsert.

Pada TDataSetInsert yang asli (contoh kasus menggunakan Delphi 2006), dia tetap aktif setelah kita melakukan Insert atau Edit. Hal ini cukup mengganggu kenyamanan manakala setelah user melakukan Insert/Edit belum selesai kemudian tanpa sengaja menekan button insert lagi, akibatnya data yang belum lengkap akan tersimpan, hal ini bisa jadi masalah jika ada persyaratan semua field harus lengkap sebelum tersimpan.

Berikut ini contoh kodenya …

uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DBCtrls,
  Grids, DBGrids, DB, DBActns, ActnList;

type
  // Tambahkan ini ...
  TDataSetInsert = class(DBActns.TDataSetInsert)
    procedure UpdateTarget(Target: TObject); override;
  end;
  // Sampai sini .. Tekan Ctrl+Shift C untuk menulis codenya
  TForm1 = class(TForm)

...

...

...

{ TDataSetInsert }
procedure TDataSetInsert.UpdateTarget(Target: TObject);
begin
  with GetDataSet(Target) do
    Enabled := Active and CanModify and (State=dsBrowse);
end;

Semoga bermanfaat