Bagaimana Caranya Agar Lebar Kolom ListView Sesuai Dengan Panjang Data?

Pada artikel ini, saya akan memberikan trik membuat lebar kolom pada list view menyesuaikan lebarnya dengan panjang data secara runtime. Agar lebar kolom secara otomatis menyesuaikan dengan lebar data cukup mudah. Kita hanya perlu memberikan nilai width pada kolom tersebut dengan angka -2 (minus 2). Lebih detailnya ikut langkah - langkah berikut :

Nama Property
Value
Name lv1
ViewStyle vsReport
Width 505

2. Masukkan komponen TButton ke dalam form, set property di bawah ini :

Nama Property
Value
Name btnBuatKolom
Caption Buat Kolom
Pada event OnClick button btnBuatKolom isikan baris kode berikut ini :
procedure TfrmMain.btnBuatKolomClick(Sender: TObject);
 var
   i: Integer;
   lvColumn: TListColumn;
 begin
   for i := 1 to 10 do
   begin
  lvColumn := lv1.Columns.Add;
  lvColumn.Caption := 'Data Ke ' + IntToStr(i);
   end;
 end;  
 
3. Masukkan sebuah komponen TButton lagi, set property di bawah ini :

Nama Property
Value
Name btnAutosize
Caption Set Autosize
Pada event OnClick button btnAutoSize isikan baris kode berikut ini :
procedure TfrmMain.btnAutosizeClick(Sender: TObject);
 var
   i: Integer;
 begin
   for i := 0 to lv1.Columns.Count - 1 do
  lv1.Columns[i].Width := -2;
 end;  
 
Untuk melihat hasilnya , klik F9. Kemudian klik button tambah kolom, kemudian button autosize. Bagaimana hasilnya ?
4. Bagaimana kalau kita akan menambahkan data pada listview ini? Apakah lebar kolomnya juga akan menyesuaikan ? Untuk lebih jelasnya ikut langah-langkah berikut ini :
- Tambahkan sebuah button lagi, set propertynya seperti di bawah ini :

Nama Property
Value
Name btnTambahData
Caption Tambah Data
Pada event OnClick button btnTambahData isikan baris kode berikut ini :
procedure TfrmMain.btnTambahDataClick(Sender: TObject);
var
  i: Integer;
  j: Integer;
begin
  for i := 1 to 5 do
  begin
    with lv1.Items.Add do
    begin
      Caption := ' Kolom 1 Baris Ke ' + IntToStr(i);
      for j := 2 to lv1.Columns.Count do
        SubItems.Add('Kolom ' + IntToStr(j) + ' Baris Ke ' + IntToStr(i));
    end;
  end;
end;

 
Sekarang jalankan dan klik button buat kolom, autosize dan tambah data secara berurutan? Bagaimana hasilnya ? : )
Sourcecode bisa didownload di sini

0 comments:

Post a Comment