Seringkali kita ingin membuat pilihan data dari database untuk dipilih dan dijadikan dasar untuk data berikutnya. Dalam kasus ini saya ingin mencontohkan sebuah perusahaan dagang yang mingirimkan barang. Satu pengiriman terdiri atas beberapa tagihan (invoice). Jadi satu kali pengiriman bisa berisi beberapa faktur/invoice. Disini Invoice dipilih dulu setelah dipilih maka digabung menjadi 1 pengiriman
Untuk membuat interfacenya di Delphi kita tampilkan dbgrid invoice, lalu dipilih mana-mana yang mau dikirim saat itu, kemudian setelah dipilih maka akan tampil form pengiriman yang terdiri atas invoice-invoicenya yang dipilih tersebut. Permasalahannya bagaimanakah cara membuat checkbox didbgrid tersebut?
Caranya adalah sbb
Klik komponen DBGRID
pada event double klik oncellclick, lalu ketikan kode dibawah ini
if Self.DBGrid.SelectedField.DataType = ftBoolean then
SaveBoolean();
pada event oncolenter, ketikan kode dibawah ini
if Self.DBGrid.SelectedField.DataType = ftBoolean then
begin
Self.FOriginalOptions := Self.DBGrid.Options;
Self.DBGrid.Options := Self.DBGrid.Options - [dgEditing];
end;
Pada event DrawColumnCell, kodenya sbb, ikuti dan sesuaikan
procedure TNamaForm.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Const
CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
DFCS_BUTTONCHECK or DFCS_CHECKED);
var
CheckBoxRectangle : TRect;
begin
if Column.Field.DataType = ftBoolean then
begin
Self.DBGrid.Canvas.FillRect(Rect);
CheckBoxRectangle.Left := Rect.Left + 2;
CheckBoxRectangle.Right := Rect.Right - 2;
CheckBoxRectangle.Top := Rect.Top + 2;
CheckBoxRectangle.Bottom := Rect.Bottom - 2;
DrawFrameControl(Self.DBGrid.Canvas.Handle,
CheckBoxRectangle,
DFC_BUTTON,
CtrlState[Column.Field.AsBoolean]);
end;
end;
Lalu buatlah Procedure dengan nama SaveBoolean (jangan lupa deklarasikan juga)
procedure TNamaForm.SaveBoolean;
var pilihan:integer;
begin
//contoh disini nama datasourcenya DsListInvoice
if not(DsListInvoice.DataSet.State in [dsEdit]) then
DsListInvoice.DataSet.Edit;
if Self.DBGrid.SelectedField.AsBoolean=false then
begin
{pada saat membuat tabel yang Anda inginkan, tambahkan kolom dengan nama selected untuk flag pilih ya atau tidak, disini 1 berarti true dan 0 berarti false}
Table1selected.AsInteger:=1;
end
else
Table1selected.AsInteger:=0;
end;
Contoh tersebut bisa diterapkan di aplikasi lain yang membutuhkan checkbox pada DBGRID di Delphi
OK Selamat mencoba
baca lagi yang lain dari pakar subernya..:
Untuk membuat interfacenya di Delphi kita tampilkan dbgrid invoice, lalu dipilih mana-mana yang mau dikirim saat itu, kemudian setelah dipilih maka akan tampil form pengiriman yang terdiri atas invoice-invoicenya yang dipilih tersebut. Permasalahannya bagaimanakah cara membuat checkbox didbgrid tersebut?
Caranya adalah sbb
Klik komponen DBGRID
pada event double klik oncellclick, lalu ketikan kode dibawah ini
if Self.DBGrid.SelectedField.DataType = ftBoolean then
SaveBoolean();
pada event oncolenter, ketikan kode dibawah ini
if Self.DBGrid.SelectedField.DataType = ftBoolean then
begin
Self.FOriginalOptions := Self.DBGrid.Options;
Self.DBGrid.Options := Self.DBGrid.Options - [dgEditing];
end;
Pada event oncolexit, ketikan kode dibawah ini
if Self.DBGrid.SelectedField.DataType = ftBoolean then
Self.DBGrid.Options := Self.FOriginalOptions;
Pada event DrawColumnCell, kodenya sbb, ikuti dan sesuaikan
procedure TNamaForm.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Const
CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
DFCS_BUTTONCHECK or DFCS_CHECKED);
var
CheckBoxRectangle : TRect;
begin
if Column.Field.DataType = ftBoolean then
begin
Self.DBGrid.Canvas.FillRect(Rect);
CheckBoxRectangle.Left := Rect.Left + 2;
CheckBoxRectangle.Right := Rect.Right - 2;
CheckBoxRectangle.Top := Rect.Top + 2;
CheckBoxRectangle.Bottom := Rect.Bottom - 2;
DrawFrameControl(Self.DBGrid.Canvas.Handle,
CheckBoxRectangle,
DFC_BUTTON,
CtrlState[Column.Field.AsBoolean]);
end;
end;
Lalu buatlah Procedure dengan nama SaveBoolean (jangan lupa deklarasikan juga)
procedure TNamaForm.SaveBoolean;
var pilihan:integer;
begin
//contoh disini nama datasourcenya DsListInvoice
if not(DsListInvoice.DataSet.State in [dsEdit]) then
DsListInvoice.DataSet.Edit;
if Self.DBGrid.SelectedField.AsBoolean=false then
begin
{pada saat membuat tabel yang Anda inginkan, tambahkan kolom dengan nama selected untuk flag pilih ya atau tidak, disini 1 berarti true dan 0 berarti false}
Table1selected.AsInteger:=1;
end
else
Table1selected.AsInteger:=0;
end;
Contoh tersebut bisa diterapkan di aplikasi lain yang membutuhkan checkbox pada DBGRID di Delphi
OK Selamat mencoba
baca lagi yang lain dari pakar subernya..:
- Accounting for Programmer
- Apa sih ERP itu?
- Aplikasi Inventory
- Backup DB with Delphi
- Backup Mysql/Folder
- Bikin Checkbox di Dbgrid
- Cara Memakai Dev Express
- Cara Memasarkan Software
- Cara Membuat Program Accounting
- Convert BMP to JPG with Delphi
- Delete Cookies with Delphi Code
- Delphi String Grid Position
- Exe Compressor
- Flow Program Accounting
- Global eXtreme Programming
- Harga Jual Program
- Implementasi Mysql
- Karir Programmer
- Koleksi Link Delphi
- Lowongan Programmer
- Memahami Bisnis Proses
- Membangun Aplikasi Client Server Online
- Membuat Program Media Player
- Membuat Aplikasi kompresi TAR
- Mengegolkan Project
- Menghubungkan Delphi ke Mysql
- Menjadi Programmer Sukses
- Mewarnai Baris di DBGRID
- Normalisasi Vs Database Flate
- Otorisasi dalam Delphi
- Program terkenal yang dibuat dengan Delphi
- Rahasia Membangun ERP
- Sejarah Delphi
- Setting Proxy with Delphi
- Source Code Aplikasi Inventory
- Source Delphi Defrag Memory
- Source Delphi view IP Address
- Standar Gaji Programmer
- Strategi Implementasi System Informasi
- Testing Software
- Transact SQL di Delphi
- Update Program di Delphi

Tidak ada komentar:
Posting Komentar