Xin chào mọi người trên 4r. Em có làm 1 form và khi di chuột vào botton trên form sẽ hiện thông tin ( Kiểu như comment trên cell vậy), Hiện tại em dang dùng Controltiptext nhưng có vấn đề là kiểu hiển thị này chỉ hiển thị trên 1 dòng, nếu thông tin dai thì sẽ rất khó xem, Mọi người chỉ em cách để hiển thị dưới dạng hình vuuông như comment trên cell được không ah
Private Sub MyShapeEvents_ShapeExit(Sh As Shape)
Select Case Sh.Name
Case "Rectangle 1"
Sh.Fill.ForeColor.SchemeColor = 40
Sh.TextFrame.Characters.Text = "This is a shape"
Sh.Line.Weight = 6#
Sh.Line.ForeColor.SchemeColor = 40
End Select
End Sub
Nếu File bài #56 của bạn nmhung49 mở trên máy của bạn không bị lỗi thì lỗi bạn nêu tại bài #63 thì tôi không rõ nguyên nhân bởi dòng Code lỗi đó đều lấy từ Class bài #56
dhn46 cũng chỉ "mò" thôi chứ có hiểu API đâu.
Đọc Code bài bác Siwtom nhận ra rằng sub CreateTipsWindow để tạo Tooltip dựa trên hWnd của đối tượng sau đó truyền tham số vào ti.hwnd
Việc lấy hWnd của đối tượng được thông qua hàm WindowFromPoint dựa trên vị trí con chuột khi move trên đối tượng trong khi Code bài #56 bắt được sự kiện Move chuột qua đối tượng trên Form => Chắp vá code theo nguyên tắc:
- Bước 1: Lấy hWnd của đối tượng để truyền vào sub CreateTipsWindow như vậy cần khai báo 2 hàm
WindowFromPoint và GetCursorPos. Edit sub CreateTipsWindow của bác Siwtom 1 chút để phù hợp với đối tượng trên Sheet
- Bước 2: Gọi sub CreateTipsWindow khi xảy ra sự kiện move chuột qua Object => chính là sự kiện MyShapeEvents_ShapeEnter
- Bước 3 hủy Tooltip khi Move chuột ra khỏi Object => sử dụng DestroyToolTip của bác Siwtom
Nói tóm lại: Code bài #61 dựa trên yếu tố "mò" là chủ yếu chứ dhn46 chưa có hiểu ^^. Thôi bạn đợi các cao thủ khác trả lời nhé.
Nếu File bài #56 của bạn nmhung49mở trên máy của bạn không bị lỗi thì lỗi bạn nêu tại bài #63 thì tôi không rõ nguyên nhân bởi dòng Code lỗi đó đều lấy từ Class bài #56
Nếu ta cần bao nhiêu tool thì phải thêm vào bấy nhiêu tool (SendMessage ToolTipsHandle, TTM_ADDTOOLW, 0, ti). Trong bài #45 cứ mỗi control trên Form thì ta thêm 1 tool.
1. Kỹ thuật trong bài #45
Ta thiết lập cho mỗi tool cần thêm vào:
Sau khi đã thêm các tool thì control tooltip sẽ chịu trách nhiệm theo dõi vị trí của trỏ chuột. Nếu trỏ chuột ở trong cửa sổ có handle đỏ đỏ và đồng thời đi vào vùng nào đó đã được định nghĩa thì control tooltip sẽ hiển thị tool được gán cho vùng đó. Khi control tooltip phát hiện trỏ chuột sau đó đi ra khỏi vùng thì nó sẽ ẩn tool trước đó được hiển thị do trỏ chuột đi vào vùng.
Nói ngắn gọn thì ta định nghĩa các vùng cần hiển thị tooltip còn việc theo dõi trỏ chuột đi vào vùng nào, ra khỏi vùng nào để hiển thị hoặc ẩn tip thì do control tooltip đảm nhiệm.
2. Kỹ thuật trong bài #54
Trong kỹ thuật này thì ta không định nghĩa vùng nào cả. Dĩ nhiên trong trường hợp này thì control tooltip không theo dõi trỏ chuột. Thậm chí nếu muốn thì nó cũng không biết phải theo dõi vùng nào. Trong trường hợp này tự ta phải hiển thị và ẩn tooltip. Nhưng cũng do vậy mà ta có nhiều lựa chọn hơn: hiển thị bất cứ khi nào ta muốn, bất cứ tại đâu trên màn hình, không nhất thiết phải ở vị trí trỏ chuột.
Trong tập tin đính kèm tôi dùng kỹ thuật ở bài #54 nhưng code cần thiết tôi để riêng trong 1 module.
Khi mở tập tin thì nhấn nút "Create tooltip". Sau đó nhấn nút "Show tip" liên tục để thấy là cứ mỗi lần nhấn thì tooltip hiển thị ở một vị trí ngẫu nhiên trên màn hình. Khi nào mỏi tay thì nhấn "Destroy tooltip" để dọn đồ chơi.
--------------
Trong trường hợp của bạn thì
0. Thêm module1 có trong tập tin đính kèm.
1. Tạo control tooltip 1 lần, vd. khi mở tập tin.
Mã:
CreateToolTip 1, tiêu đề
2. Hủy control 1 lần, vd khi đóng tập tin
Mã:
DestroyToolTip
3. Trong sự kiện Enter (thay cho nhấn nút "Show tip")
Mã:
ShowTip text, x, y, TRUE
Bạn sẽ hiển thị tại vị trí trỏ chuột nên sẽ dùng hàm GetCursorPos để đọc tọa độ x, y
4. Trong sự kiện Exit
Mã:
ShowTip text, x, y, FALSE
text, x, y tùy ý vì không dùng tới. Vd. gọi ShowTip "", 0, 0, FALSE
--------------
Về tiêu đề của tooltip thì nếu tiêu đề = "" thì tip hiển thị không có tiêu đề. Icon dù có nhập thì cũng chỉ hiển thị khi có tiêu đề.
Nếu File bài #56 của bạn nmhung49mở trên máy của bạn không bị lỗi thì lỗi bạn nêu tại bài #63 thì tôi không rõ nguyên nhân bởi dòng Code lỗi đó đều lấy từ Class bài #56
dhn46 cũng chỉ "mò" thôi chứ có hiểu API đâu.
Đọc Code bài bác Siwtom nhận ra rằng sub CreateTipsWindow để tạo Tooltip dựa trên hWnd của đối tượng sau đó truyền tham số vào ti.hwnd
Việc lấy hWnd của đối tượng được thông qua hàm WindowFromPoint dựa trên vị trí con chuột khi move trên đối tượng trong khi Code bài #56 bắt được sự kiện Move chuột qua đối tượng trên Form => Chắp vá code theo nguyên tắc:
- Bước 1: Lấy hWnd của đối tượng để truyền vào sub CreateTipsWindow như vậy cần khai báo 2 hàm
WindowFromPoint và GetCursorPos. Edit sub CreateTipsWindow của bác Siwtom 1 chút để phù hợp với đối tượng trên Sheet
- Bước 2: Gọi sub CreateTipsWindow khi xảy ra sự kiện move chuột qua Object => chính là sự kiện MyShapeEvents_ShapeEnter
- Bước 3 hủy Tooltip khi Move chuột ra khỏi Object => sử dụng DestroyToolTip của bác Siwtom
Nói tóm lại: Code bài #61 dựa trên yếu tố "mò" là chủ yếu chứ dhn46 chưa có hiểu ^^. Thôi bạn đợi các cao thủ khác trả lời nhé.
Dạ đúng rồi bác Siwtom,dhn46 mới chỉ biết biến đổi bài #45 chút xíu để vooc API một chút chứ chưa có tìm hiểu. Cái này chắc còn phải tìm hiểu dài dài ^^ bác nhỉ? Qua những bài viết trên diễn đàn và đặc biệt là những bài của bác dhn46 đã biết cách biến đổi một số Code phục vụ công việc của mình, hy vọng là tương lai sẽ biết biến đổi nhiều hơn nữa.