chỉnh code để khi double click vào caption của userfrom thì không thu nhỏ nữa (1 người xem)

Liên hệ QC

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

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
965
Được thích
175
Giới tính
Nữ
Chào mọi người.
Em xin các AC chỉnh code để khi double click vào caption của userform thì không thu nhỏ userform nữa. Vì em muốn Userform lúc nào cũng che hết màn hình.
Code trong File là em sưu tầm của Thầy Batman1 .
Mong mọi người giúp đỡ.
 

File đính kèm

Em xin lỗi, vì viết tắt.
Mong các anh, chị và Thầy giúp em.
 
Upvote 0
Mong các anh, chị và các Thầy giúp em với.
 
Upvote 0
Dùng google không ra nên bóp trán suy nghĩ "Tại sao lúc nó hiện ra là to tổ chảng thế nhỉ?". Thế là nhìn lên và may mắn thấy em nó... :clap2:
Private Sub UserForm_Resize()
ShowFormMax hwnd
End Sub​
Năng lực có hạn mà may mắn cũng khó có lần thứ 2 nên chắc chỉ dám giúp được đến đây. Mà tôi không phải thầy bà gì đâu nhé. :p
 
Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi, xin được gọi bằng Anh,.
Em lại thích "nó hiện ra là to tổ chảng" đó Anh.
Tại vì có code
Mã:
Private Sub UserForm_Activate()
    ShowFormMax hWnd
End Sub
chứ không phải
Mã:
Private Sub UserForm_Resize()
ShowFormMax hwnd
End Sub
Mong Anh giúp cho khi double click vào Form, không thu nhỏ nữa.
 
Upvote 0
Xin lỗi, xin được gọi bằng Anh,.
Em lại thích "nó hiện ra là to tổ chảng" đó Anh.
Tại vì có code
Mã:
Private Sub UserForm_Activate()
    ShowFormMax hWnd
End Sub
chứ không phải
Mã:
Private Sub UserForm_Resize()
ShowFormMax hwnd
End Sub
Mong Anh giúp cho khi double click vào Form, không thu nhỏ nữa.
File bạn có đoạn code:
Mã:
Private Sub UserForm_Resize()
   ScaleFormControls Me, OldInsideWidth, OldInsideHeight, lastScaleX, lastScaleY
End Sub
Thêm dòng nữa thành:
Mã:
Private Sub UserForm_Resize()
   ScaleFormControls Me, OldInsideWidth, OldInsideHeight, lastScaleX, lastScaleY
   ShowFormMax hwnd
End Sub
Thử xem!
 
Upvote 0
Vẫn không được Thầy ndu ơi.
 
Upvote 0
Em có thử code của thầy ndu, nhưng vẫn không được.
Mong mọi người giúp đỡ.
 
Upvote 0
Em xin các AC chỉnh code để khi double click vào caption của userform thì không thu nhỏ userform nữa. Vì em muốn Userform lúc nào cũng che hết màn hình..
Thì đừng double click vào caption nữa thôi.

Có thể nhầm và click vào Caption nhưng đã double click thì chắc 99% là chủ ý. Nếu ai chủ ý thì cứ để họ được như ý. Ai không muốn thì đừng double click nữa. Nếu nhầm thì lần sau nhớ. Cửa sổ nhỏ to không ảnh hưởng tới dữ liệu. Nhầm lần này thì lần sau nhớ.

Bạn nghĩ ra nhiều trò bởi bạn có tự làm đâu. Bạn toàn nhờ người khác cầy hộ. Nếu được thế thì tôi cũng muốn muôn mầu muôn vẻ, bật phim, bật nhạc, tươi mát cho đời nó vui.

Đây không phải vấn đề sống còn để mà quyết tâm giải quyết vì cơm áo gạo tiền.
 
Upvote 0
Code trong File là em sưu tầm của Thầy Batman1 .
Không hẳn là vậy.

Chắc chắn bạn gộp nhiều code từ nhiều tập tin.
Bởi 2 dòng sau là vô nghĩa - đọc (GET) style hiện có của cửa sổ rồi thiết lập (SET) cho nó cũng vẫn style y chang đó.
Mã:
wStyle = GetWindowLong(hWnd, GWL_STYLE)
    SetWindowLong hWnd, GWL_STYLE, wStyle
Chắc chắn là trong tập tin khác bạn thêm nút min, max cho cửa sổ nên 2 dòng sẽ là

Mã:
wStyle = GetWindowLong(hWnd, GWL_STYLE)
    SetWindowLong hWnd, GWL_STYLE, wStyle Or hichic Or Blala
Tức đọc style hiện hành rồi thêm 2 giá trị nữa rồi thiết lập style mới đó.

Rồi bạn nghĩ là khi không cần min, max thì chỉ xóa Or hichic Or Blala là được. Nhưng bạn không nghĩ tới là khi đó thì đọc, ghi style là vô dụng.

Bạn ghép nối không chuẩn mà lại nói đó là code của tôi thì người ta lại cười tôi.
-------------
Về chuyện trong chủ đề thì tôi làm cho bạn lần cuối. Muốn nhiều mầu mè thì nên tự học viết code.

Có 2 cách, bạn nên thử cả 2 rồi lựa chọn.
1. Trong Module1 sau #End If thêm
Mã:
Private Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hWnd As Long, ByVal hdc As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32.dll" (ByVal hdc As Long, ByVal nIndex As Long) As Long

Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY As Long = 90
Private Const POINTS_PER_INCH As Long = 72
Private Const HORZRES As Long = 8
Private Const VERTRES As Long = 10
Tôi chỉ khai báo thế thôi, 32 bit. Nếu bạn cần (#If VBA7 Then ... #Else ... #End If) thì tự tìm đọc và sửa lại.

Sau phần khai báo các hằng số thì thêm
Mã:
Public Sub ShowForm(form As Object)
Dim DC As Long, PixelsPerPointsX As Double, PixelsPerPointsY As Double, w As Long, h As Long
    DC = GetDC(0)
    PixelsPerPointsX = GetDeviceCaps(DC, LOGPIXELSX) / POINTS_PER_INCH
    PixelsPerPointsY = GetDeviceCaps(DC, LOGPIXELSY) / POINTS_PER_INCH
    w = GetDeviceCaps(DC, HORZRES)
    h = GetDeviceCaps(DC, VERTRES)
    ReleaseDC 0, DC
    With form
        .Left = 0
        .Top = 0
        .Width = w / PixelsPerPointsX
        .Height = h / PixelsPerPointsY
    End With
End Sub

Code mới cho UserForm_Activate
Mã:
Private Sub UserForm_Activate()
    ShowForm Me
End Sub

2. Trong Module1 thêm
Mã:
Private Const SW_RESTORE As Long = 9

Sub ShowFormNormal(ByVal hWnd As Long)
    ShowWindow hWnd, SW_RESTORE
End Sub

Code mới cho UserForm_Activate
Mã:
Private Sub UserForm_Activate()
Dim w As Long, h As Long
    ShowFormMax hWnd
    w = Me.Width
    h = Me.Height
    ShowFormNormal hWnd
    With Me
        .Left = 0
        .Top = 0
        .Width = w
        .Height = h
    End With
End Sub
 
Upvote 0
Em thật có lỗi với Thầy batman1!
Em xin lỗi là em đã "Like"
Em cám ơn Thầy đã giúp em.
 
Upvote 0
Web KT

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

Back
Top Bottom