"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()
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
ListView1.Add(Textbox1.Text,Textbox1.Text,picToUse)
TextBox1.Text = ""
sStatus
= " current." 'set status to
“current”
Ini
panggilan ke subrutin ListView1_Click akan memperbarui (refresh)
kontrol ListView:
ListView1_Click
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)
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