Kamis, 30 Mei 2019

Cara Mengurutkan/Sorting Data Pada Tabel (TableView/GridView) ~Tutorial Gambas


Yang dibahas pada artikel ini adalah mengurutkan data tabel berdasarkan pada kolom tertentu karena (bagi penulis) sedikit lebih sulit dan mungkin lebih banyak digunakan dibandingkan mengurutkan berdasarkan masing-masing kolom. Jika pembaca ingin mencari cara mengurutkan berdasarkan masing-masing kolom tentu masih bisa hanya dengan memahami kode-kode program pada artikel ini.

Artikel ini mungkin sepertinya lebih cocok bagi pengguna gambas dengan keahlian tingkat lanjut karena disini tidak akan dijabarkan secara rinci arti dari tiap-tiap kode perintah, dan saya anggap pembaca sudah mempunyai pengetahuan dan pengalaman cukup dasar-dasar pemrogaman Gambas.

Buat sebuah tampilan sebagai contoh seperti berikut:
Nama Form: grdvw.form
Nama Class: grdvw.class
Properti : GridView1



Kode program didalamnya

' Gambas class file

Public Sub Form_Open()
  
  GridView1.Header = 4
  GridView1.Header = GridView1.Both
  GridView1.Columns.Count = 4
  GridView1.Rows.Count = 4
  GridView1.Columns[1].Title = "A"
  GridView1.Columns[2].Title = "E"
  GridView1.Columns[3].Title = "B"
  GridView1.Columns[0].Title = "C"
  GridView1[0, 0].Text = "kamu"
  GridView1[0, 1].Text = "semua"
  GridView1[0, 2].Text = "bisa"
  GridView1[1, 0].Text = "aku"
  GridView1[1, 1].Text = "mungkin"
  GridView1[1, 2].Text = "belum"
  GridView1[2, 0].Text = "dia"
  GridView1[2, 1].Text = "harus"
  GridView1[2, 2].Text = "tahu"
  GridView1[3, 0].Text = "halo"
  GridView1[3, 1].Text = "1"
  GridView1[3, 2].Text = "2"
  GridView1.Sorted = True
  ‘Memastikan posisi tanda kolom urut/sort berada pada kolom header index ke 0
  GridView1.Columns.Sort = 0

End

Public Sub GridView1_Sort()

  ‘Memastikan tanda enable sort tetap di header kolom index ke 0
  GridView1.Columns.Sort = 0

End

Public Sub GridView1_ColumnClick(Column As Integer)

  Dim C1, C2 As New String[]
  Dim n, n1, n2 As Short
  If Column <> 0 Then Return

  ‘Memasukkan data tabel index kolom ke 0 ke variabel array C1
  For n1 = 0 To GridView1.Rows.Max
    C1.Add(GridView1[n1, 0].Text)
  Next
  ‘Disalin ke variabel array C2
  C2 = C1.Copy()
  C2.Sort
  For n1 = 0 To C1.Max
    For n2 = 0 To GridView1.Columns.Max
     'Menukar data
     Swap GridView1[n1, n2].Text, GridView1[C1.Find(C2[n1], 0, n1), n2].Text
    Next
  Next

  'Jika terjadi error karen kesalahan index (dan blum berururtan),
  'maka proses diulangi
  Catch
   GridView1_ColumnClick(Column)

End

Tampilan eksekusi sebelum di urutkan


Setelah diurutkan