Get this widget!

Sabtu, 20 Juli 2013

Bikin Checkbox di Dbgrid

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 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..:

Tidak ada komentar:

Posting Komentar

tes member

Personal
Message