MEMBUAT PERHITUNGAN UANG RIBUAN DENGAN FORMAT CURRENCY DI DELPHI

Hosting Unlimited Indonesia
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.
Hosting Unlimited Indonesia

Post a Comment

0 Comments