Button legt sich über TAB-Sheet

  • Guten Abend :)...

    Habe ein kleines Problemchen...
    Undzwar habe ich eine GUI mit mehreren TAB-Sheets, auf TAB-Sheet 1 ist ein Button... Ich habe wegen des Hintergrundes und der TAB-Sheets fast alle GUI-Teile mit GuiCtrlSetState(-1, $GUI_ONTOP) präpariert...

    Nun legt sich beim LAUFEN dieses Threads immer wieder der Button über ALLE TAB-Sheets...

    Weiss jemand warum? (Script kann ich nicht posten, weil ich da sau viele spez. Includes und auch Bilder und sowas drin habe...)


    2. Frage -> Wie kann ich ein Edit-Feld so konfigurieren, dass immer der "unterste" Eintrag auch zu sehen ist?... Das Edit-Feld soll schreib- aber nicht scrollgeschützt sein :)...


    [autoit]

    $LogFile = GUICtrlCreateEdit("**GUI wurde aktiviert...**", 84, 71, 257, 153, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL,$WS_BORDER))

    [/autoit]

    Das klappt nicht... Schreibgeschützt, aber kann nicht scrollen und sehe nie die neuen Einträge...


    LG


    *edit* 2. dachte ich an

    [autoit]

    _GUICtrlEdit_Scroll($LogFile, 1)

    [/autoit]


    geht aber nicht -.-
    *edit* Okey, Problem 2... -> In der UDF steht, man kann keine Zahlen als Parameter nehmen, da gibts nur _GUICtrlEdit_Scroll($hEdit, $SB_LINEDOWN) das z.B....^^

    5 Mal editiert, zuletzt von Acanis (20. Januar 2010 um 16:02)

    • Offizieller Beitrag

    Ohne Source kann man zu deinem 1. Problem nicht viel sagen.
    Zu2: Probier mal _GUICtrlEdit_Scroll($LogFile,$SB_SCROLLCARET)

  • Der Parameter war wirklich falsch, danke :D...

    Aber man kann per Hand immer noch nicht scrollen, wegen dem ReadOnly, oder?...
    Das ist doof... Man soll es nicht manipulieren, aber scrollen können, ist das möglich?!^^


    LG

    • Offizieller Beitrag

    Also bei mit funktioniert das Scrollen auch bei $ES_READONLY. Warum auch nicht? Die Scrollfunktion hat ja nichts damit zu tun. Aber wie gesagt, ohne Code ist das ein Ratespiel.

  • Hmmmm... -.- Sorry dafür... :/


    Also Problem 1 kann ich "näher" definieren... Muss an dem ON_TOP liegen!

    Ich muss aber diesen parameter für das Hintergrundbild nehmen, weil das sonst nicht über dem TAB liegt...

    Und dann muss ich das auch für alle Button und so anwenden... Und die Button scheinen das nicht zu verkraften... Hat zufällig damit schon mal jemand Erfahrungen gesammelt?


    Habe nun Problem 2 mit

    [autoit]

    _GUICtrlEdit_Scroll($LogFile, $SB_PAGEDOWN)

    [/autoit]

    "gelöst"...

    Nur nach ein paar Zeilen macht er das auch nicht mehr... Bleibt er einfach stehen -.-... Ich versuchs nochmal mit deinem "Caret"...

  • Hallo

    Weiss jemand warum? (Script kann ich nicht posten, weil ich da sau viele spez. Includes und auch Bilder und sowas drin habe...)


    Dann mache ein allgemein gehaltenes Beispiel-Skript, in dem der/die Fehler/Effekte auch vorkommen,

    mfg (Auto)Bert

  • Sooooo, habe den normalen Beispiel-Code so "umgewandelt", dass das Problem auch besteht ;)...


    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <TreeViewConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt('MustDeclareVars', 1)

    [/autoit][autoit][/autoit][autoit]

    Example()

    [/autoit][autoit][/autoit][autoit]

    Func Example()
    Local $tab, $tab0, $tab0OK, $tab0input
    Local $tab1, $tab1combo, $tab1OK
    Local $tab2, $tab2OK, $msg

    [/autoit][autoit][/autoit][autoit]

    GUICreate("My GUI Tab") ; will create a dialog box that when displayed is centered

    [/autoit][autoit][/autoit][autoit]

    GUISetBkColor(0x00E0FFFF)
    GUISetFont(9, 300)

    [/autoit][autoit][/autoit][autoit]

    $tab = GUICtrlCreateTab(10, 10, 200, 100)

    [/autoit][autoit][/autoit][autoit]

    $tab0 = GUICtrlCreateTabItem("tab0")
    GUICtrlCreatePic(@DesktopDir & "/123Test.jpg", 10, 30, 200, 70, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GuiCtrlSetState(-1, $GUI_ONTOP)
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    $tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    $tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)

    [/autoit][autoit][/autoit][autoit]

    $tab1 = GUICtrlCreateTabItem("tab----1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon") ; default Jon
    $tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)

    [/autoit][autoit][/autoit][autoit]

    $tab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    $tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateTabItem("") ; end tabitem definition

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateLabel("label3", 20, 130, 50, 20)

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    [/autoit][autoit][/autoit][autoit]

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc ;==>Example

    [/autoit]


    Ich habe dann halt mit

    [autoit]

    GuiCtrlSetState(-1, $GUI_ONTOP)

    [/autoit]

    arbeiten müssen, da sonst das Bild nicht angezeigt wird, DADURCH gegen die Button net, müsste also den Status auch den Button geben, DADURCH blinken die halt MANCHMAL durch die ganze GUI... -.-

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]


    GUICreate("My GUI Tab") ; will create a dialog box that when displayed is centered

    [/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0x00E0FFFF)
    GUISetFont(9, 300)

    [/autoit] [autoit][/autoit] [autoit]

    $tab = GUICtrlCreateTab(10, 10, 200, 100)

    [/autoit] [autoit][/autoit] [autoit]

    $tab0 = GUICtrlCreateTabItem("tab0")
    $Pic = GUICtrlCreatePic(@DesktopDir & "/123Test.jpg", 10, 30, 200, 70, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1,$GUI_DISABLE)
    GuiCtrlSetState($Pic, $GUI_ONTOP)
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    $tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    $tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $tab1 = GUICtrlCreateTabItem("tab----1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon") ; default Jon
    $tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $tab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    $tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem("") ; end tabitem definition

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("label3", 20, 130, 50, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc ;==>Example

    [/autoit]

    Du mußt das Pic mit GUI_DISABLE auf inaktiv setzen, dann geht der Button auch.

  • Ah, okey, vielen Dank :D...

    Dann brauche ich auch die ganzen OnTops nicht mehr?^^ Super...

  • Sorry für den Doppelpost... Aber ist doch nicht gelöst... Nun weiss ich wieder, warum ich die GUI nicht deaktiviert habe...

    Zitat

    Wird ein Bild als Hintergrundbild genutzt, während die anderen Controls dieses quasi überlappen, so ist es wichtig, das Bild-Control zu deaktivieren und es nach den anderen Controls zu erstellen: GuiCtrlSetState(-1,$GUI_DISABLE). Dies funktioniert aber nicht mit Tab-Controlen, die anders arbeiten. In dem Fall muss man das Bild mit dem Stil $WS_CLIPSIBLINGS erstellen. GuiCtrlSetState(-1,$GUI_ONTOP) ist für die Tab-Controls notwendig.

    Klappt aber nicht so richtig -.-...


    LG

  • Hallo Acanis,

    mach es so:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <TreeViewConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()
    Local $tab, $tab0, $tab0OK, $tab0input
    Local $tab1, $tab1combo, $tab1OK
    Local $tab2, $tab2OK, $msg

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("My GUI Tab") ; will create a dialog box that when displayed is centered

    [/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0x00E0FFFF)
    GUISetFont(9, 300)

    [/autoit] [autoit][/autoit] [autoit]

    $tab = GUICtrlCreateTab(10, 10, 200, 100)

    [/autoit] [autoit][/autoit] [autoit]

    $tab0 = GUICtrlCreateTabItem("tab0")
    GUICtrlCreatePic("123Test.jpg", 10, 30, 200, 70, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GuiCtrlSetState(-1, BitOR($GUI_ONTOP,$GUI_DISABLE))
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    $tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    $tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $tab1 = GUICtrlCreateTabItem("tab----1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon") ; default Jon
    $tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $tab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    $tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem("") ; end tabitem definition

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("label3", 20, 130, 50, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc ;==>Example

    [/autoit]

    wie Raupi schon sagte ist $GUI_DISABLE notwendig, damit du die nderen Controlls ansprechen kannst,

    mfg (Auto)Bert

  • Ich hatte es ja so, bis darauf, dass ich den Befehl in 2 Einzelbefehlen hatte, was ja nichts ändern dürfte...
    Trotzdem ist Input 1 öfter mal am "durchschimmern"... Bzw. je nachdem, was ich als 1. Control habe....
    Habe einen neuen Input kreeiert und vor dem "bösen" gemacht und dann war das Problem wieder nur mit diesem Control...


    LG

    *Edit*
    Passiert z.B. immer nach dem Minimieren/wieder vergrößern der GUI

    Einmal editiert, zuletzt von Acanis (20. Januar 2010 um 20:44)