1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Cách để tạo ra 2 Gui (form) chạy độc lập ?

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi hoanghuy, 28/1/19.

  1. hoanghuy

    hoanghuy Thành viên
    • 8/11

    Tham gia ngày:
    1/12/18
    Bài viết:
    50
    Đã được thích:
    4
    Như tiêu đề ạ, làm sao để tạo ra một Gui, ví dụ như:
    -Gui(Gui chính) được tạo ra có 1 Button sẽ được gọi là Info, khi nhấp vào Button này thì một Gui khác và được gọi là GuiInfo( Gui phụ) và trong Gui phụ này có nút X (nút thoát í), vậy thì khi ấn vào nút đó thì nó sẽ đóng luôn cả Gui chính, vậy có cách nào để cho Gui phụ này khi ấn nút X (còn biết là $GUI_EVENT_CLOSE) thì nó chỉ đóng Gui phụ này thôi mà không gây ảnh hưởng đến Gui chính, em có thử dùng Guidelete để xóa Gui phụ nhưng nó đóng Gui phụ nhưng Những button của gui chính lại bị ảnh hưởng, cao nhân nào giúp em với.:autoit::autoit::autoit:
     
  2. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    110
    Đã được thích:
    61
    Từ file help:
    Mã (AutoIt):
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>

    Example()

    Func Example()
        ; Create a GUI.
        Local $hGUI1 = GUICreate("Example GUI1")
        ; Create a button.
        Local $idButton1 = GUICtrlCreateButton("Button1", 10, 10, 80, 22)
        ; Display the GUI
        GUISetState(@SW_SHOW, $hGUI1)

        ; Create a GUI.
        Local $hGUI2 = GUICreate("Example GUI2", 300, 300)
        ; Create a button.
        Local $idButton2 = GUICtrlCreateButton("Button2", 10, 10, 80, 22)
        ; Display the GUI
        GUISetState(@SW_HIDE, $hGUI2)

        ; Initialize a Local variable.
        Local $aMsg = 0

        While 1
            ; Assign to $aMsg the advanced GUI messages.
            $aMsg = GUIGetMsg($GUI_EVENT_ARRAY)

            ; Switch from GUIs
            Switch $aMsg[1]
                Case $hGUI1
                    ; The event comes from the GUI1

                    ; Switch from event ID
                    Switch $aMsg[0]
                        Case $GUI_EVENT_CLOSE
                            ExitLoop
                        Case $idButton1
                            GUISetState(@SW_SHOW, $hGUI2)
                    EndSwitch
                Case $hGUI2
                    ; The event comes from the GUI2

                    ; Switch from event ID
                    Switch $aMsg[0]
                        Case $GUI_EVENT_CLOSE
                            GUISetState(@SW_HIDE, $hGUI2)
                        Case $idButton2
                            GUISetState(@SW_HIDE, $hGUI2)
                    EndSwitch
            EndSwitch
        WEnd

        ; Delete the previous GUIs and all controls.
        GUIDelete($hGUI1)
    EndFunc   ;==>Example
     
    Cái này là hiện/ẩn Gui con, nếu muốn dùng GUIDelete() Gui con thì viết thêm 1 hàm tạo Gui con.


    Còn cái này là ở chế độ GUIOnEventMode
    Mã (AutoIt):
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>

    Opt("GUIOnEventMode", 1)

    $hGUI1 = GUICreate("Example GUI1")
    GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close")

    $idButton1 = GUICtrlCreateButton("Button1", 10, 10, 80, 22)
    GUICtrlSetOnEvent(-1,"Working_Child")

    GUISetState(@SW_SHOW, $hGUI1)

    $hGUI2 = GUICreate("Example GUI2", 300, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close")

    $idButton2 = GUICtrlCreateButton("Button2", 10, 10, 80, 22)
    GUICtrlSetOnEvent(-1,"Working_Child")

    GUISetState(@SW_HIDE, $hGUI2)

    While 1
        Sleep(100)
    WEnd

    Func Working_Child()
        Switch @GUI_CtrlId
            Case $idButton1
                GUISetState(@SW_SHOW, $hGUI2)
            Case $idButton2
                GUISetState(@SW_HIDE, $hGUI2)
        EndSwitch
    EndFunc

    Func On_Close()
        Switch @GUI_WinHandle
            Case $hGUI1
                Exit
            Case $hGUI2
                GUISetState(@SW_HIDE, $hGUI2)
        EndSwitch
    EndFunc   ;==>On_Close
     
    Chỉnh sửa cuối: 29/1/19
  3. hoanghuy

    hoanghuy Thành viên
    • 8/11

    Tham gia ngày:
    1/12/18
    Bài viết:
    50
    Đã được thích:
    4
    cái opt để làm gì vậy bác ?
     
  4. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    110
    Đã được thích:
    61
    AutoItSetOption() hoặc Opt() tạm hiểu là hàm khai báo/thiết lập cách thức hoạt động đặc biệt cho hàm và các tham số trong AutoIt.

    Opt("GUIOnEventMode",1) bật chế độ GUI On Event để "lắng nghe" hoặc bắt sự kiện trực tiếp từ các ControlID thay vì bắt sự kiện từ toàn bộ script thông qua GUIGetMsg() (mặc định).

    Xem thêm https://www.autoitscript.com/autoit3/docs/functions/AutoItSetOption.htm
    Để biết các tùy chọn khác.
     
    hoanghuy thích bài này.
  5. hoanghuy

    hoanghuy Thành viên
    • 8/11

    Tham gia ngày:
    1/12/18
    Bài viết:
    50
    Đã được thích:
    4
    cảm ơn bác nha ^^
     

Chia sẻ trang này

Đang tải...