wie kann man ein scrollbalken in ein tabfenster reinmachen

  • hallo leute,
    hab ein frage undzwar es geht um ein scrollbalken,
    ich möchte ein scrollbalken in ein tabfenster einbauen mit so ein grösse wie unten

    [autoit]

    $Group1 = GUICtrlCreateGroup("Benutzerverwaltung", 8, 8, 833, 330, -1, $WS_EX_TRANSPARENT)
    $Tab1 = GUICtrlCreateTab(16, 23, 810, 305)

    [/autoit]

    [Blockierte Grafik: http://img134.imageshack.us/img134/2861/soeinscrollbalken.th.jpg]

    jetzt will ich falls mein fenster vollgeschrieben ist will ich mehr text schreiben und das ich nach unten scrollen kann

    falls ihr was nicht versteht oder ich was falsch geschrieben habe tut mir leid

    • Offizieller Beitrag

    ich möchte ein scrollbalken in ein tabfenster einbauen mit so ein grösse wie unten


    Wo, bitteschön, willst du denn scrollen? Dein Tab wird in voller Größe abgebildet, da is nix zum Scrollen. ?(
    Du könntest z.B. ein Edit einbauen - in dem kannst du dann scrollen.

  • Oder man macht es mit einer Grafic ( GUICtrlCreateGrafic )
    Soweit ich weis, kann man die Grafic Scrollen.

    Habs aber noch net probiert.

    • Offizieller Beitrag

    Ich glaube, ich weiß was du willst.
    Auf einem Tab mehr Elemente untereinander anzeigen als draufpassen. Das geht schon. Dazu mußt du dann ALLE Controls auf dem Tab verschieben. Die "Nicht gültigen" dann immer ausblenden. Hab mal eine grobe Musterlösung erstellt. Geht eleganter mit Msg-Codes, kannst du dann ja anpassen.

    [autoit]

    #include <GUIConstantsEx.au3>
    Global $aButton[12][2] ; zweite Dim. für y-Wert

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

    $gui = GUICreate('Test', 600, 400)
    $slider = GUICtrlCreateSlider(540, 20, 20, 380, BitOR(0x0001,0x0002))
    GUICtrlSetLimit(-1, 120, 0)
    ; verfügbarer Bereich auf Tab: 340
    ; Bereich für alle Button wäre: 12x Button-Höhe + 11x Zwischenraum = 240+220 = 460
    ; Differenz ist Sliderbereich: 120
    $tab = GUICtrlCreateTab(10, 10, 500, 380)
    $tab0 = GUICtrlCreateTabItem("tab0")
    $y = 45
    For $i = 0 To 11
    $aButton[$i][0] = GUICtrlCreateButton('B ' & $i+1, 20, $y, 60, 20)
    $aButton[$i][1] = $y
    $y += 40
    Next
    $tab1 = GUICtrlCreateTabItem("tab1")
    GUICtrlCreateTabItem("")

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $slider
    _moveButton()
    EndSwitch
    WEnd

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

    Func _moveButton()
    Local $posCtrl, $y
    For $i = 0 To UBound($aButton) -1
    $posCtrl = ControlGetPos($gui, '', $aButton[$i][0])
    $y = $aButton[$i][1] - GUICtrlRead($slider)
    ControlMove($gui, '', $aButton[$i][0], $posCtrl[0], $y)
    If ($y < 45) Or ($y > 360) Then
    GUICtrlSetState($aButton[$i][0], $GUI_HIDE)
    Else
    GUICtrlSetState($aButton[$i][0], $GUI_SHOW)
    EndIf
    Next
    EndFunc

    [/autoit]
  • Also BugFix, eins muss ich ja sagen, deine Scripts sind super,
    allerdings musst du beachten, dass nicht jeder anfänger gleich mit 2D Arrays
    arbeiten will, geschweigedenn diese versteht.

    Ich fange auch gerade erst an, mich an 2D Arrays ran zu tasten.
    Das is nich grad so unkomplieziert ^^

    Also, für Anfänger dann doch mal lieber etwas einfacherer Scripts machen, is nur so en Tipp von mir :D

  • Hallo BugFix ,

    schön gelöst, jetzt hab ich endlich verstanden was Harun27 bezwecken will

    @Harun27 wenn es dir nicht gefällt kannst du auch in der dt Hilfe die Liste der nutzerdefinierte Funktionen zu GuiScrollBars anschauen oder du baust dir folgendes um:

    Spoiler anzeigen
    [autoit]

    Func _exitMain()
    Switch @GUI_WINHANDLE
    Case $hfrmMain
    _SQLite_Close()
    _SQLite_Shutdown()
    Exit
    EndSwitch
    EndFunc

    [/autoit]

    gefunden in https://autoit.de/index.php?page…77921#post77921 und _ExitWerkzeug implementiert. Hat mich nur 20 Minuten meiner Zeit gekostet, also lern mal mit der Suchfunktion umzugehen, bzw. schau in Zukunft öfter in die Hilfe,

    mfg (Auto)Bert

    • Offizieller Beitrag

    allerdings musst du beachten, dass nicht jeder anfänger gleich mit 2D Arrays
    arbeiten will, geschweigedenn diese versteht.


    Nun ja, das sehe ich nicht unbedingt als Widerspruch. Zumal ich eigentlich bemüht bin, die wichtigen Passagen in den Bsp.-Skripts zu kommentieren. Und zudem besteht doch die Hoffnung, dass der User die präsentierte Lösung nachgestaltet um für sich dauerhaften Nutzen zu ziehen.
    Andererseits existiert mein Array-Tutorial. Wer es liest und noch Probleme hat, kann sich bei mir melden - darauf weise ich ausdrücklich im Tut hin. Aus den Fragen wollte ich dann eine FAQ erstellen um noch bessere Hilfe geben zu könne. Das Tut ist seit ca. 1,5 Jahren online. Bisher gestellte Fragen: 0!
    Schlußfolgerung: Jeder der es liest, versteht es. :rofl:

  • Also BugFix, eins muss ich ja sagen, deine Scripts sind super,
    allerdings musst du beachten, dass nicht jeder anfänger gleich mit 2D Arrays
    arbeiten will, geschweigedenn diese versteht.

    Stellt euch doch die Dimensionen fast wie in Excel vor, da versteht sie auch fast jeder (meist ohne das es ihm auffällt) :)

    Hier zur Verdeutlichung:
    autoit.de/wcf/attachment/4736/

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (11. Mai 2009 um 18:30)

    • Offizieller Beitrag

    So,
    ich habe nun mal Windows-Msg verwendet. Das läuft etwas flüssiger.

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>
    Global $aButton[12][2] ; zweite Dim. für y-Wert

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

    $gui = GUICreate('Test', 600, 400)
    $tab = GUICtrlCreateTab(10, 10, 580, 380)
    $tab0 = GUICtrlCreateTabItem("tab0")
    $y = 45
    For $i = 0 To 11
    $aButton[$i][0] = GUICtrlCreateButton('B ' & $i+1, 20, $y, 60, 20)
    $aButton[$i][1] = $y
    $y += 40
    Next
    $slider = GUICtrlCreateSlider(560, 40, 20, 340, BitOR(0x0001,0x0002))
    GUICtrlSetLimit(-1, 120, 0)
    ; verfügbarer Bereich auf Tab: 340
    ; Bereich für alle Button wäre: 12x Button-Höhe + 11x Zwischenraum = 240+220 = 460
    ; Differenz ist Sliderbereich: 120
    $tab1 = GUICtrlCreateTabItem("tab1")
    GUICtrlCreateTabItem("")

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

    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    EndSwitch
    WEnd

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

    Func _moveButton()
    Local $moveDiff = GUICtrlRead($slider), $posCtrl, $y
    GUICtrlSetState($gui, @SW_LOCK)
    For $i = 0 To UBound($aButton) -1
    $posCtrl = ControlGetPos($gui, '', $aButton[$i][0])
    $y = $aButton[$i][1] - GUICtrlRead($slider)
    ControlMove($gui, '', $aButton[$i][0], $posCtrl[0], $y)
    If ($y < 45) Or ($y > 365) Then
    GUICtrlSetState($aButton[$i][0], $GUI_HIDE)
    Else
    GUICtrlSetState($aButton[$i][0], $GUI_SHOW)
    EndIf
    Next
    GUICtrlSetState($gui, @SW_UNLOCK)
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iCode, $tNMHDR, $hWndSlider
    $hWndSlider = $slider
    If Not IsHWnd($hWndSlider) Then $hWndSlider = GUICtrlGetHandle($slider)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    If $hWndFrom = $hWndSlider And ($iCode = -12 Or $iCode = -16) Then _moveButton()
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • Micha_he

    Das Problem ist für Anfänger/innen folgendes bei Array:

    1.)
    wie fülle ich die drei Arten des Array (1D, 2D, 3D) ?
    Hier wäre es an Hand von Beispielen eher mal zu erklären für Anfänger/innen.

    2.)
    Wie lese ich dir verschiedenen Werte aus?

    Ich selber komme damit bereits einwedig klar, aber dank BugFix und einigen die es mir hier sehr sehr geduldig im Forum erklärt haben.
    Aber für Anfänger/innen sollte man das ganze mal "Idiotensicher" erklären und evtl. auch an Hand von kommagetrennten Textdateien die vorliegen würden. So wie ich mal vermute, wissen viele wie man Daten (z. B. aus Excel) exportiert, aber nicht weiß wie man sie dann mit Array bearbeitet.

    Ansonsten hilft auch die Beiträge von BugFix zu studieren ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • genau danke bugfix hauptsache ich habe irgendwas damit ich runterscrollen kann und die weiteren texte sehen kann

    weil hätte ich kein scrollbalken würden die texte gleich auserhalb des tabs gehen

  • bugfix kann ich diese GUICtrlCreateSlider nicht im tabfenster einbauen oder muss es auserhalb des tabs sein weil wenn ich es im tab einbaue bleiben die ersten 2 tabs und die restlichen tabs nicht mehr zu sehen warum??? hast du irgendwie icq oder so