Hilfe reicht nicht

  • Hallo miteinander,

    in der Hilfe habe ich das Beispiel der Funktion _GUICtrlTab_SetMinTabWidth getestet. Leider kann ich auf den einzelnen Tabs mit GUICtrlCreateButton keine Buttons erstellen. Wie sage ich ihm, dass der Button auf dem mit _GUICtrlTab_InsertItem erstelltem Tab erscheinen soll.

    Wahrscheinlich ist es nur wieder eine Kleinigkeit, aber ich komme einfach nicht weiter.

    MfG Jescho

    Jeder hat mal klein angefangen - aber nicht jeder kommt groß raus!

    Einmal editiert, zuletzt von Jescho (21. Februar 2010 um 22:19)

  • ja das habe ich schon gemacht - das funktioniert auch gut, aber es geht mir um den lerneffekt. Es muss doch möglich sein, oder etwa nicht?.

    MfG Jescho

    Jeder hat mal klein angefangen - aber nicht jeder kommt groß raus!

  • In der Hilfe habe ich folgendes als Beispiel gefunden:

    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiTab.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_TAB = False ; Prüft den Klassennamen (ClassName), der an die Tab-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $hTab

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

    ; Erstellt eine GUI
    GUICreate("Tab-Control: Setzt die minimale Tabbreite", 400, 300)
    $hTab = GUICtrlCreateTab(2, 2, 396, 296)
    GUISetState()

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

    ; Fügt Tabs hinzu
    _GUICtrlTab_SetMinTabWidth($hTab, 80)
    _GUICtrlTab_InsertItem($hTab, 0, "Tab 1")
    _GUICtrlTab_InsertItem($hTab, 1, "Tab 2")
    _GUICtrlTab_InsertItem($hTab, 2, "Tab 3")

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

    ;wie erstelle ich einen Button im Tab 2

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]

    MfG Jescho

    Jeder hat mal klein angefangen - aber nicht jeder kommt groß raus!

  • Mach doch mit GUICtrlCreateTabItem statt der _GUICtrlTab_InsertItem Funktion.

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiTab.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_TAB = False ; Prüft den Klassennamen (ClassName), der an die Tab-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $hTab

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

    ; Erstellt eine GUI
    GUICreate("Tab-Control: Setzt die minimale Tabbreite", 400, 300)
    $hTab = GUICtrlCreateTab(2, 2, 396, 296)
    GUISetState()

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

    ; Fügt Tabs hinzu
    _GUICtrlTab_SetMinTabWidth($hTab, 80)
    GUICtrlCreateTabItem("Tab 1")
    GUICtrlCreateTabItem("Tab 2")
    GUICtrlCreateButton("Button", 50, 50)
    GUICtrlCreateTabItem("Tab 3")

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

    ;wie erstelle ich einen Button im Tab 2

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]
  • danke funktioniert.

    eine Frage habe ich noch. Wie binde ich die Funtion _GUICtrlTab_SetItemSize zum setzen der Spaltenbreite am besten ein?

    MfG Jescho

    Jeder hat mal klein angefangen - aber nicht jeder kommt groß raus!

  • nur für Verständnis, wieso geht das aus der Hilfe nicht?

    Gehen tut das schon. Macht aber alles unnötig kompliziert.

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiTab.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_TAB = False ; Prüft den Klassennamen (ClassName), der an die Tab-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $hTab

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

    ; Erstellt eine GUI
    GUICreate("Tab-Control: Setzt die minimale Tabbreite", 400, 300)
    $hTab = GUICtrlCreateTab(2, 2, 396, 296)
    GUISetState()

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

    ; Fügt Tabs hinzu
    _GUICtrlTab_SetMinTabWidth($hTab, 80)
    _GUICtrlTab_InsertItem($hTab, 0, "Tab 1")
    _GUICtrlTab_InsertItem($hTab, 1, "Tab 2")
    _GUICtrlTab_InsertItem($hTab, 2, "Tab 3")

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

    _GUICtrlTab_SetCurFocus($hTab, -1) ; Auswahl aufheben
    _GUICtrlTab_SetCurFocus($hTab, 0) ; 1 Tab wählen
    GUICtrlCreateButton("Button auf Tab 1", 20, 50)
    _GUICtrlTab_SetCurFocus($hTab, -1) ; Auswahl aufheben
    _GUICtrlTab_SetCurFocus($hTab, 1) ; 2. Tab wählen
    GUICtrlCreateButton("Button auf Tab 2", 50, 50)
    _GUICtrlTab_SetCurFocus($hTab, -1) ; usw
    _GUICtrlTab_SetCurFocus($hTab, 2)
    GUICtrlCreateButton("Button auf Tab 3", 100, 100)

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

    _GUICtrlTab_SetCurFocus($hTab, -1)
    _GUICtrlTab_SetCurFocus($hTab, 0)

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

    ;wie erstelle ich einen Button im Tab 2

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]
  • ja ok, aber warum gibt es dann diese Variante? Es muss doch dafür einen Speziellen Verwendungszweck geben.

    MfG Jescho

    Jeder hat mal klein angefangen - aber nicht jeder kommt groß raus!

  • Ja, damit man ein Tabitem an einer bestimmten Position erstellen kann. Mit dem normalen GUICtrlCreateTabItem kann nur ein TabItem ans Ende angehängt werden. Über die UDF gehts auch so. Es hat alles seinen Zweck, aber du musst natürlich entscheiden, welcher Weg für dich am einfachsten und effektivsten ist.

    Anderes Beispiel:
    Mit GUICtrlCreateListViewItem("Spalte1|Spalte2|Spalte3") kann man direkt ein Listviewitem mit mehreren subitems erstellen. Mit der UDF muss man für das Item jedes SubItem einzelnd einfügen. (Code nicht korrekt, da nur ein Beispiel:)
    _GUICtrlListview_AddItem("Spalte1")
    _GUICtrlListview_AddsubItem("Spalte2",1)
    _GUICtrlListview_AddsubItem("Spalte3",2)

    Du hast diverse Vorteile bei den UDF Funktionen (Mehr Freiraum für dein Programm), aber auch den Nachteil, dass du für manche Sachen mehr Code brauchst.