Nguyễn Khả Nam
Thành viên mới
- Tham gia
- 6/6/18
- Bài viết
- 23
- Được thích
- 87
File đính kèm
Lần chỉnh sửa cuối:
Cháu cảm ơn chú đã góp ý, cháu đã nghĩ đến cách đó .Tạo các label thay cho việc dùng dữ liệu dòng 1 làm tiêu đề. Nghĩa là nạp dữ liệu từ dòng 2 trở xuống.
Tuy nhiên nếu dữ liệu 50 dòng sẽ sinh ra 65 control, khó kiểm soát.
Theo tôi thì thay vì vẽ 1 loạt các control, thì vẽ chỉ 1 listbox, Header = TrueCháu cảm ơn chú đã góp ý, cháu đã nghĩ đến cách đó .
Tuy nhiên gặp phải vấn đề khi co kéo sang phải sang trái thì các lable tiêu đề phía trên không chạy theo các cột tương ứng ạ
Vâng, đó cũng là một cách hay và hiệu quả chú ạ,cháu đã từng thiết kế thêm form phụ kiểu này nhấn đúp chuột vào dòng nào trong listbox thì form phụ sẽ hiển thị và sẽ có các cotrols trong form phụ lấy dữ liệu theo dòng đó.Theo tôi thì thay vì vẽ 1 loạt các control, thì vẽ chỉ 1 listbox, Header = True
Đâu phải dòng nào cũng cần chỉnh sửa, nên muốn sửa dòng nào thì lấy dữ liệu dòng đó ra các textbox hoặc combobox để sửa rồi cập nhật vào đúng dòng đó.
Nếu bạn ưu tiên cái đẹp thì tôi chịu thua. Riêng tôi thì ưu tiên form nhẹ nhàng, code đơn giản và quan trọng nhất là hiệu quả.Tuy nhiên ở form này cháu thấy thiết kế kiểu checkbox vậy nhìn vẫn đẹp và hay hơn chỉ tiếc là đang vướng vấn đề cố định tiêu đề nên đưa lên đây để học hỏi thêm ạ.
Bạn thử đổi qua dùng Listview xem thử. Nếu muốn hiển thị font chữ unicode thì dùng cái BSListview của bác Tuân.Vâng, đó cũng là một cách hay và hiệu quả chú ạ,cháu đã từng thiết kế thêm form phụ kiểu này nhấn đúp chuột vào dòng nào trong listbox thì form phụ sẽ hiển thị và sẽ có các cotrols trong form phụ lấy dữ liệu theo dòng đó.
Tuy nhiên ở form này cháu thấy thiết kế kiểu checkbox vậy nhìn vẫn đẹp và hay hơn chỉ tiếc là đang vướng vấn đề cố định tiêu đề nên đưa lên đây để học hỏi thêm ạ.
Cảm ơn bạn đã góp ý ,bạn có thể chia sẻ file kèm với cách dùng Listview để tôi học hỏi thêm cách tạo nhiều checkbox trongListview như vậy được không ?Bạn thử đổi qua dùng Listview xem thử. Nếu muốn hiển thị font chữ unicode thì dùng cái BSListview của bác Tuân.
Listview chỉ để xem, chọn dòng chứ không cập nhật trực tiếp được.
View attachment 301260
Theo tôi thì thay vì vẽ 1 loạt các control, thì vẽ chỉ 1 listbox, Header = True
Đâu phải dòng nào cũng cần chỉnh sửa, nên muốn sửa dòng nào thì lấy dữ liệu dòng đó ra các textbox hoặc combobox để sửa rồi cập nhật vào đúng dòng đó.
Cái mà thớt muốn gần như in hệt DataGridview của Dot NET (trừ chuyện sắc đẹp).Bạn thử đổi qua dùng Listview xem thử. Nếu muốn hiển thị font chữ unicode thì dùng cái BSListview của bác Tuân.
Listview chỉ để xem, chọn dòng chứ không cập nhật trực tiếp được.
Thử đặt tiêu đề ở một frame riêng và đồng bộ vị trí scroll của 2 frame trong sự kiện Scroll của frame.Tuy nhiên gặp phải vấn đề khi co kéo sang phải sang trái thì các lable tiêu đề phía trên không chạy theo các cột tương ứng ạ
Cảm anh đã góp ý, kiến thức em vẫn bị hạn chế chưa xử lý được vấn đề này.Thử đặt tiêu đề ở một frame riêng và đồng bộ vị trí scroll của 2 frame trong sự kiện Scroll của frame.
Để đồng bộ khi kéo Frame2 thì dùng 1 dòng code này thôi. (Frame1 chứa dòng tiêu đề)Cảm anh đã góp ý, kiến thức em vẫn bị hạn chế chưa xử lý được vấn đề này.
Nếu anh có thời gian thì làm cho em xin ví dụ tham khảo với.
Private Sub Frame2_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)
Frame1.ScrollLeft = Frame2.ScrollLeft + ActualDx
End Sub
Hay quá anh ơi, nếu có hứng thú anh áp dụng luôn cả cột UserID nữa ạĐể đồng bộ khi kéo Frame2 thì dùng 1 dòng code này thôi. (Frame1 chứa dòng tiêu đề)
JavaScript:Private Sub Frame2_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle) Frame1.ScrollLeft = Frame2.ScrollLeft + ActualDx End Sub
Xem file đính kèm.
Vâng có lẽ phần mềm này họ đang dùng DataGridview, như bác nhận xét:Cái mà thớt muốn gần như in hệt DataGridview của Dot NET (trừ chuyện sắc đẹp).
Để làm chuyện này, cần code kết nối với mấy cái dll của dot NET. Các bạn thường gọi chúng là API's
Đồng thời, người code phải ở trình độ trên trung bình mới đủ sức kiểm soát các dòng được người dùng update.
Code kết nối dll's của dot NET khá dài và phức tạp. Những bạn nào quen viết code kiểu "write once, use many time" (viết một lần, xài lại nhiều) sẽ thấy cái lợi của dot NET.
Vâng đúng rồi anh ạ, như là Freeze pane mà hình ảnh bài 1 em đã gửi .Ý là như Freeze pane? Tôi chỉ làm được giả lập như vậy khi dùng Listbox thôi.
Chào chú Mỹ, đúng là form phân quyền , làm trên sheet thì dễ rồi chú.Về mặt ý nghĩa form chắc là form phân quyền. Nếu là form phân quyền thì lâu lâu mới phải chỉnh sửa, thậm chí chỉ cần thêm bớt chỉnh sửa ngay trên sheet.
Tôi thì ngán cái việc giải quyết 1 việc rất đơn giản là phân quyền, cả năm mới chỉnh sửa thêm bớt 1 vài lần, mà phải viết cả 1 rừng code, thậm chí không hiểu hết code.