Làm sao đổi màu nút lệnh khi chuột rê ngang qua? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,725
Giới tính
Nam
Tôi muốn tạo hiệu ứng cho các nút lệnh trong Form, khi rê chuột qua một nút nào đó thì màu của nút lệnh đó thay đổi, khi rê chuột qua chỗ khác thì nút lệnh đó trở lại như ban đầu.

Nhờ các cao thủ hướng dẫn giúp tôi hiệu ứng này!

Xin trân trọng cảm ơn.
 

File đính kèm

Tôi muốn tạo hiệu ứng cho các nút lệnh trong Form, khi rê chuột qua một nút nào đó thì màu của nút lệnh đó thay đổi, khi rê chuột qua chỗ khác thì nút lệnh đó trở lại như ban đầu.

Nhờ các cao thủ hướng dẫn giúp tôi hiệu ứng này!

Xin trân trọng cảm ơn.
Anh kết hợp thêm sự kiện UserForm_MouseMove khi dùng sự kiện CommandButton_MouseMove là ok.
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton1.BackColor = RGB(0, 255, 0)
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton1.BackColor = RGB(255, 0, 0)
End Sub
 
Upvote 0
Tôi muốn tạo hiệu ứng cho các nút lệnh trong Form, khi rê chuột qua một nút nào đó thì màu của nút lệnh đó thay đổi, khi rê chuột qua chỗ khác thì nút lệnh đó trở lại như ban đầu.

Nhờ các cao thủ hướng dẫn giúp tôi hiệu ứng này!

Xin trân trọng cảm ơn.
Đương nhiên ta sẽ dùng thêm sự kiện UserForm_MouseMove để thay đổi màu. Có điều nếu dùng theo cách bình thường thì bạn sẽ thấy khi ra chuột vào UserForm hoặc CommandButton, màu sắc bị giật giật rất khó chịu
Tôi có cách này:
PHP:
Private Chk As Boolean
Private Sub UserForm_Initialize()
  Chk = True
End Sub
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk Then
    With CommandButton1
      .BackColor = 255: .ForeColor = 65535
    End With
    Chk = False
  End If
End Sub
PHP:
Private Sub CommandButton2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk Then
    With CommandButton2
      .BackColor = 255: .ForeColor = 65535
    End With
    Chk = False
  End If
End Sub
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk = False Then
    CommandButton1.BackColor = -2147483633: CommandButton1.ForeColor = 16711680
    CommandButton2.BackColor = -2147483633: CommandButton2.ForeColor = 16711680
    Chk = True
  End If
End Sub
Thử xem, sẽ thấy sự thay đổi màu sắc qua lại rất là... mượt
 
Upvote 0
Đương nhiên ta sẽ dùng thêm sự kiện UserForm_MouseMove để thay đổi màu. Có điều nếu dùng theo cách bình thường thì bạn sẽ thấy khi ra chuột vào UserForm hoặc CommandButton, màu sắc bị giật giật rất khó chịu
Tôi có cách này:
PHP:
Private Chk As Boolean
Private Sub UserForm_Initialize()
  Chk = True
End Sub
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk Then
    With CommandButton1
      .BackColor = 255: .ForeColor = 65535
    End With
    Chk = False
  End If
End Sub
PHP:
Private Sub CommandButton2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk Then
    With CommandButton2
      .BackColor = 255: .ForeColor = 65535
    End With
    Chk = False
  End If
End Sub
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk = False Then
    CommandButton1.BackColor = -2147483633: CommandButton1.ForeColor = 16711680
    CommandButton2.BackColor = -2147483633: CommandButton2.ForeColor = 16711680
    Chk = True
  End If
End Sub
Thử xem, sẽ thấy sự thay đổi màu sắc qua lại rất là... mượt

em muốn dùng hiệu ứng này cho công trình riêng của em mà hình như khong dùng được vì khi gán lệnh vào button thì mới chỉ rê chuột qua button là nó đã thực hiện lệnh rồi dù chưa muốn.
 
Upvote 0
em muốn dùng hiệu ứng này cho công trình riêng của em mà hình như khong dùng được vì khi gán lệnh vào button thì mới chỉ rê chuột qua button là nó đã thực hiện lệnh rồi dù chưa muốn.

Bạn chọn không đúng sự kiện nên mới bị vậy, lẽ ra bạn phải đặt thủ tục của bạn vào sự kiện Click mới đúng.
 
Upvote 0

File đính kèm

Upvote 0
Mới học VBA hả đồng chí? Xem file nhé!

Nút lệnh thoát chỉ như vầy:

PHP:
Private Sub CommandButton1_Click()
      Unload Me
End Sub
s­ư huynh hiểu sai rồi/ ý em là vừa là lệnh thoát vừa làm đổi màu được nút lệnh đó khi chuột rê ngang qua kìa chứ lệnh thoát em biết mà
 
Upvote 0
s­ư huynh hiểu sai rồi/ ý em là vừa là lệnh thoát vừa làm đổi màu được nút lệnh đó khi chuột rê ngang qua kìa chứ lệnh thoát em biết mà

Bạn chọn thêm 1 sự kiện MouseMove cho Nút lệnh và cho Form như sau:

Với Nút Lệnh:
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If CommandButton1.BackColor = &H8000000F Then CommandButton1.BackColor = &H8000000D
End Sub

Với Form:
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If CommandButton1.BackColor <> &H8000000F Then CommandButton1.BackColor = &H8000000F
End Sub

Bạn thử xem file nhé!
 

File đính kèm

Upvote 0
Bạn chọn thêm 1 sự kiện MouseMove cho Nút lệnh và cho Form như sau:

Với Nút Lệnh:
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If CommandButton1.BackColor = &H8000000F Then CommandButton1.BackColor = &H8000000D
End Sub

Với Form:
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If CommandButton1.BackColor <> &H8000000F Then CommandButton1.BackColor = &H8000000F
End Sub

Bạn thử xem file nhé!
rất cảm ơn sư huynh đã chỉ bảo tận tình. đệ sẽ cố gắng áp dụng vào mục đích của mình
 
Upvote 0
Bạn chọn thêm 1 sự kiện MouseMove cho Nút lệnh và cho Form như sau:

Với Nút Lệnh:
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If CommandButton1.BackColor = &H8000000F Then CommandButton1.BackColor = &H8000000D
End Sub

Với Form:
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If CommandButton1.BackColor <> &H8000000F Then CommandButton1.BackColor = &H8000000F
End Sub

Bạn thử xem file nhé!
anh Nghĩa ơi cho em hỏi thêm vấn đề này nữa
Nếu ta đặt chế độ BackStyle là 0- trong Properties của CommandButton1 thì chế độ đổi màu của Button khi chuột rê ngang qua sẽ bị vô hiệu hoá. Vậy có cách nào khắc phục được không anh. Em đang định làm Form điều khiển bảng tính giống như màn hình destop và các icon trong suốt đó anh.
Anh chỉ giúp em với nhé, em cảm ơn nhiều
 
Upvote 0
anh Nghĩa ơi cho em hỏi thêm vấn đề này nữa
Nếu ta đặt chế độ BackStyle là 0- trong Properties của CommandButton1 thì chế độ đổi màu của Button khi chuột rê ngang qua sẽ bị vô hiệu hoá. Vậy có cách nào khắc phục được không anh. Em đang định làm Form điều khiển bảng tính giống như màn hình destop và các icon trong suốt đó anh.
Anh chỉ giúp em với nhé, em cảm ơn nhiều

Bạn sử dụng thủ tục này:

[GPECODE=vb]Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If CommandButton1.BackStyle = fmBackStyleTransparent Then
CommandButton1.BackStyle = fmBackStyleOpaque
End If
End Sub
[/GPECODE]

Và thủ tục này:

[GPECODE=vb]Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If CommandButton1.BackStyle = fmBackStyleOpaque Then
CommandButton1.BackStyle = fmBackStyleTransparent
End If
End Sub
[/GPECODE]

Lưu ý, khi thiết kế nút lệnh, ta cứ chọn BackColor cho nó trước, sau đó mới cho nó trong suốt.
 

File đính kèm

Upvote 0
Không biết phải nói gì để bày tỏ lời cảm anh ơn chân thành của em đến anh.
cảm ơn anh nhiều
 
Upvote 0
Các AC có thể dùng sự kiện "MouseMove" để Zoom image trong Form đươc không ah!!!!! (giống như các trang Web). Mong các AC cho ý kiến.
 
Upvote 0
Đây là vấn đề không khả thi, sao không thấy AC nào cho ý kiến vậy????????
 
Upvote 0
Upvote 0
Bài của Thầy Tuân là rê chuột vào commandbutton, thì đổi màu. Còn Ý của em là trong Form có hình(Image), khi rê chuột vào hình thì phóng to hình đó lên(như các trang Web bán điện thoại, khi rê chuột vào điện thoại thì điện thoại được phóng to lên)như link sau (trên Web)
http://sinhvienit.net/forum/code-html-hieu-ung-anh-khi-re-chuot-vao.246734.html#post1422466
nhưng làm trong Form VBA có được không Thầy Tuân????
 
Upvote 0
Mình nghĩ là được chứ chưa thử.
 
Upvote 0
Vậy Thầy Tuân thử làm cho các Anh em học hỏi với!!!!!!!
 
Upvote 0
Vậy Thầy Tuân thử làm cho các Anh em học hỏi với!!!!!!!

Hiện tại mình đang lo một số việc dang dở nên không tạp trung code, đợi các cao thủ trên đây code trước xem vướng đâu mình tham gia dễ hơn. Nếu không ai làm mình sẽ code khi thu xếp được time.
 
Upvote 0
Xin Thầy Tuân làm dùm là phóng to ảnh tại vị trí con trỏ chuột chứ không phải là phóng to toàn bộ ảnh (như dùng Magnifier của windows vậy- kính lúp chiếu vào vùng nào của ảnh thì phóng to chổ đó thôi).
 
Upvote 0
Trong thời gian chờ a Tuân rảnh bạn xem file này có đúng ý không?
 

File đính kèm

Upvote 0
Mình cũng nghĩ ý tưởng là làm thế nhưng chắc phải xem lại cách giải quyết khác vì tốc độ chạy chậm, không mịn.
Em thấy nếu sử dụng sự kiện click chuột vào Image1 mới hiện frame và move đến đâu ảnh chuyển tới đó thì có vẻ mịn hơn. Song đó cũng là 1 phương pháp dùng Frame kết hợp với Image

Không biết còn phương pháp nào khác nữa không anh?
 

File đính kèm

Upvote 0
Em thấy nếu sử dụng sự kiện click chuột vào Image1 mới hiện frame và move đến đâu ảnh chuyển tới đó thì có vẻ mịn hơn. Song đó cũng là 1 phương pháp dùng Frame kết hợp với Image

Không biết còn phương pháp nào khác nữa không anh?

Có thể vẫn dùng cách đó nhưng phân tích tối ưu hơn, chỉ cập nhật hình khi tọa độ chuột thay đổi thực sự thay đổi.
Có cách khác tốt hơn nhưng mất rất nhiều time để làm đó làm lập trình API.
 
Upvote 0
Em đang chờ Thầy Tuân rảnh làm bằng lập trình API.
Cám Ơn dhn46 và Thầy Tuân!!!!!
 
Upvote 0
Cái này làm như sau: hook con trỏ chuột hoặc dùng timer lấy tọa độ chuột để tính toán vùng cần zoom kết hợp lấy handle device context của toàn bộ màn hình -> vẽ vào cần xem.
 
Upvote 0
Em có sưu tầm File này trên Google, khi phóng to ảnh lên 1,5->3,0 thì ảnh bị bể hình(Chác tại do chất lượng Ảnh) Chỉ có phóng to ảnh ở cấp độ 1 thì được. Em xin đưa File lên để mọi người tham khảo(Chờ Thầy Tuân lập trình API)(Thanks Andy Pope)
 

File đính kèm

Upvote 0
Em có sưu tầm File này trên Google, khi phóng to ảnh lên 1,5->3,0 thì ảnh bị bể hình(Chác tại do chất lượng Ảnh) Chỉ có phóng to ảnh ở cấp độ 1 thì được. Em xin đưa File lên để mọi người tham khảo(Chờ Thầy Tuân lập trình API)(Thanks Andy Pope)
File này cũng giống như file bài #27 của dhn46 chứ khác gì mấy đâu bạn?
 
Upvote 0
Bạn đã gửi bài hỏi cho bác Siwtom - Tôi xin phép được nhắc tới tên bác tại topic này vì file đính kèm dưới đây là do bác viết.

Cái tâm của một con người lớn lắm.

dhn46 lại nhớ lại 1 đoạn trong bài phát biểu tổng thống Obama trong chuyến thăm Việt Nam lần này:

Kinh nghiệm của hai nước cũng là bài học cho thế giới. Trong bối cảnh thế giới đang có nhiều xung đột tưởng như bất trị, không dứt. chúng ta đã chứng minh trái tim có thể thay đổi, tương lai sẽ khác nếu ta từ chối làm tù nhân của quá khứ, hòa bình tốt đẹp hơn chiến tranh rất nhiều. Rằng tiến bộ và phẩm giá con người sẽ được phát huy tốt nhất qua hợp tác chứ không phải xung đột.

Nguồn: http://vietnamnet.vn/vn/thoi-su/chi...at-bieu-cua-ong-obama-ve-quan-he-my-viet.html


Xin chúc mọi người sức khỏe, thành công!
 

File đính kèm

Upvote 0
Cám ơn bạn dhn46 đã chia sẻ file của Thầy Siwtom, đúng như bạn nói"Cái tâm của một con người lớn lắm.", Cám ơn Thầy Siwtom, Thầy đã giúp em rất nhiều File,( em chẳng biết gì về VBA), nhưng em học được nhiều ở Thầy Siwtom về "Cái tâm". Thầy ở nước ngoài và cũng bận rộn công việc nhưng Thầy vẫn sẵn sàng giúp những bạn bè, những thành viên trong DD như em.
 
Lần chỉnh sửa cuối:
Upvote 0
Đương nhiên ta sẽ dùng thêm sự kiện UserForm_MouseMove để thay đổi màu. Có điều nếu dùng theo cách bình thường thì bạn sẽ thấy khi ra chuột vào UserForm hoặc CommandButton, màu sắc bị giật giật rất khó chịu
Tôi có cách này:
PHP:
Private Chk As Boolean
Private Sub UserForm_Initialize()
  Chk = True
End Sub
PHP:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk Then
    With CommandButton1
      .BackColor = 255: .ForeColor = 65535
    End With
    Chk = False
  End If
End Sub
PHP:
Private Sub CommandButton2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk Then
    With CommandButton2
      .BackColor = 255: .ForeColor = 65535
    End With
    Chk = False
  End If
End Sub
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Chk = False Then
    CommandButton1.BackColor = -2147483633: CommandButton1.ForeColor = 16711680
    CommandButton2.BackColor = -2147483633: CommandButton2.ForeColor = 16711680
    Chk = True
  End If
End Sub
Thử xem, sẽ thấy sự thay đổi màu sắc qua lại rất là... mượt
Các anh chị có thể giúp em tạo Class Module để tất cả các CommandButton trong file với tên bất kỳ có thể thực hiện được lệnh này không ạ (Ví dụ file em có nhiều Form và nhiều Button)
 
Upvote 0
Làm ơn giúp để khi bấm vào các nút (hyperlink đến các sheet) thì nó sẽ chuyển thành màu vàng, nghĩa là nếu đang đứng ở sheet nào thì nút đó trở thành màu vàng. Xin cảm ơn cả nhà
 

File đính kèm

Upvote 0
Làm ơn giúp để khi bấm vào các nút (hyperlink đến các sheet) thì nó sẽ chuyển thành màu vàng, nghĩa là nếu đang đứng ở sheet nào thì nút đó trở thành màu vàng. Xin cảm ơn cả nhà

Sub Macro1()
' nut can To vang
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
.Solid
End With

' va cac nut Con lai cho mau Den....

End Sub
 
Upvote 0

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

Back
Top Bottom