Membersihkan form input secara cepat

Misalnya kita mempunyai sebuah form masukan yang terdiri dari banyak komponen masukan (TEdit, TComboBox, TDateTimePicker dll) seperti gambar diatas.

Sebelum kita akan membuka form tersebut, kita mungkin perlu mengosongkan semua isian yang ada pada TEdit, dan mengembalikan komponen TDateTimePicker ke tanggal saat ini serta mungkin menginisial komponen TComboBox pada isian tertentu misalnya pada index 0.  Hal ini bisa kita lakukan dengan cara sebagai berikut :

Procedure InisialFrmMaster;
Begin
  
EditNomor.Text := ”;
    EditNama.Text := ”;
    ………
    EditEmail.Text := ”; 
    ComboKelamin.ItemIndex := 0; 
    ComboPekerjaan.ItemIndex := 0; 
    …….
    ComboPropinsi.ItemIndex := 0; 
    DateTimePickerLahir.Date := Now;
    DateTimePickerMenikah.Date := Now;
    ….. 
    DateTimePickerKeluar.Date := Now; 
End;

Bila jumlah komponennya banyak, maka kita akan banyak mengetikkan program dan bisa-bisa kita akan cepat bosan. Berikut ini ada salah satu jalan yang lebih cepat untuk melakukan itu semua, berapapun jumlah komponennya:

Procedure InisialFrmMaster;
Var I : Integer;

begin
  For I:=0 to FrmMaster.ComponentCount -1 do
  begin
    If Components[i] is TEdit Then
       (Components[i] as TEdit).Text:=”;

    If Components[i] is TComboBox Then
       (Components[i] as TCombobox).ItemIndex :=0;

    If Components[i] is TNumberEdit Then
       (Components[i] as TNumberEdit).Value :=0;

   If Components[i] is TDateTimePicker Then
      (Components[i] as TDateTimePicker).Date :=Now;

  end;
end;

 

Semoga bermanfaat.

Mereset String Grid

Berikut ini tips untuk me-reset (mengosongkan) isi dari setia sel dalam strimg grid tanpa mengurangi jumlah kolom dan baris.

Semoga bermanfaat.

procedure ClearGrid(Sender:TForm;GridName: String);
Var I,j,x : Integer;
IRow,ICol : Integer;
begin
For I:= 0 to Sender.ComponentCount - 1 do
Begin
If (Sender.Components[i] is TStringGrid) Then
Begin
If (Sender.Components[i] as TStringGrid).Name = GridName Then
Begin
ICol := (Sender.Components[i] as TStringGrid).ColCount;
IRow := (Sender.Components[i] as TStringGrid).RowCount;
For J:= 1 to IRow-1 do
Begin
For X:=0 to ICol-1 do
Begin
(Sender.Components[i] as TStringGrid).Cells[X,j]:=’ ‘;
End;
End;
(Sender.Components[i] as TStringGrid).RowCount :=2;
End;
End;
End;
end;

Memiliah operasi matematika sederhana

//Prosedur untuk memilah operasi matematika
//dari sebuah string yang berisi operasi matematika menjadi
//3 string yaitu SisiKiri, Operasi dan SisiKanan

Procedure PisahOperasi(StEvaluasi:String;Var stLeft,stOperator,stRight:String);
Var I,J : Integer;
st:String;
Op,EverOp:Boolean;
Begin
Op:=False;
EverOp:=False;
st:=”;
J:=1;
For I:= 1 to Length(StEvaluasi) Do
Begin
st:=StEvaluasi[i];
If stEvaluasi[i] in ['=','>','<'] Then Op:=True else Op:=False;
If Op=True Then
Begin
EverOp:=True;
StOperator:=StOperator+st;
End Else
Begin
If EverOp Then
StRight:=StRight+st else
StLeft:=Stleft+st
End;
End;
Stleft:=Trim(Stleft);
StOperator:=Trim(StOperator);
stRight:=Trim(stRight);
End;

Memiliah operasi matematika sederhana

//Prosedur untuk memilah operasi matematika
//dari sebuah string yang berisi operasi matematika menjadi
//3 string yaitu SisiKiri, Operasi dan SisiKanan

Procedure PisahOperasi(StEvaluasi:String;Var stLeft,stOperator,stRight:String);
Var I,J : Integer;
st:String;
Op,EverOp:Boolean;
Begin
Op:=False;
EverOp:=False;
st:=”;
J:=1;
For I:= 1 to Length(StEvaluasi) Do
Begin
st:=StEvaluasi[i];
If stEvaluasi[i] in ['=','>','<'] Then Op:=True else Op:=False;
If Op=True Then
Begin
EverOp:=True;
StOperator:=StOperator+st;
End Else
Begin
If EverOp Then
StRight:=StRight+st else
StLeft:=Stleft+st
End;
End;
Stleft:=Trim(Stleft);
StOperator:=Trim(StOperator);
stRight:=Trim(stRight);
End;

Menggabung TEdit dengan TSpeedbutton

Terkadang kita memerlukan untuk menyatukan antara komponen TEdit dengan komponen yang lain. Misalnya dengan TSpeedButton.

1. Buat aplikasi baru

2. Tambahkan komponen TEdit ke dalam form (Edit1)

3. Tambahkan komponen TSpeedbutton kedalam form (Speedbutton1)

4. Atur tinggi dan lebar speedbutton1 sama dengan tinggi komponen Edit1.

5. Atur Glyph dari Speedbutton sesuai dengan gambar yang diinginkan

Pada event oncreate milik form, tambahkan kode dibawah ini

Var t :TRect;

Begin
SendMessage(edit1.Handle,EM_SETMARGINS,EC_RIGHTMARGIN,MakeLong(0,20));
SpeedButton1.Height :=Edit1.ClientHeight;
SpeedButton1.Parent := Edit1;
SpeedButton1.Align  :=alRight;
SpeedButton1.Cursor := crHandPoint;
end;

Hasil akhir akan seperti ini:

Semoga bermanfaat

Get Time ZONE

Fungsi ini untuk mendapatkan setting time zone yang sedang dipakai di komputer. Result dalam bentuk string

function GetTimeZone: string;
var
TimeZone: TTimeZoneInformation;
begin
GetTimeZoneInformation(TimeZone);
Result := ‘GMT ‘ + IntToStr(TimeZone.Bias div -60);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := GetTimeZone;
end;

Merubah Kalimat

Function ini digunakan untuk merubah setiap huruf pada awal kata menjadi huruf besar (Title Case)

Function UbahKalimat(StrInput:String) : String;
Var I : Integer;
stmp : String;
begin
Stmp:=”;
Stmp:=Uppercase(copy(StrInput,0,1));
For I:=2 to Length(StrInput) do
Begin
If copy(StrInput,i-1,1)=’ ‘ then
Begin
stmp:=Stmp+Uppercase(Copy(StrInput,i,1));
End else
Begin
stmp:=Stmp+lowercase(Copy(StrInput,i,1));
End;
End;
Result:=Stmp;
end;

Contoh Penggunaannya :

Var str : String;

Begin
str := “selamat datang”;
Edit1.text := UbahKalimat(str);
Edit2.text := UbahKalimat(’semoga bermanfaat’);
End;

Input Tanggal

Terkadang kita membutuhkan suatu masukan tanggal yang bisa dikosongkan bisa juga diisi (opsional). Bila kita menggunakan TDateTimePicker, maka nilai tanggal harus diisi (tidak boleh dikosongkan.

Nah untuk input tanggal menggunakan TEdit, maka perlu dibuat fungsi untuk mengecek valid tidaknya tanggal yang dimasukkan.

function TglBenar(a: string): boolean;
CONST
JUMLAHHARI : ARRAY[1..12] OF BYTE =(31,28,31,30,31,30,31,31,30,31,30,31);
begin
StringToDate(a,hari,bulan,tahun,dataError);
if dataError then Result:=False
else
begin
//Cek Bulan
If (Bulan>12) or (Bulan<1)>
Result:=True;
//Jika bulan sudah benar, cek tgl apakah melewati batas hari dlm bln tsb
If Result=True Then
Begin
Case Bulan of
1 : IntJmlHari:=31;
2 : If ((Tahun MOD 4)=0) Then IntJmlHari:=29 else
IntJmlHari:=28;
3 : IntJmlHari:=31;
4 : IntJmlHari:=30;
5 : IntJmlHari:=31;
6 : IntJmlHari:=30;
7 : IntJmlHari:=31;
8 : IntJmlHari:=31;
9 : IntJmlHari:=30;
10: IntJmlHari:=31;
11: IntJmlHari:=30;
12: IntJmlHari:=31;
End;
If (Hari>IntJmlHari) OR (Hari<1)>
Else Result:=True;
End;
end;

//Memisah Tgl,Bln,Thn menjadi Integer
procedure TForm1.StringToDate(A: String; var Hari, Bulan, Tahun: integer;
var DataError: boolean);
Var Valcode:Integer;
begin
DataError:=False;
Val(Copy(a,1,2),hari,valcode);
if valcode<>0 then dataerror:=true else
begin
Val(Copy(a,4,2),bulan,valcode);
if valcode<>0 then DataError:=true else
begin
Val(Copy(a,7,4),tahun,valcode);
if valcode<>0 then DataError:=true;
end;
end;
end;

Pada Event OnKeyPress milik TEdit dibuat procedure :

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If not (Key in['0'..'9','-',#8,#13]) Then Key:=#0;
end;

Penggunaan :

procedure TForm1.BitBtn1Click(Sender: TObject);
Var TanggalInput : TDateTime;
begin
If TglBenar(MaskEdit1.Text) Then
Begin
TanggalInput:=StrToDate(Maskedit1.Text);
Edit2.Text := FormatDateTime(’dd/mm/yyyy’, TanggalInput);
End else
ShowMessage(’Pemasukan tanggal salah’);
end;