Skip to main content

Cara Sortir Column Header Menggunakan Component Delphi TStringGrid

Hai sobat yadishare sudah lama banget nih rasanya saya ngga posting artikel atau tutorial mengenai delphi. Nah mumpung lagi ada waktu saya mau posting sedikit tutorial mengenai cara sortir data menggunakan komponen TStringGrid.


Ketika kita mencoba menampilkan data menggunakan komponen TStringGrid yang secara default tidak bisa otomatis melakukan sortir data ketika column headernya di click, maka kita harus melakukan sedikit coding agar hal itu bisa terlaksana.


Nah gimana caranya ? Yuk kita buka dulu IDE Delphi XE kita. Disini saya menggunakan RAD Studio XE5. Kemudian kita buat new project dengan cara membuka menu File > New > VCL Forms Application - Delphi.


Atur settingan form sesuai dengan kebutuhan. Kemudian tambahkan 1 buah TLabel dan 1 buah TStringGrid ke dalam form. Nah tampilannya akan jadi seperti ini nih :


delphi-Tstringgrid-form

Kalau sudah sekarang kita bisa masuk ke tahap coding. Nah silahkan di copy paste dan di sesuaikan dengan nama komponen dan form yang kalian gunakan yah...


[code language = "delphi"]

unit U_Gridsort;
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
procedure SortGrid(Grid : TStringGrid; SortCol:integer);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure Tform1.Sortgrid(Grid : TStringGrid; SortCol:integer);
var
i,j : integer;
temp:tstringlist;
begin
temp:=tstringlist.create;
with Grid do
for i := FixedRows to RowCount - 2 do
for j:= i+1 to rowcount-1 do
if AnsiCompareText(Cells[SortCol, i], Cells[SortCol,j]) > 0
then
begin
temp.assign(rows[j]);
rows[j].assign(rows[i]);
rows[i].assign(temp);
end;
temp.free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
totwidth:integer;
begin
with stringgrid1 do
begin
for j := 1 to rowcount-1 do
for i:= 1 to colcount-1 do
cells[i,j]:=format('%3d',[random(1000)]);
for i:= 1 to rowcount-1 do cells[0,i]:='baris '+ format('%2d',[i]);
totwidth:=0;
for i:= 0 to colcount-1 do
begin
cells[i,0]:='kolom '+ inttostr(i+1);
colwidths[i]:=defaultcolwidth+random(48);
inc(totwidth,colwidths[i]);
end;
width:=totwidth+(colcount+3)*gridlinewidth;
end;
end;

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
c,j:integer;
rect:trect;
begin
with stringgrid1 do
if y<rowheights[0] then
begin
for j:= 0 to colcount-1 do
begin
rect := cellrect(j,0);
if (rect.Left x) then
begin
c := j;
break;
end;
end;
sortgrid(stringgrid1,c);
end;
end;

end.

[/code]

Ok selesai. Pada saat form dijalankan, teman-teman akan melihat ada data yang tampil disana. Padahal kita tidak mengisikan data apapun atau mengambil data dari database. Kok bisa ? Ya tentu saja bisa. Karena pada saat form di create kita telah menuliskan kode untuk menampilkan data secara acak. Lebih tepatnya pada bagian ini nih :


[code language = "delphi"]

procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
totwidth:integer;
begin
with stringgrid1 do
begin
for j := 1 to rowcount-1 do
for i:= 1 to colcount-1 do
cells[i,j]:=format('%3d',[random(1000)]);
for i:= 1 to rowcount-1 do cells[0,i]:='baris '+ format('%2d',[i]);
totwidth:=0;
for i:= 0 to colcount-1 do
begin
cells[i,0]:='kolom '+ inttostr(i+1);
colwidths[i]:=defaultcolwidth+random(48);
inc(totwidth,colwidths[i]);
end;
width:=totwidth+(colcount+3)*gridlinewidth;
end;
end;

[/code]


Dan hasilnya akan menjadi seperti ini ketika programnya dijalankan :

delphi-Tstringgrid-form-header-column-click.png

Ok sobat yadishare segitu dulu tutorial yang dapat saya sharing kali ini, semoga ada manfaatnya buat kita semua. Tetap belajar dan amalkan terus ilmu yang kita punya, mampir terus ke blog saya dan jangan lupa untuk terus menonton video-video tutorial saya yang ada di youtube. Please like, share and subscribe ya... :) sampai jumpa.


 

 

Comments

Popular posts from this blog

Tips Jitu Cara Mengatasi Error Pada Saat Compile Aplikasi Menggunakan Visual Basic 6

Sebenarnya ada banyak sekali nih project yang harus saya kerjakan dikantor. Namun terkadang apa yang kita rencanakan sering kali berbeda dengan kenyataan. Maksud hati ingin focus dulu ke satu project, tapi karena adanya satu dan lain hal, akhirnya terpaksa deh harus melakukan modifikasi dan membuka project lama yang sebenarnya saya sudah malas untuk berhubungan lagi dengannya :) Project ini sudah dibangun dari awal tahun 2000-an, jauh sebelum saya join. Ya intinya saya dapat warisannya lah seperti itu. Di bangun masih dengan menggunakan vb5-vb6 waktu itu. Sekarang sudah tahun 2016. Jadi sudah lama ya sob. Sudah ketinggalan jaman lah kurang lebih. Meskipun sudah tua, tapi menurut saya visual basic tetap menjadi bahasa pemrograman yang masih powerful. Masalah Kompatibilitas Nah masalah terbesar dalam menggunakan program-program lawas seperti itu biasanya ada pada kompatibilitas component-componentnya. Karena hardware dan os yang kita gunakan biasanya akan berubah seiring waktu. Jika soba...

Youtube Tips 2017 | Cara Mengganti Dark Theme

Pada kesempatan ini saya ingin membahas seputar layout youtube terbaru tahun 2017. Yaitu mengenai cara mengganti tema atau theme baru yang bisa kita temui pada saat kita membuka situs youtube. Mungkin fitur baru ini sengaja disediakan oleh google agar kita tidak jenuh atau bosan dengan tampilan youtube yang itu-itu saja. Fitur ini bisa anda aktifkan dan non aktifkan sesuai dengan selera anda kapan pun anda mau. Kalau menurut saya sih cukup keren. Makanya ketika saya tahu kalau mereka menyediakan fitur tersebut, saya langsung tertarik untuk mencobanya. Dan kesan yang saya dapatkan cukup memuaskan. Karena pada dasarnya saya sebagai developer atau programmer memang sudah terbiasa dengan layout bertema gelap seperti itu. Untuk melihat coding-coding php, vb, dan lain-lain lebih mudah untuk membedakan syntax yang satu dengan syntax yang lainnya. Nah jika anda tertarik untuk mencoba dark theme baru tersebut, kalian bisa langsung menggantinya melalui menu setting. Disana akan ada opsi untuk me...

Belajar PHP Itu Menyenangkan (Memahami Syntax Dasar PHP)

Ngga tahu kenapa saya lagi bersemangat sekali nulis artikel tentang php. Padahal sudah malam nih. Sudah jam 22:40. Waktunya tidur karena besok mesti kerja lagi dan ngga boleh kesiangan pula tuk bangun sholat subuh. Mungkin karena saya merasa kalau saya punya hutang kepada sobat yadishare semua bahwa selama ini saya jarang sekali nulis tentang php. Lebih banyak nulis dan bikin video tentang delphi, visual basic, odoo, photoshop, cara bikin video, grafik, database dan lain-lain. Nah berhubung lagi ada kesempatan dan masih diberikan kesehatan sama yang maha kuasa, jadi saya mau cicil saja sharing tentang php nya dari hal-hal yang sangat sederhana sekali ya. Karena untuk memahami materi bahasa pemrograman tertentu terkadang memang tidak mudah. Termasuk mengenai php. Apalagi untuk menguasai banyak bahasa pemrograman pasti tidak akan mudah. Butuh keseriusan dari diri kita masing-masing. Ibaratnya dulu kalau sekolah kita mungkin suka malas belajar matematika, fisika, kimia, dan lain-lain. Ket...