GUI mehrfach benutzen // Automatisch erstellen

  • Hallo AutoIt.de - Mitglieder,

    habe wieder mal einen Innerenkonflikt und brauche mal euren Rat.

    Ich habe eine GUI (siehe Anhang) diese kann bis zu 4 mal untereinander angezeigt werden. Die Werte für jede GUI unterscheiden sich dann.
    Jetzt wäre meine Frage, ob ich nur eine GUI nutzen kann und diese über eine Funktion erstellen lasse und über eine zweite die Werte aktuallisiere und das dann für jede View (1 - 4).

    Momentan habe ich einfach die GUI mehrfach erstellt - dies ist aber lästig, wenn man etwas an der Anzeige verändert.

    Hoffe, dass hier vielleicht jemand eine Idee hat - Vielen Dank :)

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $hView1 = GUICreate("title", @DesktopWidth, 242, 0, 0, $WS_POPUP)
    GUISetBkColor(0x000000)
    $hView1Title = GUICtrlCreateLabel("Title1", 0, 0, 1280, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFFFFFF)
    $hView1Value1 = GUICtrlCreateLabel("Value1", 0, 44, 256, 42, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 22, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0x00FF00)
    $hView1Val1 = GUICtrlCreateLabel("999", 0, 86, 256, 110, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 80, 800, 0, "Arial Black")
    GUICtrlSetBkColor(-1, 0x00FF00)
    $hView1Value2 = GUICtrlCreateLabel("Value2", 256, 44, 256, 42, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 22, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0xFFFF00)
    $hView1Val2 = GUICtrlCreateLabel("999", 256, 86, 256, 110, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 80, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0xFFFF00)
    $hView1Value3 = GUICtrlCreateLabel("Value3", 512, 44, 256, 42, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 22, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFFFBF0)
    GUICtrlSetBkColor(-1, 0x008000)
    $hView1Val3 = GUICtrlCreateLabel("99:99", 512, 86, 256, 110, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 60, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFBF0)
    GUICtrlSetBkColor(-1, 0x008000)
    $hView1Value4= GUICtrlCreateLabel("Value4", 768, 44, 256, 42, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 22, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFF8833)
    $hView1Val4 = GUICtrlCreateLabel("999", 768, 86, 256, 110, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 80, 800, 0, "Arial Black")
    GUICtrlSetBkColor(-1, 0xFF8833)
    $hView1Value5 = GUICtrlCreateLabel("Value5", 1024, 44, 256, 42, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 22, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0x00FFFF)
    $hView1Val5 = GUICtrlCreateLabel("99:99", 1024, 86, 256, 110, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 60, 800, 0, "Arial Black")
    GUICtrlSetBkColor(-1, 0x00FFFF)
    $hView1Value9 = GUICtrlCreateLabel("V9", 768, 198, 88, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x800000)
    $hView1Val9 = GUICtrlCreateLabel("99", 856, 198, 40, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x800000)
    $hView1Value10 = GUICtrlCreateLabel("V10", 896, 198, 88, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x000080)
    $hView1Val10= GUICtrlCreateLabel("99", 984, 198, 40, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x000080)
    $hView1Value6u7 = GUICtrlCreateLabel("Value6 7", 0, 198, 160, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x800080)
    $hView1Val6 = GUICtrlCreateLabel("999", 160, 198, 94, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x800080)
    $hView1Val7 = GUICtrlCreateLabel("100 %", 254, 198, 99, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x800080)
    $hView1Value11 = GUICtrlCreateLabel("Value11", 1024, 198, 176, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x008080)
    $hView1Val11 = GUICtrlCreateLabel("999", 1200, 198, 80, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x008080)
    $hView1Value8 = GUICtrlCreateLabel("Value8", 355, 198, 313, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x8080C0)
    $hView1Val8 = GUICtrlCreateLabel("100 %", 668, 198, 100, 44, BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x8080C0)
    GUISetState(@SW_SHOW)

    [/autoit]

    [Blockierte Grafik: http://img375.imageshack.us/img375/5203/view1.th.gif]

    Einmal editiert, zuletzt von ic4u (2. November 2010 um 06:08) aus folgendem Grund: Problem gelöst

  • Hmmm, dass mit dem Array raffe ich jetzt nicht ganz ?(
    Da steh ich wohl gerade auf'm Schlauch.

    Na ja, werde mal noch etwas probieren aber die super Idee habe ich noch nicht. :S

  • Nebenbei:
    Benutzt mal lieber

    [autoit]


    GuiCtrlSetDefColor
    ;und
    GuiCtrlSetDefBkColor

    [/autoit]


    außer du schreibst gerne oder liebst Unübersichtlichkeit :rolleyes:

    Das kommt drauf an, was man alles einfärben will, wenn man nur weige Controlsa einfärben will, lohnt sich das nicht^^

    stayawayknight Wäre zwar schön, wenn es übersichtlicher wäre aber das geht in diesem Fall nicht wirklich ;) wie Ineluki schon festgestellt hat. Es ist ja absichtlich so "farbig". Egal, hilft mir leider nicht bei meinem eigentlichen Problem, trotzdem Danke für den Tipp.

  • Hi,
    du müsstest die GUI in eine Funktion packen und dann die zurückgegebenen Ctrl ID´s in einen Array schreiben der dann zurückgegben wird.
    Das währ eigentlich schon alles.


    Hier mal ein Beispiel dazu:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    Func objectGUI($title)
    $hGUI = GUICreate($title, 300, 242)
    Dim $aObjData[1] = [$hGUI]
    $idLabelTitle = GUICtrlCreateLabel($title, 0, 0, 150, 44)
    _ArrayAdd($aObjData, $idLabelTitle)
    GUISetState(@SW_SHOW, $aObjData[0])
    return $aObjData
    EndFunc

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

    Func objectGUIchangeTitle($object, $title)
    GUICtrlSetData($object[1], $title)
    EndFunc

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

    $oGUI1 = objectGUI("1")
    $oGUI2 = objectGUI("2")
    MsgBox(0,0,0)
    objectGUIchangeTitle($oGUI1, "foo")
    objectGUIchangeTitle($oGUI2, "bar")
    MsgBox(0,0,0)

    [/autoit]
  • @Cyberdyne ok, ich glaube damit kann ich was Anfangen - ist zwar dann immer noch sehr komplex, wenn man ein Update der 10 - 11 Werte macht aber wenigstens muss ich nur einmal die GUI anpassen bei Änderungen. Mal schauen, wie ich das ganze mit meinem GUI umsetze.

    Danke Cyberdyne :thumbup:

    EDIT:
    Will euch nur mal meine Gedanken mitteilen zum Umsetzen bin ich noch nicht gekommen.
    Wenn ich ein Global 2D-Array benutze (die Größe ist ja fest) kann ich die ganzen Handles
    dort hin übernehmen und zwar über eine eignen Func mit $iViewNr wird der erste Index
    im Array zugeordnet und im zweiten Index 0 - x kann ich die ganzen Handels die ich benötige,
    also nur die Felder die sich ändern laden.

    Somit kann ich über die Nr. 1 - 4 auf die kompletten Handles der GUIx zugreifen oder?

    Einmal editiert, zuletzt von ic4u (25. Oktober 2010 um 16:34)