Melanjutkan posting sebelumnya, langkah selanjutnya adalah membuat form template. Tambahkan form baru atau gunakan form sudah ada, karena dalam tutorial ini rancangannya adalah MDI Appication, maka anda harus mengatur beberapa property form sebagai berikut:
- Formstyle=fsMDIChild
-Position=poDefaultPosOnly
Jika sudah selesai, namai form tersebut misal FrmTemplate lalu simpan form tersebut dalam folder template*)
Dari class TfrmTemplate tersebut, kita akan menurunkan class baru untuk proses tambah edit hapus. Klik menu File->new->Other. Setelah itu pilih tab Inheritable Items. Lihat gambar bawah berikut:
Klik OK, lalu namai dengan FrmTemplateMaster.
Jika sudah, kita tambahkan komponen:
1. Zquery, kita namai dengan zqrymaster
2. ZupdateSQL, kita namai dengan zupdsql
3. 5 buah button untuk tambah simpan edit hapus. Kita namai masing-masing btnsimpan,btnbatal, btntambah,btnedit,btndelete
Jika sudah selesai, namai form tersebut misal FrmMaster, lalu simpan di folder template.
Tambahkan procedure berikut di bagian protected(secara default form tidak ada bagian protected untuk itu anda bisa menambahkannya sendiri)
protected
procedure setEnabledSave(isEnabled:boolean);virtual;
Dibagian implementation:
procedure TfrmTemplateMaster.setEnabledSave(isEnabled: Boolean);
begin
btnsimpan.enabled=isEnabled;
btnbatal.enabled=isEnabled;
btntambah.enabled=not isEnabled;
btnedit.enabled=not isEnabled;
btnhapus.enabled=not isEnabled;
end;
Lihat gambar berikut untuk lebih lengkap:
Anda tidak harus mengetik script di atas. Untuk cara mudahnya anda bisa gunakan add-ins GExpert. Jika sudah anda install pilih menu GExperts->Copy Components Name lalu paste di Regex Editor seperti gambar berikut:
Jika itu sudah anda lakukan, maka langkah selanjutnya adalah menyetting beberapa properti zqrymaster sebagai berikut:
1. CachedUpdate=true
2. UpdateObject=zupdsql
Tambahkan beberapa kode berikut:
Pada tombol tambah:
procedure TFrmTemplateMaster.btntambahClick(Sender: TObject);
begin
inherited;
zqrymaster.Append;
SetEnabledSave(true);
end;
Pada tombol edit:
procedure TFrmTemplateMaster.btneditClick(Sender: TObject);
begin
inherited;
zqrymaster.Edit;
setenabledSave(true);
end;
Pada tombol hapus:
procedure TFrmTemplateMaster.btnhapusClick(Sender: TObject);
var cn:Tzconnection;
begin
inherited;
cn:=Tzconnection(zqrymaster.Connection);
if not cn.InTransaction then
cn.StartTransaction;
try
zqrymaster.Delete;
zqrymaster.ApplyUpdates;
cn.Commit;
zqrymaster.CommitUpdates;
except
on E:exception do
begin
cn.Rollback;
messagedlg(e.Message,mterror,[mbok],0);
zqrymaster.CancelUpdates;
end;
end;
end;
Pada tombol batal:
procedure TFrmTemplateMaster.btnbatalClick(Sender: TObject);
begin
inherited;
zqrymaster.CancelUpdates;
SetEnabledSave(false);
end;
Pada tombol simpan:
procedure TFrmTemplateMaster.btnsimpanClick(Sender: TObject);
var cn:Tzconnection;
begin
inherited;
cn:=Tzconnection(zqrymaster.Connection);
if zqrymaster.state in [dsInsert,dsedit] then
zqrymaster.post;
if not cn.InTransaction then
cn.StartTransaction;
try
zqrymaster.ApplyUpdates;
doAfterApplyUpdates;
if zqrymaster.Fields[0].IsNull then
begin
zqrymaster.Edit;
zqrymaster.Fields[0].Value:=Fid;
zqrymaster.Post;
end;
cn.Commit;
zqrymaster.CommitUpdates;
except
on E:exception do
begin
cn.Rollback;
messagedlg(e.Message,mterror,[mbok],0);
end;
end;
end;
Script lebih lengkap
Komentar
Posting Komentar
Beri komentar terbaik. Komentar yang ala kadarnya tidak akan saya tampilkan.