Bài học thiết kế số 01
Bài học thiết kế số 02
Bài học thiết kế số 03
Bài học thiết kế số 04
Bài học thiết kế số 05
Bài học thiết kế số 06
Bài học thiết kế số 07
Bài học thiết kế số 08
Bài học thiết kế số 09
==============================
Một vài trường hợp chúng ta muốn UserForm trong suốt để có thể nhìn được data ở phía sau. Trong trường hợp đó, chúng ta phải xử lý thế nào?
1. Code trên Module:
2. Code trên UserForm:
-Giá trị nhỏ nhất là 0
-Giá trị lớn nhất là 255.
Bạn có thể lựa chọn giá trị bất kỳ trong khoảng từ 165 tới 200.
Code trên đã phải sử dụng các hàm API. Tạm thời chúng ta chưa cần lý giải, copy và sử dụng vào chương trình của chúng ta là được.
Link file demo:
Nguồn tham khảo:
Bạn cần đăng nhập để thấy link
Bài học thiết kế số 02
Bạn cần đăng nhập để thấy link
Bài học thiết kế số 03
Bạn cần đăng nhập để thấy link
.Bài học thiết kế số 04
Bạn cần đăng nhập để thấy link
.Bài học thiết kế số 05
Bạn cần đăng nhập để thấy link
.Bài học thiết kế số 06
Bạn cần đăng nhập để thấy link
.Bài học thiết kế số 07
Bạn cần đăng nhập để thấy link
.Bài học thiết kế số 08
Bạn cần đăng nhập để thấy link
. Bài học thiết kế số 09
Bạn cần đăng nhập để thấy link
.==============================
Một vài trường hợp chúng ta muốn UserForm trong suốt để có thể nhìn được data ở phía sau. Trong trường hợp đó, chúng ta phải xử lý thế nào?
Bạn cần đăng nhập để thấy đính kèm
1. Code trên Module:
Mã:
#If VBA7 Then
Private Declare PtrSafe Function FindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetWindowLong _
Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong _
Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function SetLayeredWindowAttributes _
Lib "user32" _
(ByVal hWnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
#Else
Private Declare Function FindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong _
Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes _
Lib "user32" _
(ByVal hWnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
#End If
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2&
Public hWnd As Long
Sub MakeTransparent(frm As Object, TransparentValue As Integer)
Dim bytOpacity As Byte
'Control the opacity setting.
bytOpacity = TransparentValue
hWnd = FindWindow("ThunderDFrame", frm.Caption)
Call SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(hWnd, 0, bytOpacity, LWA_ALPHA)
End Sub
Mã:
Private Sub UserForm_Initialize()
'Make the form transparent.
MakeTransparent Me, 200
End Sub
-Giá trị lớn nhất là 255.
Bạn có thể lựa chọn giá trị bất kỳ trong khoảng từ 165 tới 200.
Code trên đã phải sử dụng các hàm API. Tạm thời chúng ta chưa cần lý giải, copy và sử dụng vào chương trình của chúng ta là được.
Link file demo:
Bạn cần đăng nhập để thấy link
Nguồn tham khảo:
Bạn cần đăng nhập để thấy link