Cách tạo phím thu nhỏ(minimize) cho userform? (1 người xem)

Liên hệ QC

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

haikimcuong

Thành viên hoạt động
Tham gia
6/7/10
Bài viết
169
Được thích
36
Các Thầy cho em hỏi cách tạo minimize cho 1 userform với ạ vì hiện tại em thấy Uf chỉ có mỗi nút Close thôi ạ. Xin cảm ơn các thầy.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
em đã xem nhung khi áp dung thì lỗi không thực hiện được thầy ạ

Bạn áp dụng như thế nào mà lỗi không biết nữa, nhưng thôi, cái đó tập trung nhiều thủ tục lắm, xài đỡ cái này đi, rồi từ từ bạn nghiên cứu cái file của Thầy AnhTuan1066.
 

File đính kèm

Upvote 0
Bạn áp dụng như thế nào mà lỗi không biết nữa, nhưng thôi, cái đó tập trung nhiều thủ tục lắm, xài đỡ cái này đi, rồi từ từ bạn nghiên cứu cái file của Thầy AnhTuan1066.
Em đã thử làm theo cách của anh nhưng nói thật k hiểu có phải cài đặt gì trong pro k mà sao khi sang file khác không thể làm được nó báo lỗi tùm lùm anh Nghĩa ạ. Anh xem có cách nào đơn giản không chứ cách của anh người mới biết OABC nhưng em quả thực quá khó. Mong anh chỉ dẫn tiếp Chân thành cảm ơn anh
 
Upvote 0
Em đã thử làm theo cách của anh nhưng nói thật k hiểu có phải cài đặt gì trong pro k mà sao khi sang file khác không thể làm được nó báo lỗi tùm lùm anh Nghĩa ạ. Anh xem có cách nào đơn giản không chứ cách của anh người mới biết OABC nhưng em quả thực quá khó. Mong anh chỉ dẫn tiếp Chân thành cảm ơn anh
Code bên trong chuẩn rồi mà, đâu cần can thiệp thêm gì. Còn bạn nói lỗi tùm lum thì ai biết lỗi gì mà hướng dẫn.
 
Upvote 0
Các Thầy cho em hỏi cách tạo minimize cho 1 userform với ạ vì hiện tại em thấy Uf chỉ có mỗi nút Close thôi ạ. Xin cảm ơn các thầy.

Nếu chỉ cần có mỗi nút Min (mà không cần nghiên cứu chuyên sâu) thì cứ "tọng" đống code dưới đây vào UserForm là đủ
Mã:
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 Sub UserForm_Initialize()
  Dim hWnd As Long
  hWnd = FindWindow("ThunderDFrame", Me.Caption)
  SetWindowLong hWnd, -16, &H84CA0080  '<-- Min only
 'SetWindowLong hWnd, -16, &H84CD0080  '<-- Max only
 'SetWindowLong hWnd, -16, &H84CF0080  '<-- Max and Min
End Sub
 

File đính kèm

Upvote 0
Nếu chỉ cần có mỗi nút Min (mà không cần nghiên cứu chuyên sâu) thì cứ "tọng" đống code dưới đây vào UserForm là đủ
Mã:
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 Sub UserForm_Initialize()
  Dim hWnd As Long
  hWnd = FindWindow("ThunderDFrame", Me.Caption)
  SetWindowLong hWnd, -16, &H84CA0080  '<-- Min only
 'SetWindowLong hWnd, -16, &H84CD0080  '<-- Max only
 'SetWindowLong hWnd, -16, &H84CF0080  '<-- Max and Min
End Sub
Thầy ơi em áp dụng với 1 form khác thì rất ok nhưng với form đã thêm code và các nút, textbox chức năng thì nó lại báo lỗi giống ảnh em up dưới đây
 
Upvote 0
Thầy ơi em áp dụng với 1 form khác thì rất ok nhưng với form đã thêm code và các nút, textbox chức năng thì nó lại báo lỗi giống ảnh em up dưới đây

Nhìn trong hình, thấy lỗi là do bạn đặt mấy hàm API sai chổ. Lý ra mấy hàm ấy phải cho lên đầu code
Tức 2 hàm này:
Mã:
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
BẮT BUỘC phải được đặt ở đầu code (dưới dòng Option Explicit)
 
Upvote 0
KHÔNG ỔN RỒI THẦY ƠI NÓ BỊ XUNG CODE RỒI NÊN CHẮC EM PHẢI GỬI FILE TRỰC TIẾP NHỜ THẦY THÊM VÀO HỘ THÔI Ạ, NHƯNG KHỔ NỖI FILE CỦA EM NÓ NẶNG QUÁ NHỮNG 9MB NẾU THẦY ON ym EM XIN PHÉP GỬI FILE TRỰC TIẾP CHO THẦY QUA YM Ạ
 
Upvote 0
KHÔNG ỔN RỒI THẦY ƠI NÓ BỊ XUNG CODE RỒI NÊN CHẮC EM PHẢI GỬI FILE TRỰC TIẾP NHỜ THẦY THÊM VÀO HỘ THÔI Ạ, NHƯNG KHỔ NỖI FILE CỦA EM NÓ NẶNG QUÁ NHỮNG 9MB NẾU THẦY ON ym EM XIN PHÉP GỬI FILE TRỰC TIẾP CHO THẦY QUA YM Ạ

Còn chần chừ gì mà không gửi lên đây hả trời, nén lại rồi gửi lên. Có một số hàm API có sẳn, hàm nào thuộc Public nếu trùng sẽ bị lỗi, lựa mấy em trùng xóa đi là xong có gì đâu mà lỗi với phải nữa chứ!

Thôi tốt nhất gửi file lên đi.
 
Upvote 0
KHÔNG ỔN RỒI THẦY ƠI NÓ BỊ XUNG CODE RỒI NÊN CHẮC EM PHẢI GỬI FILE TRỰC TIẾP NHỜ THẦY THÊM VÀO HỘ THÔI Ạ, NHƯNG KHỔ NỖI FILE CỦA EM NÓ NẶNG QUÁ NHỮNG 9MB NẾU THẦY ON ym EM XIN PHÉP GỬI FILE TRỰC TIẾP CHO THẦY QUA YM Ạ

Nhìn hình ở bài 8 đã biết file của bạn thuộc dạng QUÁ ỚN rồi
Nếu mấy cái vụ "màu mè" khiến cho ta rối quá ---> Ta nghỉ xài đi cho khỏe ---> Tập trung vào việc xử lý CSDL vẫn tốt hơn!
Ẹc... Ẹc...
 
Upvote 0
dạ, thầy nói phải thôi em cũng dừng tập luôn cho đỡ mệt các thầy ạ. Để học tiếp cơ bản đã 1 mình tự nghiên cứu quyển sách của thầy Hướng mà khó nhằn quá mung lung. Thầy giúp delete vụ này đi ạ
 
Upvote 0
Nếu chỉ cần có mỗi nút Min (mà không cần nghiên cứu chuyên sâu) thì cứ "tọng" đống code dưới đây vào UserForm là đủ
Mã:
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 Sub UserForm_Initialize()
  Dim hWnd As Long
  hWnd = FindWindow("ThunderDFrame", Me.Caption)
  SetWindowLong hWnd, -16, &H84CA0080  '<-- Min only
 'SetWindowLong hWnd, -16, &H84CD0080  '<-- Max only
 'SetWindowLong hWnd, -16, &H84CF0080  '<-- Max and Min
End Sub
Cảm ơn thầy,
Xin thầy chỉ cho em cách dùng những hàm API này với Win64 bit với ạ.
Em dùng thì nó bôi đỏ vào báo là phải thay thế bằng các hàm của Win64 bit ạ.
Máy em chạy Win64 bit ạ, em chân thảnh cảm ơn.
******
Em đã tìm được cách phải sửa như thế nào rồi, nên post lên đây cho bạn nào gặp phải trường hợp như em đỡ mất công tìm kiếm.
Chỉ cần thêm "PtrSafe" vào trước Function là được nhé.
Ví Dụ:
hàm này khi dùng ở Win32:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Chuyển qua Win64:
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom