_MsgBoxEx.au3

  • Auf die Idee von Commander habe ich die _MsgBox UDF von ihm noch etwas ausgeweitet. Mit _MsgBoxEx lässt sich die Anzahl der Buttons und die Beschriftung von ihnen verändern. Ich werde sie in den nächsten Tagen noch etwas verfeinern + ausbessern.
    Anregungen bitte hier melden was man noch verändern bzw. verbessern könnte.

    MsgBoxEx.au3 :

    Spoiler anzeigen
    [autoit]

    Global $GUI_EVENT_CLOSE = -3
    Global Const $ES_READONLY = 2048
    Global Const $WS_VSCROLL = 0x00200000
    _MsgBoxEx("Test","Dies ist ein Test Text",2,"OK|OK2")
    _MsgBoxEx("Test","Dies ist ein Test Text",3,"OK|OK2|OK3",0xFF0000)
    ; ==========================================================================================================
    ; ##
    ; Name: _MsgBoxEx ##
    ; Funktion: Eine MsgBox bei der sich Farbe, Anzahl der Buttons und Beschriftung der Buttons ändern lässt. ##
    ; Rückgabewert : Zahl des ausgewählten Buttons Bsp. 1 = 1 Button 2 = 2 Button ##
    ; $Title: Titel der MsgBox. ##
    ; $Text: Text, der MsgBox. ##
    ; $Buttons: Anzahl der Buttons, wirkt sich auf die Größe der MsgBox aus. ##
    ; $Buttons_Names = Namen der Buttons sie werden mit einem | abgetrennt ##
    ; $Color: Farbe der MsgBox ##
    ; Author : nof@ker ##
    ; ==========================================================================================================
    Func _MsgBoxEx($Title,$Text,$Buttons = 1,$Buttons_Names = "OK",$Color = 0xCCCCCC)
    Global $Value = 0
    Opt("GUIOnEventMode",1)
    Global $GUI_MSGBOX=GUICreate($Title,($Buttons*100),100)
    GUISetState()
    GUISetBkColor($Color)
    $Buttons_Splitted=StringSplit($Buttons_Names,"|")
    $PosButts=0
    Dim $Buttons_Create[$Buttons_Splitted[0]+1]
    For $i=1 to Ubound($Buttons_Splitted,1)-1
    $Buttons_Create[$i]=GUICtrlCreateButton($Buttons_Splitted[$i],$PosButts,100-25,100)
    $PosButts=$PosButts+100
    Next
    For $i=1 to Ubound($Buttons_Create,1)-1
    GUICtrlSetOnEvent($Buttons_Create[$i],"_Return")
    Next
    $Edit=GUICtrlCreateEdit($Text,0,0,($Buttons*100),70,$ES_READONLY+$WS_VSCROLL)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_Exit")
    Do
    Sleep(1000)
    Until $Value = 1
    Return $Return
    EndFunc ;==>_MsgBoxEx
    ;Name : _Exit
    ; Interne Funktion
    Func _Exit()
    Global $Value = 1
    Global $Return = 0
    GuiDelete($GUI_MSGBOX)
    SetError(@error,1)
    EndFunc ;==> _Exit
    ;Name : _Return
    ; Interne Funktion
    Func _Return()
    Global $Return = @GUI_CtrlId - 2
    Global $Value = 1
    GUIDelete($GUI_MSGBOX)
    EndFunc ;==> _Return

    [/autoit]


    Dank großartiger Hilfe :P :) muss man noch sagen habe ich es letztendlich hinbekommen :) *freu*
    Hoffe es ist nützlich und gefällt euch.

    mfg nof@ker

  • Hehe ^^

    Freud mich, das dich meine Idee angeregt hat ^^
    Ist schön geworden.

    Mal gucken, ob ich an meinem noch bissl was verändern kann,
    also Code kürzen u.s.w...

  • Idee:

    Spoiler anzeigen
    [autoit]

    Global $GUI_EVENT_CLOSE = -3
    Global Const $ES_READONLY = 2048
    Global Const $WS_VSCROLL = 0x00200000
    _MsgBoxEx("Test","Dies ist ein Test Text",2,"OK|OK2")
    _MsgBoxEx("Test","Dies ist ein Test Text",3,"OK|OK2|OK3",0xFF0000)
    ; ==========================================================================================================
    ; ##
    ; Name: _MsgBoxEx ##
    ; Funktion: Eine MsgBox bei der sich Farbe, Anzahl der Buttons und Beschriftung der Buttons ändern lässt. ##
    ; Rückgabewert : Zahl des ausgewählten Buttons Bsp. 1 = 1 Button 2 = 2 Button ##
    ; $Title: Titel der MsgBox. ##
    ; $Text: Text, der MsgBox. ##
    ; $Buttons_Names = Namen der Buttons sie werden mit einem | abgetrennt ##
    ; $Color: Farbe der MsgBox ##
    ; Author : nof@ker ##
    ; ==========================================================================================================
    Func _MsgBoxEx($Title,$Text,$Buttons_Names = "OK",$Color = 0xCCCCCC)
    Global $Value = 0
    Opt("GUIOnEventMode",1)
    $Buttons_Splitted=StringSplit($Buttons_Names,"|")
    $Buttons=$Buttons_Splitted[0]
    Global $GUI_MSGBOX=GUICreate($Title,($Buttons*100),100)
    GUISetState()
    GUISetBkColor($Color)
    $PosButts=0
    Dim $Buttons_Create[$Buttons_Splitted[0]+1]
    For $i=1 to Ubound($Buttons_Splitted,1)-1
    $Buttons_Create[$i]=GUICtrlCreateButton($Buttons_Splitted[$i],$PosButts,100-25,100)
    $PosButts=$PosButts+100
    Next
    For $i=1 to Ubound($Buttons_Create,1)-1
    GUICtrlSetOnEvent($Buttons_Create[$i],"_Return")
    Next
    $Edit=GUICtrlCreateEdit($Text,0,0,($Buttons*100),70,$ES_READONLY+$WS_VSCROLL)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_Exit")
    Do
    Sleep(1000)
    Until $Value = 1
    Return $Return
    EndFunc ;==>_MsgBoxEx
    ;Name : _Exit
    ; Interne Funktion
    Func _Exit()
    Global $Value = 1
    Global $Return = 0
    GuiDelete($GUI_MSGBOX)
    SetError(@error,1)
    EndFunc ;==> _Exit
    ;Name : _Return
    ; Interne Funktion
    Func _Return()
    Global $Return = @GUI_CtrlId - 2
    Global $Value = 1
    GUIDelete($GUI_MSGBOX)
    EndFunc ;==> _Return

    [/autoit]


    Ich hoffe, du siehst den Unterschied. ;)

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Hallo NoF@ker,

    diese Lösung gefällt mir gut, das übliche Icon vermisse ich bei dir. Dass du daran gedacht hast die $GUI_MSGBOX auch wieder zu löschen spricht auch für dich genauso wie der kompakte Programmcode, :thumbup:

    mfg (Auto)Bert

    Edit2: diese Warnung nach beenden ist unschön (39,17) :WARNING: $Return: possibly used before declaration.

    @ L3viathan2142 ich seh zwar dass du Änderungen gemacht hast, kann es aber nicht starten:
    (17,69) : ERROR: _MsgBoxEx() called by a previous line with 5 arg(s). Min = 4. First previous line calling this Func is 4.

    Spoiler anzeigen
    [autoit]

    _MsgBoxEx("Test","Dies ist ein Test Text",2,"OK|OK2")
    _MsgBoxEx("Test","Dies ist ein Test Text",3,"OK|OK2|OK3",0xFF0000)

    [/autoit]

    Hier zähl ich zwar nur bis 4 kann mir den Fehler bis jetzt noch nicht erklären
    Edit Fehler gefunden muss so aussehen

    Spoiler anzeigen
    [autoit]

    _MsgBoxEx("Test","Dies ist ein Test Text","OK|OK2",0xFF0000)
    _MsgBoxEx("Test","Dies ist ein Test Text","OK|OK2|OK3",0xFF0000)

    [/autoit]

    3 Mal editiert, zuletzt von AutoBert (28. April 2009 um 23:19)