ControlTipText của ListBox xuất hiện mỗi lần click

Liên hệ QC

ThaiDieuAnh

Thành viên hoạt động
Tham gia
8/8/16
Bài viết
139
Được thích
24
Nghề nghiệp
Xây dựng
Giả sử em có 1 listbox có 2 cột dữ liệu là A, B. Em không muốn cột A hiển thị trong ListBox mà chỉ cột B thôi (lý do: để tiết kiệm diện tích Form) và mỗi lần click vào listbox thì ControlTipText của nó sẽ là cột A. Tuy nhiên khi em click lần thứ nhất Ok, lần thứ 2 thì phải rê chuột ra listbox rồi vào listbox thì ControlTipText mới xuất hiện. Em muốn mỗi lần click chuột trên listbox thì ControlTipText sẽ xuất hiện tương ứng được không ạ. Mong các anh chị giúp em, xin cảm ơn!
 

File đính kèm

Giả sử em có 1 listbox có 2 cột dữ liệu là A, B. Em không muốn cột A hiển thị trong ListBox mà chỉ cột B thôi (lý do: để tiết kiệm diện tích Form) và mỗi lần click vào listbox thì ControlTipText của nó sẽ là cột A. Tuy nhiên khi em click lần thứ nhất Ok, lần thứ 2 thì phải rê chuột ra listbox rồi vào listbox thì ControlTipText mới xuất hiện. Em muốn mỗi lần click chuột trên listbox thì ControlTipText sẽ xuất hiện tương ứng được không ạ. Mong các anh chị giúp em, xin cảm ơn!
Bạn tham khảo cái này thử xem.
https://www.mrexcel.com/forum/excel-questions/401364-tooltips-listbox.html
 
Upvote 0

File đính kèm

Upvote 0
Giả sử em có 1 listbox có 2 cột dữ liệu là A, B. Em không muốn cột A hiển thị trong ListBox mà chỉ cột B thôi (lý do: để tiết kiệm diện tích Form) và mỗi lần click vào listbox thì ControlTipText của nó sẽ là cột A. Tuy nhiên khi em click lần thứ nhất Ok, lần thứ 2 thì phải rê chuột ra listbox rồi vào listbox thì ControlTipText mới xuất hiện. Em muốn mỗi lần click chuột trên listbox thì ControlTipText sẽ xuất hiện tương ứng được không ạ. Mong các anh chị giúp em, xin cảm ơn!
Nếu muốn học ControlTipText chơi cho biết thì nên làm thử.
Còn làm để dùng thì không nên làm cho tốn công, tốn sức, màu mè hoa lá hẹ chi cho nó mệt, có ngày nó lỗi tá lã âm binh thì không biết đâu mà lần.
Nên học và làm những thứ cần ứng dụng vào thực tiễn thì sẽ hay hơn.
 
Upvote 0
Em đã thử và vướng chỗ này em bác ạ.
Mã:
For i = 1 To lRowsNumber
        sTextArray(i) = "This is the text for Item # : " & _
         i & vbNewLine & Lbx.List(i - 1)
    Next i
Mong bác sửa em, xin cảm ơn ạ
Do dữ liệu trong sheet của bạn chỉ có 14 dòng thôi, còn trong code của bạn dòng chứa số 26 bạn sửa lại 14 là được.
Mã:
Const lRowsNumber As Long = 26 '==>this Const should match the
sửa lại.
Mã:
Const lRowsNumber As Long = 14 '==>this Const should match the
 
Upvote 0
Trò vô bổ này lại cần trình độ cao!

Nếu chỉ là trò "nghịch ngợm" thì nên tự bỏ công ra thực hiện tự ên;
Không nên tìm sự giúp đỡ cho í nghỉ "ngông cuồng" của mình mới là hay!
Có chăng là xin chỉ đường hướng mà thôi.
 
Upvote 0
Bạn thử làm thí nghiệm với tập tin của tác giả: trong VBE đổi phông chữ cho ListBox là "Times New Roman" và cỡ = 12 -> khởi động Form -> chọn dòng 4 trong ListBox để biết giới hạn trên và dưới của dòng 4 -> đưa trỏ chuột gần mép trên của dòng 4 thì tooltip nói là bạn đang ở Item 5 -> đưa trỏ chuột xuống gần mép dưới của dòng 4 thì tooltip nói là bạn đang ở Item 6. Trong khi đó bạn chỉ dịch chuyển trong dòng 4. :D

Nguyên nhân là người ta giả thiết là phông chữ của ListBox tương ứng với "Arial" và với độ lớn cụ thể, do vậy giả thiết là mỗi dòng có độ cao cụ thể. Nếu ta dùng phông chữ khác, cỡ khác thì phải thử rất nhiều để xác định FontHeight.
------------------
Em muốn mỗi lần click chuột trên listbox thì ControlTipText sẽ xuất hiện tương ứng được không ạ. Mong các anh chị giúp em, xin cảm ơn!
Tôi đã viết ở link sau - đọc cả các bài tiếp sau
http://www.giaiphapexcel.com/dienda...hỉ-chuột-vào-commandbutton.91226/#post-569595

Còn về bài cụ thể của bạn thì xem tập tin đính kèm. Theo đúng yêu cầu, tức click vào mục nào thì hiện cho mục đó.
 

File đính kèm

Upvote 0
Bạn thử làm thí nghiệm với tập tin của tác giả: trong VBE đổi phông chữ cho ListBox là "Times New Roman" và cỡ = 12 -> khởi động Form -> chọn dòng 4 trong ListBox để biết giới hạn trên và dưới của dòng 4 -> đưa trỏ chuột gần mép trên của dòng 4 thì tooltip nói là bạn đang ở Item 5 -> đưa trỏ chuột xuống gần mép dưới của dòng 4 thì tooltip nói là bạn đang ở Item 6. Trong khi đó bạn chỉ dịch chuyển trong dòng 4. :D

Nguyên nhân là người ta giả thiết là phông chữ của ListBox tương ứng với "Arial" và với độ lớn cụ thể, do vậy giả thiết là mỗi dòng có độ cao cụ thể. Nếu ta dùng phông chữ khác, cỡ khác thì phải thử rất nhiều để xác định FontHeight.
Thật tình thì tôi cũng chẳng để ý bao giờ, vã lại tôi cũng chưa bao giờ dùng tới nó. Tôi chỉ thấy bạn @ThaiDieuAnh cần thì tôi chỉ cho bạn ấy nghiên cứu thôi. Bản thân tôi thì thua rồi, dùng API một mâm vậy là tôi bó tay, chưa bao giờ nghiên cứu tới nó, tôi chỉ sử dụng một vài hàm API từ sự trợ giúp của các thành viên thôi (Có khi dùng tới nó mà chẳng hiểu gì về nó nửa).
 
Upvote 0
Thật tình thì tôi cũng chẳng để ý bao giờ, vã lại tôi cũng chưa bao giờ dùng tới nó. Tôi chỉ thấy bạn @ThaiDieuAnh cần thì tôi chỉ cho bạn ấy nghiên cứu thôi. Bản thân tôi thì thua rồi, dùng API một mâm vậy là tôi bó tay, chưa bao giờ nghiên cứu tới nó, tôi chỉ sử dụng một vài hàm API từ sự trợ giúp của các thành viên thôi (Có khi dùng tới nó mà chẳng hiểu gì về nó nửa).
Thì tôi cũng chỉ muốn lưu ý những người đang và sẽ định nghiên cứu về một khía cạnh. Ai chấp nhận được thì chấp nhận, nhưng phải ý thức được nó. Để khỏi bị bất ngờ.

Chỉ thế thôi chứ code cũng đâu phải của bạn để mà chê bai gì bạn.
 
Upvote 0
Bạn thử làm thí nghiệm với tập tin của tác giả: trong VBE đổi phông chữ cho ListBox là "Times New Roman" và cỡ = 12 -> khởi động Form -> chọn dòng 4 trong ListBox để biết giới hạn trên và dưới của dòng 4 -> đưa trỏ chuột gần mép trên của dòng 4 thì tooltip nói là bạn đang ở Item 5 -> đưa trỏ chuột xuống gần mép dưới của dòng 4 thì tooltip nói là bạn đang ở Item 6. Trong khi đó bạn chỉ dịch chuyển trong dòng 4. :D

Nguyên nhân là người ta giả thiết là phông chữ của ListBox tương ứng với "Arial" và với độ lớn cụ thể, do vậy giả thiết là mỗi dòng có độ cao cụ thể. Nếu ta dùng phông chữ khác, cỡ khác thì phải thử rất nhiều để xác định FontHeight.
------------------

Tôi đã viết ở link sau - đọc cả các bài tiếp sau
http://www.giaiphapexcel.com/diendan/threads/hỏi-hiển-thị-thông-tin-khi-chỉ-chuột-vào-commandbutton.91226/#post-569595

Còn về bài cụ thể của bạn thì xem tập tin đính kèm. Theo đúng yêu cầu, tức click vào mục nào thì hiện cho mục đó.
Em xin hỏi thêm các anh chị 2 vấn đề trong file anh batman1 đính kèm:
1. Em muốn dữ liệu trong ControlTipText là cột B chứ không phải là cột A thì sửa thế nào ạ?
2. Có thể áp dụng được đối với ComboBox không, nếu được thì sửa thế nào ạ?
Em xin chân thành cảm ơn!
 
Upvote 0
Bạn thử làm thí nghiệm với tập tin của tác giả: trong VBE đổi phông chữ cho ListBox là "Times New Roman" và cỡ = 12 -> khởi động Form -> chọn dòng 4 trong ListBox để biết giới hạn trên và dưới của dòng 4 -> đưa trỏ chuột gần mép trên của dòng 4 thì tooltip nói là bạn đang ở Item 5 -> đưa trỏ chuột xuống gần mép dưới của dòng 4 thì tooltip nói là bạn đang ở Item 6. Trong khi đó bạn chỉ dịch chuyển trong dòng 4. :D

Nguyên nhân là người ta giả thiết là phông chữ của ListBox tương ứng với "Arial" và với độ lớn cụ thể, do vậy giả thiết là mỗi dòng có độ cao cụ thể. Nếu ta dùng phông chữ khác, cỡ khác thì phải thử rất nhiều để xác định FontHeight.
------------------

Tôi đã viết ở link sau - đọc cả các bài tiếp sau
http://www.giaiphapexcel.com/diendan/threads/hỏi-hiển-thị-thông-tin-khi-chỉ-chuột-vào-commandbutton.91226/#post-569595

Còn về bài cụ thể của bạn thì xem tập tin đính kèm. Theo đúng yêu cầu, tức click vào mục nào thì hiện cho mục đó.
File trong bài đính kèm này trước giờ em dùng rất tốt trên office 32, giờ em chuyển sang office 64 thì nó báo lỗi, chắc tại mấy hàm API này:
Mã:
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (ByRef iccex As tagInitCommonControlsEx) As Long
Private Declare Function SendMessage Lib "User32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Declare Function CreateWindowEx Lib "User32.dll" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, _
   ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
    ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, ByRef lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "User32.dll" (ByVal hWnd As Long) As Long

Private Declare Function GetClientRect Lib "User32.dll" (ByVal hWnd As Long, ByRef lpRect As RECT) As Long
Private Declare Function GetFocus Lib "User32.dll" () As Long
Mong các anh chị giúp em chuyển sang để có thể chạy được trên cả 2 phiên bản, em xin cảm ơn (File trong bài trích dẫn luôn ạ)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom