Chương 5 Xây dựng các màn hình quản lý
5.11 Màn hình chi tiết thanh lý sách
Xây dựng màn hình như hình sau:
Chương 5 - Xây dựng các màn hình quản lý
170 3 lblNguoiThanhLy Label “Người thanh lý”
4 lblNguoi Label Họ tên người thanh lý
5 group1 GroupBox
6 lblSachHienCo Label “Sách hiện có”
7 lblSach Label Giá trị số sách hiện có
8 SHCList ListView
9 btnChon Button “Chọn”
10 btnBoChon Button “Bỏ chọn”
11 lblSachThanhLy Label “Sách thanh lý”
12 lblSachTL Label Giá trị số sách thanh lý
13 STLList ListView
Màn hình thanh lý sách được cài đặt thành 2 lớp: lớp ChiTietPhieuThanhLy_Form là lớp giao diện và lớp PhieuThanhLy là lớp xử lý chính. Trong đó lớp PhieuThanhLy đã trình bày ở trên.
5.11.1 ChiTietPhieuThanhLy_Form
Bên cạnh các controls mô tả ở trên, lớp ChiTietPhieuThanhLy_Form còn các biến thành phần và phương thức như sau:
Lớp ChiTietPhieuThanhLy_Form Thuộc tính
Tên Lớp Ý nghĩa
ptl PhieuThanhLy Biến thành phần đảm nhận
việc xử lý thông tin
MaPhieuThanhLy Integer Mã phiếu thanh lý hiện
hành Các hàm xử lý biến cố
Tên Điều kiện phát sinh Ý nghĩa
ChiTietPhieuThanhLy_Form_Load Form load Hiển thị danh sách sách hiện có và sách được thanh lý bởi phiếu hiện hành
btnChon_Click Khi người dùng click nút btnChon
Đưa một quyển sách vào danh sách thanh lý btnBoChon_Click Khi người dùng click nút
btnBoChon
Đưa một quyển sách ra khỏi danh sách thanh lý SachList_DoubleClick Khi người dùng double
click SachList
Đưa một quyển sách vào danh sách thanh lý TLList_DoubleClick khi người dùng double
click TLList
Đưa một quyển sách ra khỏi danh sách thanh lý Phương thức
Tên Ý nghĩa
HienThiDanhSachSach Hiển thị danh sách sách hiện có lên màn hình
HienThiDanhSachSachThanhLy Hiển thị danh sách sách thanh lý lên màn hình ThemSachThanhLy Đưa một quyển sách vào danh sách thanh lý XoaSachThanhLy Đưa một quyển sách ra khỏi danh sách thanh lý
Khi màn hình vứa được load, ứng dụng phải hiển thị cho người dùng thông tin của phiếu thanh lý (ngày thanh lý, người thanh lý) đang xét, đồng thời hiển thị danh sách sách đang có của thư viện và những sách đã được thanh lý bởi phiếu thanh lý này. Ta viết hàm xử lý cho sự kiện form load:
Private Sub ChiTietPhieuThanhLy_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
HienThiDanhSachSach()
HienThiDanhSachSachThanhLy() End Sub
Trong đó, các hàm hiển thị được viết như sau:
Private Sub HienThiDanhSachSach() SachList.Items.Clear()
Dim s_dt As DataTable = ptl.LayDanhSachSach Dim i As Integer
Dim str As String
Dim lvi As ListViewItem
For i = 0 To s_dt.Rows.Count - 1 str = s_dt.Rows(i)("TenSach")
lvi = SachList.Items.Add((i + 1).ToString) str = s_dt.Rows(i)("MaSach")
lvi.SubItems.Add(str)
str = s_dt.Rows(i)("TenSach") lvi.SubItems.Add(str)
str = s_dt.Rows(i)("TenTheLoai") lvi.SubItems.Add(str)
str = s_dt.Rows(i)("TacGia") lvi.SubItems.Add(str)
Next
txtNumSach.Text = s_dt.Rows.Count.ToString End Sub
Private Sub HienThiDanhSachSachThanhLy() TLList.Items.Clear()
Dim sm_dt As DataTable = ptl.LayDanhSachSachThanhLy(MaPhieuThanhLy) Dim i As Integer
Dim str As String
Dim lvi As ListViewItem
For i = 0 To sm_dt.Rows.Count - 1
'Đưa thông tin chi tiết (thể loại, tác giả ...) lên list view 'và tên sách lên SMList
lvi = TLList.Items.Add((i + 1).ToString)
Chương 5 - Xây dựng các màn hình quản lý
172
txtNumThanhLy.Text = sm_dt.Rows.Count.ToString End Sub
Tất cả xử lý đều được ủy nhiệm cho biến thành phần ptl thuộc lớp PhieuThanhLy, các phương thức trong lớp giao diện này chỉ đơn giản là lấy kết quả trả về hiển thị lên màn hình. Tiếp theo, chúng ta sẽ cài đặt chức năng cho màn hình này.
Đầu tiên là chức năng thêm 1 quyển sách vào danh sách thanh lý, viết hàm xử lý cho sự kiện click của nút btnChon như sau:
Private Sub btnChon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChon.Click
ThemSachThanhLy() End Sub
Trong đó, hàm ThemSachThanhLy:
Private Sub ThemSachThanhLy()
If (SachList.SelectedIndices.Count > 0) Then
Dim lvi As ListViewItem = SachList.SelectedItems(0) Dim f As New ChonLyDo_Form(ptl)
If f.ShowDialog = DialogResult.OK Then 'Cập nhật lại CSDL
ptl.ThemSachThanhLy(MaPhieuThanhLy.ToString, lvi.SubItems(1).Text, f.cbLyDo.SelectedIndex) 'Refresh
HienThiDanhSachSach()
HienThiDanhSachSachThanhLy() End If
End If End Sub
Tương tự, ta cài đặt chức năng xóa sách ra khỏi danh sách thanh lý bằng cách viết hàm xử lý cho sự kiện click của nút btnBoChon:
Private Sub btnBoChon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBoChon.Click
XoaSachThanhLy() End Sub
Để tăng tính tiện dụng cho chương trình, thay vì phải chọn sách và nhấn nút Chọn hay Bỏ Chọn, ta cho phép người dùng double click lên sách trong danh sách sách đang có để đưa nó và danh sách sách thanh lý, và double click lên danh sách sách thanh lý sẽ loại sách này ra khỏi danh sách thanh lý. Để vậy, ta viết hàm xử lý cho sự kiện double click của 2 list view.
Private Sub SachList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles SachList.DoubleClick
ThemSachThanhLy() End Sub
Private Sub TLList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TLList.DoubleClick
XoaSachThanhLy() End Sub
Đến đây chúng ta đã cài đặt xong màn hình chi tiết thanh lý sách.