• Cửa sổ msgbox bị mất thuộc tính modal
  • Cửa sổ msgbox bị mất thuộc tính modal

    yamakashi2003 > 26-08-20, 07:46 PM

    Em chào các bác ạ,
    Thông thường nếu em muốn tạo dòng tin nhắn trên form thì dùng lệnh msgbox
    ví dụ: msgbox "ban muon thoat"
    thì nó sẽ hiện ra cửa sổ msgbox và không cho chọn vào đối tượng khác (như kiểu thuộc tính popup hay modal ấy ạ) cho đến khi mình tắt cửa sổ msgbox.
    Nhưng không hiểu do em chọn nhầm vào thuộc tính nào trên form mà khi hiện hộp thoại msgbox lên vẫn kích được vào form và các đối tượng khác,
    nên xảy ra việc quên không tắt msgbox và hiện thêm nhiều cái khác làm treo máy
    Nhờ bác nào biết chỉ giúp em bật lại thuộc tính popup/ modal của msgbox với ạ
    Em xin cảm ơn
    ============================
    Em đã tìm ra nguyên nhân rồi ạ
    Đối với thông báo mà dùng hàm msgbox thì nó sẽ không cho chọn đối tượng khác, phải tắt thông báo đi mới được
    Còn đối với thông báo mà em dùng hàm msgboxuni Dlookup ("......") thì sẽ có thể chọn đối tượng khác mà không cần tắt hộp thông báo
    nhờ Bác nào biết chỉ giúp em cách sửa hàm msgboxuni (em khai bao trong module như bên dưới) để nó có thể không cho chọn đối tượng khác mỗi khi nó hiện ra, phải tắt nó thì mới có thể chọn đối tượng khác ạ
    Em xin cảm ơn


    Option Compare Database

    #If VBA7 Then
    Public Declare PtrSafe Function MessageBoxW Lib "user32" _
    (ByVal hwnd As LongPtr, _
    ByVal lpText As LongPtr, _
    ByVal lpCaption As LongPtr, _
    ByVal wType As Long) As Long
    #Else
    Public Declare Function MessageBoxW Lib "user32" _
    (ByVal hwnd As Long, _
    ByVal lpText As Long, _
    ByVal lpCaption As Long, _
    ByVal wType As Long) As Long
    #End If

    Public Function msgBoxUni(ByVal sMsgUni As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal sTitleUni As String = vbNullString) As VbMsgBoxResult
    msgBoxUni = MessageBoxW(0, StrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
    End Function
  • RE: Cửa sổ msgbox bị mất thuộc tính modal

    yamakashi2003 > 26-08-20, 10:56 PM

    (26-08-20, 07:46 PM)yamakashi2003 Đã viết: Em chào các bác ạ,
    Thông thường nếu em muốn tạo dòng tin nhắn trên form thì dùng lệnh msgbox
    ví dụ: msgbox "ban muon thoat"
    thì nó sẽ hiện ra cửa sổ msgbox và không cho chọn vào đối tượng khác (như kiểu thuộc tính popup hay modal ấy ạ) cho đến khi mình tắt cửa sổ msgbox.
    Nhưng không hiểu do em chọn nhầm vào thuộc tính nào trên form mà khi hiện hộp thoại msgbox lên vẫn kích được vào form và các đối tượng khác,
    nên xảy ra việc quên không tắt msgbox và hiện thêm nhiều cái khác làm treo máy
    Nhờ bác nào biết chỉ giúp em bật lại thuộc tính popup/ modal của msgbox với ạ
    Em xin cảm ơn
    ============================
    Em đã tìm ra nguyên nhân rồi ạ
    Đối với thông báo mà dùng hàm msgbox thì nó sẽ không cho chọn đối tượng khác, phải tắt thông báo đi mới được
    Còn đối với thông báo mà em dùng hàm  msgboxuni Dlookup ("......")  thì sẽ có thể chọn đối tượng khác mà không cần tắt hộp thông báo
    nhờ Bác nào biết chỉ giúp em cách sửa hàm msgboxuni (em khai bao trong module như bên dưới) để nó có thể không cho chọn đối tượng khác mỗi khi nó hiện ra, phải tắt nó thì mới có thể chọn đối tượng khác ạ
    Em xin cảm ơn


    Option Compare Database

    #If VBA7 Then
        Public Declare PtrSafe Function MessageBoxW Lib "user32" _
                                        (ByVal hwnd As LongPtr, _
                                        ByVal lpText As LongPtr, _
                                        ByVal lpCaption As LongPtr, _
                                        ByVal wType As Long) As Long
    #Else
        Public Declare Function MessageBoxW Lib "user32" _
                                (ByVal hwnd As Long, _
                                ByVal lpText As Long, _
                                ByVal lpCaption As Long, _
                                ByVal wType As Long) As Long
    #End If

    Public Function msgBoxUni(ByVal sMsgUni As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal sTitleUni As String = vbNullString) As VbMsgBoxResult
        msgBoxUni = MessageBoxW(0, StrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
    End Function
    Ai giúp em với 030 030 030
  • RE: Cửa sổ msgbox bị mất thuộc tính modal

    ongke0711 > 26-08-20, 11:11 PM

    (26-08-20, 07:46 PM)yamakashi2003 Đã viết: ============================
    Em đã tìm ra nguyên nhân rồi ạ
    Đối với thông báo mà dùng hàm msgbox thì nó sẽ không cho chọn đối tượng khác, phải tắt thông báo đi mới được
    Còn đối với thông báo mà em dùng hàm  msgboxuni Dlookup ("......")  thì sẽ có thể chọn đối tượng khác mà không cần tắt hộp thông báo
    nhờ Bác nào biết chỉ giúp em cách sửa hàm msgboxuni (em khai bao trong module như bên dưới) để nó có thể không cho chọn đối tượng khác mỗi khi nó hiện ra, phải tắt nó thì mới có thể chọn đối tượng khác ạ

    Hàm này lúc trước tôi sửa lại nhưng quên để ý vụ Windows.
    Thêm cái hàm API GetActiveWindows vô là xong.

    Mã PHP:
    Option Compare Database

    #If VBA7 Then
       Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr 
       Private Declare PtrSafe 
    Function MessageBoxW Lib "user32" _
                                        
    (ByVal hwnd As LongPtr_
                                        ByVal lpText 
    As LongPtr_
                                        ByVal lpCaption 
    As LongPtr_
                                        ByVal wType 
    As Long) As Long
    #Else
       Private Declare Function GetActiveWindow Lib "user32" () As Long    
       Private Declare 
    Function MessageBoxW Lib "user32" _
                                
    (ByVal hwnd As Long_
                                ByVal lpText 
    As Long_
                                ByVal lpCaption 
    As Long_
                                ByVal wType 
    As Long) As Long
    #End If

    Public Function msgBoxUni(ByVal sMsgUni As StringOptional ByVal Buttons As VbMsgBoxStyle vbOKOnlyOptional ByVal sTitleUni As String vbNullString) As VbMsgBoxResult
        msgBoxUni 
    MessageBoxW(GetActiveWindowStrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
    End Function 
  • RE: Cửa sổ msgbox bị mất thuộc tính modal

    yamakashi2003 > 27-08-20, 12:08 AM

    (26-08-20, 11:11 PM)ongke0711 Đã viết:
    (26-08-20, 07:46 PM)yamakashi2003 Đã viết: ============================
    Em đã tìm ra nguyên nhân rồi ạ
    Đối với thông báo mà dùng hàm msgbox thì nó sẽ không cho chọn đối tượng khác, phải tắt thông báo đi mới được
    Còn đối với thông báo mà em dùng hàm  msgboxuni Dlookup ("......")  thì sẽ có thể chọn đối tượng khác mà không cần tắt hộp thông báo
    nhờ Bác nào biết chỉ giúp em cách sửa hàm msgboxuni (em khai bao trong module như bên dưới) để nó có thể không cho chọn đối tượng khác mỗi khi nó hiện ra, phải tắt nó thì mới có thể chọn đối tượng khác ạ

    Hàm này lúc trước tôi sửa lại nhưng quên để ý vụ Windows.
    Thêm cái hàm API GetActiveWindows vô là xong.
    Em cám ơn bác ạ