Mình có file test đính kèm, các bạn chỉ dùm đoạn code để có thể sử dụng mousewheel với. Có search google về mấy code mà áp vào bị lỗi, sửa hoài không ra, còn gà về vba.
Mong giúp đỡ, thanks !!!
có vấn đề này nữa, cả 2 file ScrollwheelForm và wheelForm mình tải về đều có chung vấn đề là: Scroll được, nhưng dữ liệu trong combobox của mình rất dài, mà chỉ scroll được từ từ, từ trên xuống, mình kéo xuống giữa giữa thì scroll nhảy lên lại từ đầu, không scroll đc tại vị trí mình đã kéo xuống.
Mình có ý tưởng như thế này:
- Click dữ liệu do combobox xổ xuống thì chưa chọn liền, phải double click thì mới chọn, click thì chỉ dừng lại ở đó thôi, khi đó scroll thì scroll từ vị trí mình đã click, ko phải nhảy lên trên rồi scroll.
- Hoặc ko cần dùng double click, nhưng mình kéo combobox tới đâu, thì khi đưa chuột vào scroll thì cho scroll ngay vị trí đó.
Mong các bạn và các thầy góp ý, giúp đỡ.
Cám ơn.
Bạn cứ cho lên đây 1 file chừng độ 1000 dòng dữ liệu rồi tôi làm cho (dữ liệu thật nhé)em làm bên dây cáp điện, đang lập bảng thông số kỹ thuật của các loại cáp, em đã hoàn thành bảng dữ liệu gồm 12.000 dòng, do số dòng và cột rất nhiều, nhìn vào khó, nên em lập ra 1 form, khi tra mã sản phẩm thì sẽ hiển thị các thông số trên các textbox, tương đối ổn rồi, chỉ đang muốn hiệu chỉnh thêm cái comboBox cho nó scroll. Vì số lượng nhiều, nên khi kéo xuống nhẹ là qua rất nhiều dữ liệu, nên em muốn khi kéo tới gần mã cáp mình muốn tra, lúc đó sẽ dùng scroll để kéo cho chậm lại.
Vì là mã sản phẩm không có qui luật cụ thể và rất nhiều nên em nghĩ không thể nhớ để có thể dùng kiểu tra tự điển.
Anh chỉ em thêm về câu cuối anh nói, gõ từ khóa, list tự động thu lại vừa đủ cho ta chọn, em chưa biết làm cái này.
Mong góp ý chỉ bảo dùm em.
Cám ơn !!!
anh cho em xin cái mail, vì file này thuộc công ty nên em ko dám share lên trực tiếp ở đây.
anh NDU ơi, đã gửi mail cho anh và gửi link file vào box forum của anh rồi, mong anh xem giúp dùm.
Cám ơn anh.
- Vì số lượng dữ liệu nhiều, nên khi kéo ComboBox xuống nhẹ là qua rất nhiều dữ liệu, nên em muốn khi kéo tới gần mã cáp mình muốn tra, lúc đó sẽ dùng scroll để kéo cho chậm lại.
- Tiện thể giúp code dùm em cái label Tên nhóm cáp trên form, giá trị xuất cho label là dòng chữ màu đỏ tên nhóm cáp trong bảng dữ liệu.
Mong góp ý giúp đỡ.
Cám ơn !!!
If uMsg = WM_MOUSEWHEEL And Not obj Is Nothing Then
mousedata = wParam \ 65536
With obj
[COLOR=#ff0000]TopIndex = .TopIndex[/COLOR]
If mousedata > 0 Then
.TopIndex = TopIndex - 1
[COLOR=#0000ff] ' TopIndex = .TopIndex[/COLOR]
Else
.TopIndex = TopIndex + 1
[COLOR=#0000ff]' TopIndex = .TopIndex[/COLOR]
End If
Exit Function
End With
End If
Thực ra khi sửa code của người khác tôi chỉ thay hook của người khác bằng subclassing nhưng code phục vụ thông điệp của người khác tôi vẫn để nguyên. Bây giờ nhìn kỹ thì thấy nó không đáp ứng được nhu cầu của bạn.
Nếu bạn chỉ muốn được việc thì ...
Trong code của WindowProc (Module1) có đoạn như sau, chỗ đỏ đỏ là tôi mới thêm vào.
Chỗ xanh xanh bạn nên xóa đi
Mã:If uMsg = WM_MOUSEWHEEL And Not obj Is Nothing Then mousedata = wParam \ 65536 With obj [COLOR=#ff0000]TopIndex = .TopIndex[/COLOR] If mousedata > 0 Then .TopIndex = TopIndex - 1 [COLOR=#0000ff]' TopIndex = .TopIndex[/COLOR] Else .TopIndex = TopIndex + 1 [COLOR=#0000ff]' TopIndex = .TopIndex[/COLOR] End If Exit Function End With End If
Xóa cả dòng "If uMsg = WM_MOUSEWHEEL Or uMsg = WM_VSCROLL Then Debug.Print CStr(uMsg)"
Nếu bạn muốn hiểu "tại sao" thì hỏi, tôi sẽ giải thích.
Label bạn tự làm, hoặc người khác giúp bạn. Tôi chỉ làm phần mà những người khác có thể không có hứng giúp bạn.