Anda di halaman 1dari 3

Bikin Checkbox di Dbgrid

Posted by Admin at 22:43 Links to this post 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 end;

Self.FOriginalOptions := Self.DBGrid.Options; Self.DBGrid.Options := Self.DBGrid.Options - [dgEditing];

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