30
DbGidEh : Print Langsung Data di DbGrid dengan GridEh dan PrintDbGridEh Delphi : Delphi 7 Database : Ms Access Koneksi : ADO Connection Komponen : DbGridEh + PrintDbGridEh (wajib) *note : untuk spesifikasi perlalatan tempur tidak sama dengan diatas harap menyesuaikan Kali ini saya akan membahas bagaimana cara mencetak langsung data yang tampil pada DbGrid tanpa harus menggunakan report dan tanpa harus mendesainnya terlebih dahulu, sekali lagi ehlib sudah menyediakan komponen yang sangat bagus untuk hali ini yaitu TPrintDbGridEh, komponen yang terletak di pallete ehlib (install dulu kalau belum punya), berikut komponenya Perlu dicatat, bahwa komponen ini hanya bekerja pada DbGridEh, jadi komponen grid yang lain tidak disupport oleh komponen ini, masukan sebuah komponen PrintDbGridEh pada form yang kita buat, kemudian atur properties DbGridEh nya arahkan ke DbGridEh yang akan di print datanya :

Ehlib DBGrid

Embed Size (px)

DESCRIPTION

ehlib

Citation preview

DbGidEh : Print Langsung Data di DbGrid dengan GridEh dan PrintDbGridEh

Delphi        : Delphi 7Database   : Ms AccessKoneksi     : ADO ConnectionKomponen : DbGridEh + PrintDbGridEh (wajib)

*note : untuk spesifikasi perlalatan tempur tidak sama dengan diatas harap menyesuaikan

Kali ini saya akan membahas bagaimana cara mencetak langsung data yang tampil pada DbGrid tanpa harus menggunakan report dan tanpa harus mendesainnya terlebih dahulu, sekali lagi ehlib sudah menyediakan komponen yang sangat bagus untuk hali ini yaitu TPrintDbGridEh, komponen yang terletak di pallete ehlib (install dulu kalau belum punya), berikut komponenya

Perlu dicatat, bahwa komponen ini hanya bekerja pada DbGridEh, jadi komponen grid yang lain tidak disupport oleh komponen ini, masukan sebuah komponen PrintDbGridEh pada form yang kita buat, kemudian atur properties DbGridEh nya arahkan ke DbGridEh yang akan di print datanya :

Setelah itu, kurang lebih saya mempunyai desain form seperti gambar dibawah ini, yang datanya ingin langsung saya print, setelah melakukan setting pada komponen diatas, langkah selanjutnya kita akan memberikan koding pada tombol print

Berikut koding yang saya buat :

123456

procedure Tfmain.btn1Click(Sender: TObject);begin PrintEh.Title:=eTitle.Lines; PrintEh.PageFooter.CenterText:=efooter.Lines; PrintEh.Preview;end;

Penjelasan:

PrintEh.Title:=eTitle.Lines; adalah untuk mengambil Title pada report lewat eTitle (Komponen : Memo). tidak harus lewat memo kita isikan langsung lewat properties Title pun bisa jika memang judulnya statis.

PrintEh.PageFooter.CenterText:=efooter.Lines; mengambil string dari eFooter (Komponen : Memo). misa digunakan untuk kolom tanda tangan, keterangan atau sebagainya, memiliki 3 posisi yang bisa digunakan yaitu : CenterText, RightText, dan LeftText, silahkan dieksplorasi lebih lanjut sama dengan atas ini bisa langsung di isikan lewat properties.

PrintEh.Preview; untuk melihat hasil dari data yang akan di print yaitu menggunakan Preview, jika ingin mencetak langsung bisa menggunakan perintah .Print, maka tidak akan melakukan preview akan langsung mencetak;

Berikut contoh hasil dari koding diatas :

Catatan :

Saya belum bisa merubah ukuran kertas maupun orientasi tampilan (Landscape/Portrait) secara langsung dari komponen ini, tetapi bisa dilakukan lewat printer setup sebelum print tampilkan dengan preview, kita bisa merubahnya lewat sana.

Agar lebar kolom Grid masuk sesuai di kertas (Area Print) ubah propeties Options> FitGridToPageWidth menjadi True

Setelah mencoba bertanya di forumnya ehlib, ternyata untuk merubah page orientation bisa, tapi emng belum support untuk merubah ukuran kertasnya, ini jawaban dari admin nya :

Memberi Warna Pada Kolom Record Tertentu DBGridEH Delphi

Ini teknik saya dapatkan dari KPPDI juga, lebih tepatnya dari salah satu Master yaitu Bang Buyut Joko Rivai, karena dari beliulah saya juga kenal dan mulai suka menggunakan komponen dari EhLib ini, salah satu komponen Grid yang simple nan kaya fasilitas..

Teknik ini saya gunakan untuk memberi warna pada record yang sudah mendekati jatuh tempo, atau record yang sudah jatuh tempo, jadi saya menggunakan filter pada date, dan bisa diterapkan untuk kasus-kasus lain..

Saya mempunyai Tabel : Pesan, dengan berbagai field yang dibutuhkan, dan didalamnya terdapat filed tgl_jatuhtempo

Sisipkan code berikut pada event OnAdvDrawDataCell pada DBGridEh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

procedure Tfvieworder.DBGridEh1AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,

 AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;

 var Params: TColCellParamsEh; var Processed: Boolean);

var

t: String;

begin

//sesuaikan dengan nama field yang ingin dibuat kondisi

t := Column.Field.DataSet.FieldByName('tgl_jatuhtempo').AsString;

 if (qorder.RecordCount<>0) then //cegah error jika tidak ada record

 begin

    if (StrToDate(t)-now<=3) then //kondisi : jika tanggal jatuh tempo kurang dari 3 hari

    begin

    //font style

    Params.Font.Style := [fsBold];

    //warna font

    Params.Font.Color := clWindow;

19

20

21

22

23

    //warna cell di grid, untuk mendapat kode warna ambil komponen sembarang klik bagian color

    Params.Background := $004080FF;

    end;

 end;

end;

Kondisi dapat disesuaikan dengan kasus yang dihadapi, jika kode tepat saat program di run maka akan tampakseperti dalam program yang saya buat sebagai berikut

Maka kolom record yang jatuh temponya kurang dari 3 hari akan berwarna sesuai yang kita tentukan…

Bagi yang belum punya di paket dari EhLib silahkan download disini

Membuat Warna Belang Baris DbGridEh Delphi

Untuk membuat warna kolom pada DbGridEh agar belang atau selang seling sangatlah mudah tanpa melakuakan koding apapun karena sudah ada properties yang mendukung fungsi tersebut…

Caranya langsung saja menuju Properties pada DbGridEh…

 Untuk Baris record Genap, ubah warna pada properites EvenRowColor…

Sedangkan untuk baris record Ganjil, ubah warna pada properities OddRowColor…

Hasil langsung bisa terlihat saat design time…

Selamat mencoba :)

Menampilkan Footer SUM di DbGridEH Delphi

Cara mudah untuk mengetahui jumlah suatu field numeric di database yang ditampilkan pada sebuah DbGrid yaitu memanfaatkan fungsi SUM yang berada di footer DbGridEh, untuk komponen silahkan download disini, langsung saja sample yang saya buat menggunakan Delphi 7 + Database MySQL + Zeos..

Tetapi database apapun itu, saya rasa bisa karena ini cuman merupakan fungsi yang berada dalam DbGridEh, Langsung saja setelah melakukan Query Open untuk menampilkan data di Grid, seperti tampak pada gambar dibawah . . .

Saya pernah gagal menampilkan karena kurang settingan ini, thank’s to Bang Buyut Joko Rivai karena telah memberikan revisi sample yang pernah aku buat sehingga tahu letak kesalahan. . .

Langkah pertama yang harus dilakukan (*Penting) masuk ke properties :

dbGridEh > FooterRowCount  > isikan Value  : 1

dbGridEh > SumList>  Ubah menjadi Active

Kemudian pada GridEh

dbGridEh > Klik Kanan  > Columns Editor > Add All Fields / Tampilkan Fileds sesuai yang dibutuhkn saja

Setelah Melakukan settingan seperti tersebut diatas maka tampak Grid memiliki row footer pada bagian bawah, tampak seperti gambar di bawah ini . . .

Langkah selanjutnya, masuk ke Object TreeView, pilih dan expand (+) pada object DbGridEh > Columns, kemudian pilih bagian kolom filed apa yang ingin di tampilkan atau yang ingin dijumlah, Lalu lakukan setting tampak seperti gambar dibawah ini . . .

Pada bagian Field kasir untuk menampilkan static text ” Total : ” , sorot field kasir kemudian masuk ke properties Footer, setelah itu rubah setting tampak seperti gambar di bawah . . .

Sama dengan cara diatas, sorot pada filed yang ingin di tampilkan jumlahnya (numeric filed) , masuk ke properties Footer kemudian rubah setting seperti tampak pada gambar dibawah ini. . .

Jika mengikuti langkah dari awal dan settingan benar, maka SUM dari field yang ingin ditampilkan akan muncul pada bagian footer dari DbgridEh . . .

Semoga Bermanfaat :)

DbGridEh : Percent ProgressBar DbGridEh

Delphi        : Delphi 7Database   : Access 2003Koneksi     : AdoTambahan : GridEh

*note : untuk spesifikasi perlalatan tempur tidak sama dengan diatas harap menyesuaikan

Saya akan coba share lagi kemampuan dari DbgridEh dari ehlib yang menjadi andalanku hahaha, kali ini adalah trik menampilkan persentase dan progress didalam grid, soal pengunaan terserah kita-kita yah, bisa buat presentase pendapatan suara, presentase jumlah hutang/piutang, luas wilayah , populasi penduduk dan perbandingan lain-lainya, sebenarnya ada demonya nih tapi ga papa, buat mempermudah belajar aja bagi yang males oprek, bagi yang masih bingung mau bikin apa sih ni?? lihat gambar paling bawah dulu aja (soale saya juga bingung mo kasih judul apaan) :D…

Oke saya mulai, saya sudah persiapkan sebuah database dan saya akan coba membuat presentase dari sebuah wilayah di suatu kecamatan, saya menggunakan ADOTable > klik kanan > add all field (lihat gambar) , ini ga terbatas komponen adotabel loh ya, yang penting bisa nampilin data ke Grid aja soalnya nanti yg di koding gridnya jadi yang wajib pakek ya gridEh nya…

Setelah menambahkan semua field ke dataset langkah selanjutnya adalah, tambahkan semua kolom di GridEhnya, yaitu dengan cara klik kanan grid > Columns Editor > add all field (lihat pada gambar), beri caption pada titlenya suka-suka kita, maka semua kolom sudah ditambahkan ke Grid…

Langkah berikutnya kita tambahkan kolom jadi-jadian di grid, kita lakukan seperti langkah diatas, klik kanan grid > columns editor>add new , kemudian kita tambahkan caption pada titlenya  lewat object properties (lihat gambar dibawah)

Jika langkah diatas di ikuti dengan benar maka kita akan tampak memiliki grid seperti tampak pada gambar dibawah ini, semua field dari dataset muncul, dan kolo jadi-jadian yang kita bikin terakhir akan kosong…

setelah itu pahami konsep presentase yaitu : nilai/total_nilai * 100, kita harus dapatkan nilai total dari tabel diatas, untuk memudahnya saya menggunakan footer SUM nya dbgrideh silahkan buka link ini bagi yang mau mempelajari. Kalau yang mau bikin prosedur atau fungsi sendiri buat hitung totalnya silahkan sah-sah dan bisa saja :D, jika menggunakan footer SUM maka kondisi terakhir form yang kita buat akan namapak seperti gambar dibawah ini…

Nah setelah mendapatkan value totalnya, sekarang langkah terakhir adalah memberi koding pada kolom bayangan yang tadi kita buat, caranya sorot (klik) title (kalau contoh saya presentase) maka akan ada indikator aktif pada title tersebut, kemudian ke object properties > event >OnAdvDrawDataCell (perhatikan gambar)

Kemudian masukan coding berikut pada even tersebut :

1

2

3

procedure Tfutama.dbgrdh1Columns3AdvDrawDataCell(Sender: TCustomDBGridEh;

  Cell, AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;

4

5

6

7

8

9

10

11

  var Params: TColCellParamsEh; var Processed: Boolean);

begin

if (tbl1.RecordCount=0) or (tbl1.Active=False)then Abort;

  Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);

  DrawProgressBarEh(tbl1.FieldByName('luas').AsFloat, 0, DBGridEh1.Columns[2].Footer.SumValue,

  Sender.Canvas, ARect, clSkyBlue, cl3DDkShadow, clNone);

  Processed := True;

end;

Penjelasan :di line pertama if (tbl1.RecordCount=0) or (tbl1.Active=False)then Abort; maksutnya adalah antisipasi error jika tidak ada data maka koding dibawahnya tidak diajalankan.selanjutnya, tbl1.FieldByName(‘luas’).AsFloat, 0, DBGridEh1.Columns[2].Footer.SumValue, tbl1 adalah name dari dataset yang saya gunakan, kemudian (‘luas’) adalah field yang akan di ambil presentase-nya, 0 (nol) adalah nilai minimal dari range yang kita buat, DBGridEh1.Columns[2].Footer.SumValue adalah nilai total yang saya ambilkan dari footer sum, bisa diganti dengan variabel hasil dari fungsi atau prosedur yang dibuat untuk menghitung total, bisa juga langsung diketik nilainya, clSkyBlue warna progressbar yang akan ditampilkan bisa diubah-ubah sesuai selera.

Jika langkah tersebut dilakukan dengan benar dan pengambilan nilai yang benar maka, RUN aplikasi yang kita buat dan progressbar serta presentase akan muncul pada grid, dan penggunanya pun tentu bermacam-macam, karena ini hanyalah sebuah contoh…

Selanjutnya kreasikan trik ini dengan aplikasi anda untuk membuat aplikasi yang lebih informatif dan goodlooking, semoga tutorial ini bisa menjadi manfaat  bagi yang membutuhkan…

Bagi yang ingin mendowonload contoh ini silahkan komentar dan tinggalkan email, akan saya kirim linknya, terimkasih atas waktunya, salam delphier :)

Multi Delete Dengan DbGridEH

Oke kali ini saya akan membahas lagi tentang penggunaan fasilitas yang ada didalam dbgridEh nan sakti mandraguna, sebelum saya sendiri lupa mari tulisakan disini, kali ini saya akan menulis tentang penggunaan multi-select untuk mendelete data yang tampil pada DbGridEh, kayak apa sih wujudnya saya sendiri juga bingung mau kasi judul apaan, seperti biasa supaya gambar yang menjelaskan saja, nah kurang lebih akan tampak seperti ini..

Oke kurang lebih seperti pada gambar diatas bro sis, lumayan keren kan yak?? kita bisa melakukan beberapa select di beberapa record dengan menggunakan checkbox (jangan-jangan susah nih munculin checkbox nya) haha itu sama sekali tanpa kesusahan mas bro dan mbak sis, karena itu sudah ada dalam fasilitas DbGridEh, jadi bener-bener zero coding buat munculin checkboxnya, oke langsung kita mulai pertama-tama pada dbgridEh set properties Options > DgMultiSelect > True dan yang satunya  set properties IndicatorOptions > gioShowRowselCheckboxesEh > True , untuk lebih jelasnya lihat pada gambar dibawah ini

Note:Sample dibuat dengan menggunakan Delphi 7, database Ms Access, dan DbGridEh (EhLib 6.2) jika terjadi ketidaksaman pelaku harap menyesuaikan, serta database bukan dalam kondisi ReadOnly jika ada pesan error seperti tersebut harap menyesuaikan juga :D.

Setelah melakukan setting sama dengan langkah diatas maka akan didapati pada dbGrid kita akan muncul kolom checkbox pada bagian kiri dan sudah bisa kita main-mainkan untuk di contreng-contreng haha. maka hasil yang sudah kita lakukan akan tampak seperti project sederhana yang sudah saya buat ini…

Untuk melakukan delete pada data yang kita tandai cukup menambahkan kode seperti ini..

1

2

3

4

5

. . .

procedure Tflatihan.beditClick(Sender: TObject);

begin

if DBgridEh1.SelectedRows.Count=0 then

begin

 MessageDlg('Tidak ada data yang ditandai...',mtWarning,

6

7

8

9

10

[mbOK],0);

 Exit;

end;

DBgridEh1.SelectedRows.Delete;

end;

Oke tuntas sudah trick sederhana ini, selenjutnya tinggal kemampuan anda untuk berkreasi, bagi yang ingin mendownload contoh project ini silahkan sedoooott disini.

Terimkasi atas waktunya untuk membaca artikel sederhana ini, kritik, saran atau sekedar komentar akan sangat saya nantikan, semoga bermanfaat, terimkasih…

Salam Delphier

Multi Title Grid Dengan DbGridEH

Langsung dokumentasi, trick “fresh from the oven” yang baru saja saya dapat dari bang Buyut Joko Rivai, yang baik hati, tidak sombong, dan gemar menabung :D.

Kali ini adalah bagaimana cara membuat multi title (judul bertingkat) pada DbGridEh, grid yang minimalis powerfull kaya fitur dan menjadi andalanku, seperti apakah itu wujudnya, silahkan lihat sample gambar dibawah ini . . .

Nah dah tahukan? ada Title Pelajaran diatas Title nama pelajaran dibawahnya, bagaimana membuatnya? kita tidak perlu koprol dan bilang WOW, caranya

ternyata sangat mudah (kalo sudah tau) dan simple karena tidak butuh koding, pertama-tama yang harus dilakukan tentu saja pasang komponen EhLib :D hukumnya Fardhu ‘Ain agar bisa pakai trick ini . . .

Pertama-tama Klik komponen DbGridEh yang sudah terpasang pada sebuah form, dan masuk ke Properties>UseMultiTitle, dan ubah value disana menjadi True, maka kita sudah menuju jalan yang benar :D

Next, yang kita lakukan klik pada sebuah judul yang ingin dibuat tingkat nantinya, lihat gambar, saya klik tepat pada judul “ING” yang nantinya akan ada head Titlenya “PELAJARAN”

Langkah selanjutnya dengan meng-click header diatas tadi, segera menuju ke Properties>Title>Caption.

Nah ini yang sangat penting pada caption ketikan Head dan subHead dibatasi dengan tanda garis tegak | , bukan huruf i loh ya, perhatikan gambar, saya

menuliskan pada caption ” PELAJARAN | ING ” maka akan langsung bisa dilihat hasilnya pada design time . .

Ulangi langkah diatas pada Header yang lain sesuai kebutuhan, maka Kita sukses deh membuat Multi Title, nah sekarang baru saatnya koprol sambil guling-guling :D

Untuk Contoh Sample project diatas silahkan download disini

Semoga bermanfaat kawan, dan menjadi ilmu jariyah aamiin, jangan lupa caci-maki , keripik pedas, dan komeng nya ya..

Master-Detail Data di Grid dengan DbGridEh (Expand Grid)

Bingung mau kasi judul apa, langsung aja lewat screen shoot yang saya maksud adalah seperti ini . . .

Nah jadi kita bisa langsug liat detail tabel yang tentusaja terelasi dalam database, jadi syarat mutlaknya adalah databasenya sudah benar pada contoh ini saya menggunkan contoh sederhana master transaksi dan detail transaksi, cara membuatnya sangat simpel, kita akan membutuhkan 2 GridEh dalam praktik ini, saya akan sebut Grid1 dan Grid2.

Pertama-tama lakukan Query untuk menampilkan Master pada Grid1, sehingga Master data tampil pada Grid1 Seperti gambar dibawah . . .

Setelah itu, lakukan setting Properties>RowDetailPanel>Active>True , pada Grid1 tersebut, maka Grid akan tampak memiliki ruangan baru di bawah recordnya seperti tampak pada gambar dibawah ini . . .

Langkah selanjutnya ambil komponen Grid2 dam masukan kedalam Kotak Expand dari Grid1 yang pertama tadi, jagan kawatir posisinya, agar Terlihat rapi dan menempel pada ruang Expand, set Properties>Align>alClient pada Grid2. maka akan terlihat seperti gambar . . .

Setelah selesai Lakukan Query untuk menampilkan data Detail dan arahkan Source ke Grid2,  Jika sudah maka langkah reakhir adalah menyisipkan kode berikut pada di dalam Event DbGridEh1 (Grid11) OnCellClick.

1

2

TbJualDetail.Active:=False;

TbJualDetail.CommandText:='select * From jualdetail where

3faktur='+QuotedStr(tbJual['faktur']);

TbJualDetail.Active:=True;

Contoh menggunakan Delphi 7 + ADOConnection + ADODataSet + AccessUntuk Contoh project diatas silahkan Download DisiniSilahkan menyesuaikan dengan komponen lain, caranya sama saja, semoga bermanfaat kawan, salam Delphier . . .