anhtuan1066
Thành viên gạo cội
- Tham gia
- 10/3/07
- Bài viết
- 5,802
- Được thích
- 6,911
Như có lần anh SA_DQ đã nói: "Chúng ta ăn chắc mặc bền trước rồi hãy tiến tới ăn ngon mặc đẹp"
Từ file Tra cứu chéo - hổ trợ nhập liệu tôi cải tiến nó thành 1 Form và sau khi hoàn tất, tôi bắt đầu trang trí, thêm 1 vài tính năng vào form cho thêm phần sống động
Hãy mở file lên, Double click vào 1 trong các cell trong vùng B20:C30 để mở form và khám phá
-------------------------
Những tính năng hiện có trong form:
- Cho phép Sort ListBox khi ta nhấp vào tiêu đề (hổ trợ tìm kiếm)
- Nếu ta gõ 1 vài ký tự vào TextBox thì Listbox sẽ hiển thị kết quả tìm dựa vào từ khóa vừa gõ (như chức năng Find của Excel)
- Một vài tính năng khác nữa
-------------------------
Các phần trang trí thêm vào:
- Form đã được làm mất nút Close form (dấu X)
- Vì lý do gì đó mà form che khuất cửa sổ bảng tính thì ta có thêm chức năng làm trong suốt form để có thể nhìn thấy những gì bên dưới
Để cho các bạn đở rối vì 1 mớ bòng bong, tôi làm thêm 2 file riêng: 1 cái đã được ẩn nút Close và 1 cái có chức năng làm trong suốt Form
Code cực đơn giản nhờ sự hổ trợ của các hàm API
1> Ẩn nút Close Form
Chú ý: Nếu các bạn thay &H84C00000 thành &HFF0000 thì sẽ làm xuất hiện cả 3 Button: Minimize, Maximize và Close... và đương nhiên lúc này có thể Resize được Form ngay cả khi nó đang hoạt động
Các bạn có thể dùng dòng lệnh này:
để đọc thông tin về Style chuẩn của UserForm. Từ đó có thể thí nghiệm và chỉnh sửa theo ý...
Lệnh này cần thêm hàm GetWindowLong:
2> Làm trong suốt Form
Với SpinButton đã được cài trước trong Properties:
- Max = 160
- Min = 0
- SmallChange = 10
-------------------------
Tôi đã gộp 2 code này vào code chính của file mc_request_03. Các bạn hãy tham khảo nhé
Dù sao thì tác dụng của Form vẫn là hổ trợ ta nhập liệu nhanh hơn, các phần trang trí thêm vào chỉ làm cho ứng dụng thêm hấp dẩn... Các bạn không nên vì thế mà "đua đòi" rồi quên đi mục đích chính
Từ file Tra cứu chéo - hổ trợ nhập liệu tôi cải tiến nó thành 1 Form và sau khi hoàn tất, tôi bắt đầu trang trí, thêm 1 vài tính năng vào form cho thêm phần sống động
Hãy mở file lên, Double click vào 1 trong các cell trong vùng B20:C30 để mở form và khám phá
-------------------------
Những tính năng hiện có trong form:
- Cho phép Sort ListBox khi ta nhấp vào tiêu đề (hổ trợ tìm kiếm)
- Nếu ta gõ 1 vài ký tự vào TextBox thì Listbox sẽ hiển thị kết quả tìm dựa vào từ khóa vừa gõ (như chức năng Find của Excel)
- Một vài tính năng khác nữa
-------------------------
Các phần trang trí thêm vào:
- Form đã được làm mất nút Close form (dấu X)
- Vì lý do gì đó mà form che khuất cửa sổ bảng tính thì ta có thêm chức năng làm trong suốt form để có thể nhìn thấy những gì bên dưới
Để cho các bạn đở rối vì 1 mớ bòng bong, tôi làm thêm 2 file riêng: 1 cái đã được ẩn nút Close và 1 cái có chức năng làm trong suốt Form
Code cực đơn giản nhờ sự hổ trợ của các hàm API
1> Ẩn nút Close Form
PHP:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
PHP:
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", Me.Caption)
SetWindowLong hWnd, -16, &H84C00000
End Sub
Các bạn có thể dùng dòng lệnh này:
PHP:
MsgBox Hex(GetWindowLong(hwnd, -16))
Lệnh này cần thêm hàm GetWindowLong:
PHP:
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
2> Làm trong suốt Form
PHP:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
PHP:
Private Sub SpinButton1_Change()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", Me.Caption)
SetWindowLong hWnd, -20, H80000
SetLayeredWindowAttributes hWnd, 0, 255 - SpinButton1.Value, 2
Label1.Caption = SpinButton1.Value / 10
End Sub
- Max = 160
- Min = 0
- SmallChange = 10
-------------------------
Tôi đã gộp 2 code này vào code chính của file mc_request_03. Các bạn hãy tham khảo nhé
Dù sao thì tác dụng của Form vẫn là hổ trợ ta nhập liệu nhanh hơn, các phần trang trí thêm vào chỉ làm cho ứng dụng thêm hấp dẩn... Các bạn không nên vì thế mà "đua đòi" rồi quên đi mục đích chính