Salam blogger.........pada postingan kali ini saya akan share cara membuat perhitungan uang ribuan dengan format curency rupiah di delphi, program ini dapat di buat di delphi 7 maunpun delphi 2010 ataupun delphi versi terbaru. dalam proses penginputan bilangan format currency sangat di perlukan pada sebuah aplikasi perhitungan jual beli (penjualan). hal ini sangat membantu kasir untuk membaca jumlah uang baik yang tertulis dengan angka maupun dengan huruf. sehingga memperkecil kemungkinan untuk melakukan kesalahan dalam proses pembacaan jumlah maupun proses penginputannya. sebagai contoh kita akan lebih mudah membaca jumlah uang yang dibuat dengan format 9.000.000 dari pada membaca format bilangan 9000000.
Berawal dari masalah diatas, pada postingan kali ini kita akan membahas tentang bagaimana cara merubah format integer menjadi format mata uang / currency. untuk membuat nya terlebih dahulu kita membuat sebuah project di delphi, buat lah sebuah form, lalu tambahkan 15 buah komponen edit text dan 1 buah panel. selanjutnya kita akan membuat sebuah function terbilang untuk merubah format angka yang di input menjadi format huruf agar mudah dibaca. selanjunya tambahkan source kode di bawah ini kedalam form yang sudah anda buat.
unit rupiah;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit8: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Panel1: TPanel;
Memo1: TMemo;
Label6: TLabel;
Label7: TLabel;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Shape1: TShape;
Shape2: TShape;
Label8: TLabel;
Label9: TLabel;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure Edit9Change(Sender: TObject);
procedure Edit12Change(Sender: TObject);
procedure Edit11Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
function terbilang(dNumber: Extended): string;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit11Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
begin
Rp := Edit11.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit11.Text :=currtostr(Rph);
edit11.SelStart := length(edit11.text);
memo1.Text:=terbilang(StrToFloatDef(edit11.Text,0)) + ' Rupiah ';
end;
procedure TForm1.Edit12Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
begin
edit11.Text:=edit12.Text;
Rp := Edit12.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit12.Text :=FormatCurr('#,###',Rph);
edit12.SelStart := length(edit12.text);
edit10.Text:='Rp.'+(edit12.Text)+',-';
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
begin
edit2.Text:=edit1.Text;
Rp := Edit1.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit1.Text := FormatCurr('#,###',Rph);
edit1.SelStart := length(edit1.text);
edit13.Text:='Rp.'+(edit1.Text)+',-';
end;
procedure TForm1.Edit2Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
a,b,c:real;
begin
Rp := Edit2.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit2.Text := currtostr(Rph);
edit2.SelStart := length(edit2.text);
a:=strtofloat(edit2.Text);
b:=strtofloat(edit4.Text);
c:= a+b;
edit5.Text:=formatfloat('',c);
end;
procedure TForm1.Edit3Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
a,b,c:real;
begin
edit4.Text:=edit3.Text;
Rp := Edit3.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit3.Text := FormatCurr('#,###',Rph);
edit3.SelStart := length(edit3.text);
a:=strtofloat(edit2.Text);
b:=strtofloat(edit4.Text);
c:= a+b;
edit5.Text:=formatfloat('',c);
edit14.Text:='Rp.'+(edit3.Text)+',-';
end;
procedure TForm1.Edit4Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
a,b,c:real;
begin
Rp := Edit4.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit4.Text := currtostr(Rph);
edit4.SelStart := length(edit4.text);
a:=strtofloat(edit2.Text);
b:=strtofloat(edit4.Text);
c:= a+b;
edit5.Text:=formatfloat('',c);
end;
procedure TForm1.Edit5Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
begin
edit7.Text:=edit5.Text;
Rp := Edit5.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit5.Text :=FormatCurr('#,###',Rph);
edit5.SelStart := length(edit5.text);
edit6.Text:='Rp.'+(edit5.Text)+',-';
end;
procedure TForm1.Edit7Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
a,b,c:real;
nilai1,nilai2:integer;
ket:string;
begin
Rp := Edit7.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit7.Text :=currtostr(Rph);
edit7.SelStart := length(edit7.text);
a:=strtofloat(edit7.Text);
b:=strtofloat(edit9.Text);
c:= a-b;
edit12.Text:=formatfloat('',c);
nilai1:=strtoint(edit7.Text);
nilai2:=strtoint(edit9.Text);
if (nilai2>=nilai1) then
begin
ket:='PINJAMAN LUNAS'
end
else
begin
ket:='PINJAMAN BELUM LUNAS'
end;
panel1.Caption:=ket;
end;
procedure TForm1.Edit8Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
a,b,c:real;
begin
edit9.Text:=edit8.Text;
Rp := Edit8.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit8.Text := FormatCurr('#,###',Rph);
edit8.SelStart := length(edit8.text);
a:=strtofloat(edit7.Text);
b:=strtofloat(edit9.Text);
c:= a-b;
edit12.Text:=formatfloat('',c);
edit15.Text:='Rp.'+(edit8.Text)+',-';
end;
procedure TForm1.Edit9Change(Sender: TObject);
var
Rp: string;
Rph: Currency;
nilai1,nilai2:integer;
ket:string;
begin
Rp := Edit9.Text;
Rp := StringReplace(Rp,',','',[rfReplaceAll,rfIgnoreCase]);
Rp := StringReplace(Rp,'.','',[rfReplaceAll,rfIgnoreCase]);
Rph := StrToCurrDef(Rp,0);
edit9.Text :=currtostr(Rph);
edit9.SelStart := length(edit9.text);
nilai1:=strtoint(edit7.Text);
nilai2:=strtoint(edit9.Text);
if (nilai2>=nilai1) then
begin
ket:='PINJAMAN LUNAS'
end
else
begin
ket:='PINJAMAN BELUM LUNAS'
end;
panel1.Caption:=ket;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Text:='';
edit2.Hide;
edit4.Hide;
edit7.Hide;
edit11.Hide;
edit9.Hide;
edit13.Enabled:=false;
edit14.Enabled:=false;
edit6.Enabled:=false;
edit15.Enabled:=false;
edit10.Enabled:=false;
edit5.Enabled:=false;
edit12.Enabled:=false;
memo1.Enabled:=false;
panel1.Enabled:=false;
end;
function TForm1.terbilang(dNumber: Extended): string;
const
aNum: array[1..9] of String = ('Satu', 'Dua', 'Tiga', 'Empat', 'Lima', 'Enam', 'Tujuh', 'Delapan', 'Sembilan');
aUnit: array[1..5] of String = ('Trilyun', 'Milyar', 'Juta', 'Ribu', '');
var
iCount, iDigit1, iDigit2, iDigit3: Integer;
sNum2Str, s3Digit, sWord: string;
begin
Result := '';
if (dNumber=0) then Exit;
sNum2Str:=Copy(Format('%18.2f', [dNumber]), 1, 15);
for ICount:=1 to 5 do
begin
s3Digit:=Copy(sNum2Str, iCount*3-2, 3);
if (StrToIntDef(s3Digit, 0)<>0) then
begin
sWord:='';
iDigit1:=StrToIntDef(Copy(s3Digit, 1, 1), 0);
iDigit2:=StrToIntDef(Copy(s3Digit, 2, 1), 0);
iDigit3:=StrToIntDef(Copy(s3Digit, 3, 1), 0);
case iDigit1 of
2..9: sWord:=sWord+aNum[iDigit1]+' Ratus ';
1: sWord:=sWord+'Seratus ';
end; { case }
case iDigit2 of
2..9: sWord:=sWord+aNum[iDigit2]+' Puluh ';
1: case iDigit3 of
2..9: sWord:=sWord+aNum[iDigit3]+' Belas ';
1: sWord:=sWord+'Sebelas ';
0: sWord:=sWord+'Sepuluh ';
end; { case }
end; { case }
if (iDigit2<>1) then
case iDigit3 of
2..9: sWord:=sWord + aNum[iDigit3] + ' ';
1: if (iCount=4) and ((iDigit1+iDigit2)=0) then
sWord:=sWord+'se'
else
sWord:=sWord+'Satu ';
end;
Result:=Result+sWord+aUnit[iCount]+' ';
end;
end;
while Result[Length(Result)]=' ' do
SetLength(Result, Length(Result)-1);
end;
end.
Jika sudah selanjutnya tekan F9 / RUN pada project delphi sobat untuk menjalankan program dan lihat hasilnya. jika anda ingin mengunduh progam perhitungan uang / currency yang sudah saya buat, anda dapat mengunduh program nya di link di bawah ini:
note : klik skip ad / lewati untuk melanjutkan proses unduhan
Demikian postingan yang dapat saya share kali ini, semoga dapat bermanfaat.
0 Comments
Silahkan tinggalkan komentar dibawah ini,
Terima kasih sudah :
1. Berkomentar dengan sopan
2. Tidak meninggalkan link aktif dalam form komentar
3. Berkomentar sesuai postingan / artikel
4. Tidak membuat komentar yang mengandung SARA / SPAM
5. Memberikan informasi link / script yang tidak berfungsi