Unendliche Anzahl Tabs

  • Nabend,


    ich hab mal ne Frage.


    Ich habe eine GUI mit einem Tabmenu. Ich möchte, dass User per Contextmenu beliebig viele neue Tabs hinzufügen können.


    Also hier ist das Script:



    Also man hat standartmäßig das Tab "Main" und kann per Rechtsklick beliebig viele Tabs "Tab 1", "Tab 2", usw. hinzufügen.


    Das funktioniert aber irgendwie nicht. Man kann genau einen neuen Tab hinzufügen und dann will er nicht mehr. Hat irgendjemand eine Ahnung warum?


    Edit:
    Bzw. eigentlich ist klar warum es nicht funktioniert. Er möchte ja einen Handle zum Tab haben, aber $newtab ist ja jede Runde gleich. Die Frage ist somit: Wie umgehe ich das und erstelle dynamisch einen Handle?


    So etwas wie:


    Code
    1. $newtab&$tabs_num = GUICtrlCreateTabItem("Tab "&$tabs_num)


    geht in Autoit ja nicht...

  • Das ist nicht das Problem. Hab es umgeschrieben und es geht trotzdem nicht. Es findet nach dem 2. Klick kein Aufruf beim Switch statt.

  • Das war nicht das Problem. Das kam mir am Anfang total komisch vor und habe diverse Sachen ausprobiert.
    Wenn du per Rechtsklick einen neuen Tab erstellst und das gleiche direkt nochmal versuchst, geht es nicht. Was aber geht: Tab erstellen, zum neuen Tab wechseln, zum Main Tab wechseln und dann wieder ein neues Tab erstellen.
    Warum?
    Wenn du ein Tabmenü erstellst gelten alle folgenden erstellten Controls für den zuletzt erstellten Tab, außer du arbeitest mit Gruppen. Ein Kontextmenü hat aber die Eigenschaft, dass es für ein ganzes Fenster verfügbar ist, aber dadurch, dass du es nach dem Tabmenü erstellst, funktionieren die Controls des Kontextmenüs nur im Main Tab Bereich. Wenn du das erste Tab per Rechtsklick erstellst ist der sichtbare Fokus zwar noch im Main Tab, der wahre Fokus aber auf dem neu erstellten, weshalb du das Kontextmenü zwar per Rechtsklick hast (gilt ja für das ganze Fenster), der Eintrag zum Taberstellen aber nicht funktioniert, da das Main Tab nicht den "richtigen" Fokus hat.


    Hoffe das war verständlich ^^


    Lösung ist also das Kontextmenü vor dem Tabmenü zu erstellen.


    Edit zu deinem Problem mit dynamischen Variablen:
    Es gibt in AutoIt den Befehl Assign. Dieser ist aber absolut nicht empfehlenswert. Es gibt Workarounds mit ArrayLists, die eigentlich die Basics beherrschen (einfach mal googlen). Zur Not kannst du aber auch einfach ein Array nehmen, was bei jedem neuen Tab neu erstellt wird. Solange du keine 100 Tabs erstellst merkst du auch nichts von schlechter Performance.




    Edit2: ArrayList und co.

  • Danke S3cret :) Bin in AutoIt nicht so bewandert :)