Minggu, 14 April 2013

ListView Control

"Tutorial ini adalah Chapter 8 dari pembahasan Buku "A Beginner's Guide to Gambas - Revise for Version 3" yang membahas tentang ListView Control, sebagai pembahasan selanjutnya setelah IconView Control yang telah dipostingkan sebelumnya. Semoga bermanfaat-Pen"




ListView Control


Kontrol ListView mewarisi Control dan menerapkan daftar item teks dipilih dengan ikon. Item ListView diindeks oleh kunci. Mereka menampilkan string dan ikon. Kontrol ini memiliki kursor internal yang digunakan untuk mengakses item nya. Anda harus menggunakan metode Move (MoveAbove, MoveBelow, MoveCurrent, MoveFirst, MoveLast, MoveNext MovePrevious, MoveTo) untuk memindahkan kursor internal, dan Anda perlu menggunakan properti Item untuk mendapatkan teks item poin kursor di. Class ini merupakan creatable dan konvensi pemanggilan standar:

DIM hListView AS ListView
hListView = NEW ListView ( Parent AS Container )

Kode di atas menciptakan kontrol ListView baru yang bertindak seperti array read-only. Mari kita membuat sebuah program yang akan menerapkan kontrol ListView. Buat proyek baru bernama ListView yang merupakan pengguna Qt antarmuka jenis proyek grafis. Ketika IDE muncul setelah Anda melalui proyek wizard, menciptakan bentuk sederhana yang terlihat seperti gambar di bawah.

 
 
Layout untuk contoh ListView

  
Dari kiri atas gambar, Anda memiliki kontrol ListView kami bernama ListView1, Textbox bernama TextBox1, dan Item tombol Insert bernama Tombol1. Ada dua tombol radio, bernama RadioButton1 dan RadioButton2 dan tombol Remove Item bernama tombol2. Pada botton bentuk adalah TextLabel bernama TextLabel1 dan tombol Quit bernama Tombol3.



Dari kiri atas gambar, Anda memiliki kontrol ListView kami bernama ListView1, Textbox bernama TextBox1, dan Item tombol Insert bernama Tombol1. Ada dua tombol radio, bernama RadioButton1 dan RadioButton2 dan tombol Remove Item bernama tombol2. Pada botton bentuk adalah TextLabel bernama TextLabel1 dan tombol Quit bernama Tombol3.

Setelah Anda membuat formulir dan membuat kelas startup, kita perlu menambahkan kode berikut ke jendela kode untuk melihat bagaimana menerapkan kontrol ListView:

' Gambas class file

sStatus as String

PUBLIC SUB Form_Open()

DIM picSquare AS NEW Picture

picSquare = picSquare.Load ("square.png")

Di atas, kami menggunakan kelas Picture variabel "picSquare" untuk mengembalikan nilai (bitmap) dengan menggunakan "Load" metode. Variabel "picSquare" kemudian menerima nilai yang dikembalikan (bitmap). Sintaks: Picture.Load (filename) Saat ini, Gambar dapat menerima png, jpg, bmp, gif, dan format file yang xpm...... Sebenarnya, jika Anda dimensi variabel Gambar dengan nama lain, yang juga bekerja. Misalnya: DIM picXYZ AS NEW Picture, yang kemudian dapat digunakan dalam pernyataan: picSquare = picXYZ.Load ("square.png"). Hal ini semata-mata untuk kenyamanan yang kita gunakan picSquare.Load dalam kode, karena kita telah dimensioned picSquare sebagai variabel kelas Picture.


Baris berikut akan menambahkan item ke ListView dengan entri awal

ListView1.Add ("ListItem1","ListItem1", picSquare)

TextLabel1.Text = ListView1.Item.Text

ListView1_Click

END

Ketika program dimulai dan bentuk pertama kali ditampilkan di layar, rutin di atas dijalankan. Kami membuat dua variabel lokal untuk ikon kami yang akan digunakan dalam daftar dan beban mereka ke dalam memori. Selanjutnya, kita menambahkan kunci default dan item ke daftar menggunakan metode ListView1.Add, menentukan ikon picSquare berhubungan dengan item ini. Jangan khawatir tentang ikon untuk saat ini - kita akan membuat mereka terakhir. Selanjutnya, kita perlu membuat sebuah event untuk menyegarkan daftar kapan item ditambahkan atau diklik oleh pengguna.

PUBLIC SUB ListView1_Click()

ListView1.Item.Selected = TRUE 'First, identify the item as selected.

ListView1.MoveCurrent 'Then, move the cursor to the selected item.

TextLabel1.Text = ListView1.Item.Text & sStatus

END


Dalam subroutine ListView1_Click, baris pertama kode mengidentifikasi item saat ini sebagai "dipilih" dengan menetapkan Item.Selected TRUE, kemudian bergerak kursor internal untuk item yang paling saat ini. Dengan cara ini, ketika Anda menambahkan item baru, mereka secara otomatis akan disorot. Akhirnya, update baris ketiga nilai TextLabel1.Text kami dengan teks pemilihan (atau baru ditambahkan) saat ini dan status saat ini (diadakan di global var sStatus AS String) ditambahkan. Jika pengguna mengklik pada tombol Sisipkan item (kami menamakannya Tombol1), ini rutinitas selanjutnya dijalankan:

PUBLIC SUB Button1_Click()

Mendeklarasikan variabel lokal, picToUse, untuk ikon kami yang akan ditampilkan:

DIM picToUse AS NEW Picture

Selanjutnya, memeriksa radiobutton telah diklik. Jika tombol pertama telah diklik, kita akan memuat gambar untuk square.png, jika tidak, circle.png dimuat.

IF Textbox1.Text <> NULL THEN

IF RadioButton1.Value THEN

picToUse = picToUse.Load("square.png")

ELSE

picToUse = picToUse.Load("circle.png")

END IF

Sekarang kita akan menambahkan entri baru dengan kunci dan nama dalam kotak teks:

ListView1.Add(Textbox1.Text,Textbox1.Text,picToUse)

Ini mengosongkan keluar textbox:

TextBox1.Text = ""

sStatus = " current." 'set status to “current”

Ini panggilan ke subrutin ListView1_Click akan memperbarui (refresh) kontrol ListView:


ListView1_Click

Selanjutnya, kita harus memastikan item baru berada di area yang terlihat dari kontrol:

ListView1.Item.EnsureVisible

END IF

END

Subrutin button2_Click disebut setiap kali pengguna memutuskan untuk menghapus item yang dipilih saat dalam kontrol ListView.

PUBLIC SUB Button2_Click()


Ini baris berikutnya kode keluar kursor berbaris untuk pilihan saat ini. Metode MoveCurrent memindahkan kursor internal untuk item saat ini. Ini mengembalikan nilai TRUE jika tidak ada item saat ini, dalam hal ini kita hanya akan kembali seperti tidak ada untuk menghapus:

IF ListView1.MoveCurrent() THEN RETURN
Jika kita mencapai titik ini, kami telah pindah kursor ke dan perlu untuk menghapus item kursor saat ini:

ListView1.Remove(ListView1.Item.Text)

Bersihkan layar TextLabel1.Text kami dengan panggilan ini:

TextLabel1.Text = ""

Sekarang, kita perlu memperbarui posisi kursor ke item baru saat ini (karena kita sekarang menunjuk pada item yang dihapus). Tapi pertama-tama, kita perlu memeriksa properti .Count untuk melihat apakah kita baru saja menghapus item terakhir dalam daftar. Jika jumlah lebih besar dari nol, maka kita memiliki item yang tersisa dalam daftar. Jika tidak, pernyataan IF tidak akan benar dan kode akan dilewati:

IF ListView1.Count > 0 THEN

ListView1.MoveCurrent


Setelah metode .Remove metode dijalankan, item saat ini menjadi item berikut item dihapus dalam daftar, kecuali item yang dihapus adalah item terendah-down pada daftar - dalam kasus itu, item saat ini menjadi item baru turun terendah dalam daftar. Ini menentukan posisi baru kursor internal yang ditetapkan oleh. MoveCurrent.

ListView1.Item.Selected = TRUE 'Selects the current item

Perhatikan bahwa untuk penghapusan item, urutan .MoveCurrent dan. Item.Selected harus dibalik, dibandingkan dengan subrutin ListView1_Click.

sStatus = “ selected.”

ListView1_Click 'this will force an update of the TextLabel text.

END IF

END


Jika pengguna mengklik mouse mereka pada item dalam kontrol ListView, rutinitas inilah yang disebut. Kami hanya akan memperbarui properti TextLabel1.Text dengan teks item yang dipilih dan refresh kontrol ListView dengan menghubungi kami subroutine ListView1_Click.

PUBLIC SUB ListView1_Select()

TextLabel1.Text = ListView1.Item.Text

sStatus = “ selected.”

ListView1_Click

END

Jika pengguna mengklik ganda mouse pada item dalam kontrol ListView, maka akan meningkatkan _Activate event, menunjukkan pengguna telah memilih item ini untuk beberapa tindakan terjadi. Dalam kasus ini, kita hanya akan memperbarui properti TextLabel1.Text dengan teks item yang dipilih, ditambahkan dengan kata "diaktifkan", dan refresh ListView kontrol dengan memanggil subrutin ListView1_Click kami.

PUBLIC SUB ListView1_Activate()

TextLabel1.Text = ListView1.Item.Text & “ activated.”

sStatus = “ activated.”

ListView1_Click

END


Perhatikan bahwa _Activate event dipicu oleh double-click, seperti DblClick. Namun, DblClick dipicu ANYWHERE pada kontrol Anda, termasuk item-item Anda, scrollbar, tombol, atau bagian dari kendali Anda. Oleh karena itu, jika Anda ingin memungkinkan pengguna untuk mengklik dua kali item dalam daftar, seperti di ListView, gunakan _Activate. Jika pengguna mengklik mouse pada Tombol3 (Quit) tombol, rutinitas ini disebut. Kami ingin keluar bersih sehingga kita memanggil metode dekat untuk bentuk menggunakan panggilan ME.close.

PUBLIC SUB Button3_Click()

ME.Close

END


"Pembahasan berlanjut ke Using the GB Icon Edit Tool"







Tidak ada komentar:

Posting Komentar