Menggunakan Fungsi Terbilang Di FastReport
| December 31, 2011 | Posted by Joko Rivai under Database, Delphi, Free Downloads, Tips & Tricks |
Di posting tentang Menampilkan Nilai Terbilang Di Rave Report, saya telah menuliskan trik untuk menampilkan tulisan nilai terbilang di Rave Report, kini kita akan melihat trik menampilkan nilai terbilang di FastReport.
Ada beberapa cara untuk menampilkan nilai terbilang di FastReport:
- Menggunakan CalculatedFields, sehingga tiap row data mempunyai nilai terbilang sendiri sesuai definisi. Cara ini efektif bila tiap row memiliki nilai untuk ditampilkan secara terbilang. Namun tidak efektif bila Anda ingin menampilkan terbilang dari hasil akhir saja – seperti SUM().
- Menggunakan FastScript, sebuah scripting engine untuk FastReport yang tersedia dalam beberapa bahasa pemrograman.
- Menggunakan FastReport User Defined Function dan User Defined Variable. Cara ini bekerja dengan menulis fungsi atau membuat variabel di Delphi, kemudian diakses dari FastReport.
- Terakhir, Dirty Way, trik kotor dari saya, yang menurut saya paling cocok. Cara ini sangat efektif bila nilai terbilang adalah hasil perhitungan akhir, seperti Jumlah Total, SUM(), dsb., dan bukan nilai berjalan di tap baris data.
Di tulisan kali ini, kita akan menggunakan Dirty Way, trik untuk menampilkan data ke objek FastReport secara runtime. Dengan cara ini, tentunya menampilkan teks nilai terbilang menjadi lebih mudah. Saya telah membuat sebuah contoh untuk di-download. Saya tidak menggunakan database sebagai data, tapi langsung dengan angka numerik biasa, dikonversi ke nilai terbilang, dan ditampilkan di FastReport. Jadi fokus kita adalah: Trik menampilkan nilai terbilang di FastReport saja, tidak database.
Pertama, kita buat sebuah aplikasi baru. Di form utama(Form1), tambahkan sebuah TEdit, sebuah TMemo, dan dua TButton. Tambahkan juga sebuah TFrxReport. Atur letak dan property menjadi seperti gambar berikut:
Kemudian download unit uTerbilang, utilitas untuk melakukan konversi angka ke teks terbilang. Anda dapat menggunakan library lain, atau mendownload unit uTerbilang di :
Unit Fungsi Terbilang (1.5 KiB)
Ekstrak hasil download dan copy fileuTerbilang ke dalam folder project. Tambahkan unit uTerbilang ke project lewat menu Project>Add To Project:
Kemudian, di form utama, tambahkan uTerbilang ke klausa Uses, lewat menu File>Use Unit.
Kini kembali ke form dan kita pilih event OnClick Button1, isi dengan kode:
procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text:= MyTerbilang(StrToFloat(Edit1.Text)); end;
Potongan kode ini akan menampilkan hasil konversi ke Memo1. Bagaimana dengan FastReport? Nah di sinilah trik kotor dimulai
Tambahkan kode berikut setelah direktif {$R *.dfm}. Kode ini untuk mencari objek FastReport berdasarkan namanya.
function FRObject(FastReport: TfrxReport; ObjectName: String): TObject;
var
i: Integer;
AFound: Boolean;
begin
AFound:=False;
for I := 0 to FastReport.ComponentCount - 1 do
begin
if LowerCase(FastReport.Components[i].Name) = LowerCase(ObjectName) then
begin
Result:=TObject(FastReport.Components[i]);
AFound:=True;
Break;
end;
end;
if not AFound then
begin
Result:=nil;
end;
end;
Sedangkan kode berikut merupakan wrapper untuk kode di atas, khususuntuk mencari objek TFrxMemoView (yang akan dipakai untuk menampilkan teks di FastReport), diletakkan setelah kode di atas:
function FRMemo (FastReport: TfrxReport; ObjectName: String): TfrxMemoView; begin Result := TfrxMemoView(FRObject(FastReport, ObjectName)); end;
Kembali ke laptop, eh, ke form. Klik kanan pada FrxReport1, klik Edit Report untuk mengedit FastReport. Tambahkan 4 buah Memo (TFrxMemoView). Sebagai perbandingan, berikut report saya:
Sudah? Tutup report editor dan kita kembali ke form. Klik ganda Button2 dan kita isi kodenya (event OnClick):
procedure TForm1.Button2Click(Sender: TObject); begin FRMemo(frxReport1, 'Memo3').Text := Edit1.Text; FRMemo(frxReport1, 'Memo4').Text := MyTerbilang(StrToFloat(Edit1.Text)); frxReport1.ShowReport(); end;
Kode di atas bertujuan untuk mengakses Memo3 dan Memo4 di FastReport dan mengatur property Text-nya dengan angka dan hasil konversinya. Selengkapnya, kode kita akan seperti ini:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
frxReport1: TfrxReport;
Label1: TLabel;
Edit1: TEdit;
Button2: TButton;
Label2: TLabel;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses uTerbilang;
{$R *.dfm}
function FRObject(FastReport: TfrxReport; ObjectName: String): TObject;
var
i: Integer;
AFound: Boolean;
begin
AFound:=False;
for I := 0 to FastReport.ComponentCount - 1 do
begin
if LowerCase(FastReport.Components[i].Name) = LowerCase(ObjectName) then
begin
Result:=TObject(FastReport.Components[i]);
AFound:=True;
Break;
end;
end;
if not AFound then
begin
Result:=nil;
end;
end;
function FRMemo (FastReport: TfrxReport; ObjectName: String): TfrxMemoView;
begin
Result := TfrxMemoView(FRObject(FastReport, ObjectName));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text:= MyTerbilang(StrToFloat(Edit1.Text));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FRMemo(frxReport1, 'Memo3').Text := Edit1.Text;
FRMemo(frxReport1, 'Memo4').Text := MyTerbilang(StrToFloat(Edit1.Text));
frxReport1.ShowReport();
end;
end.
Sekarang kita jalankan aplikasi kita, dan coba tekan masing-masing button untuk melihat hasilnya.
Klik gambar untuk Memperbesar
Download Source Code
Berikut source code sampel di atas.
Nilai Terbilang di FastReport (518.1 KiB)
Incoming search terms:
- fastreport tutorial
- cara menggunakan fast report delphi
- membuat laporan dengan fastreport
- tutorial fast report
- fungsi terbilang dengan delphi
- cara membuat laporan dengan fastreport
- fungsi fastreport
- fungsi terbilang delphi
- membuat tabel di fastreport
- cara memperbaiki unable to cast object of type system booleanto typesystem string
Comments
Powered by Facebook Comments









This is the default footer layout. You can easily add or remove columns in the footer.
Komen pertama di awal tahun.. :p
nice share bang Joko Rovai…
jangan bosen buat bagi2 ilmunya…
thanks…
Makasih ya bang. Sukses buat abang di tahun 2012
bang klo pengen set image ke ke fast report gmn
@ridzky
Kan ada TFrxPictureView, bisa di set field dan datasetnya…
Atau, kalau mau seperti cara di atas, buat wrapper satu lagi:
Call:
FRImage(frxReport1, 'Picture1').Picture.LoadFromFile('E:\Images\Screenshots\a.jpg'); frxReport1.ShowReport();owh thanks bang, syp tau nanti kepake wkt bikin kartu nama , dan lainya,,, hehe
@ridzky
Wah…. banyak projek.. bagi2 bang
Bang Joko Rivai, terima kasih sharingnya nih…hehehe… jadi kepengin nyoba…
Sama-sama bang. Gw mo jalan2 ke http://www.muthi.com/ nih…
bang mau nanya nich kalau mau di terapi di webbase gimana??soalnya untuk reportnya punya saya error