Buttons klickbar machen

  • Hallo allerseits,

    ich bin neu in Autoit. Ich habe versucht eine GUI zum Aufruf diverser Scripte zu erstellen, so weit steht sie schon, aber aus irgend einem Grund gelingt es mit nicht den Button Aktionen zuzuweisen (Abschnitt durch ;;;; markiert, er findet angeblich die ButtonIDs nicht, aber die sind doch da? Vielleihct seh ich den Baum vor lauter Bäümen nicht. Kann mir einer auf die Sprünge helfen? Das wäre super nett


    LG Chris

  • Danke nochmal für die schnelle Antwort. Also ich habe den markierten Teil jetzt abgeändert in:

    Trotzdem Fehler: Badly formated Variable, denke das meinst Du anders

  • Zumindest:

  • Danke noch mal,

    so wird das leider auch nichts, zumindest beim klicken, sobald ich im else zweig was habe macht er beim start ne Endlosschleife, auch schön aber nicht das was ich wollte. Ich wollte auf Button1, 2 etc klicken und dnan eine Aktion starten, da passiert aber nichts, nun sieht es so aus

    Ausserdem geht der schliessbutton nicht mehr, dass ging ja schon

    Vielleicht mal eine ganz indiskrete Frage, vielleicht war ja die zuätzliche Schleife von mir Murks und ich hätte das in die zweite While Schleife einbauen müssen?

    Einmal editiert, zuletzt von casi4712 (21. Januar 2022 um 14:23)

  • Ohjee, so wird das nix!

    Versuch das mal so und schau dir den Aufbau mal genau an.

    Nachtrag:

    Alle deine Local Variablen, die außerhalb einer Funktion definiert wurden, sind Global!

    Ich empfehle dir folgendes in deine Skripte einzubauen:

    Code
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

    Das prüft solche Sachen und zwingt dich auch dazu Variablen zu definieren bevor du sie benutzt etc..

  • Wie gesagt noch mal die Frage sollte ich, wie gehabt eine 2te Schleife einbauen oder dass hierunter mit einbauen?

    Code
    While 1
    CheckX($hGui,$RBOX_EVENT_CLOSE,"GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0xA3A3A3)","GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0x555555)")
    $gMsg = GUIGetMsg()
    ....
  • So ich habe die While Schleife jetzt dementsprechend umgebaut, jetzt poppt die GUI nur noch kurz auf, das komplette sieht nun so aus. Ist echt zum Mäusemelken

  • Ich denke du willst zu viel auf einmal.

    Fang nochmal step by step an:

    1. Simple GUI bauen incl. der While Schleife (ohne Aktionen/Funktionen! einzubauen!)

    2. Prüfen & korrigieren

    3. 1 Button mit einer Funktion verknüpfen.

    4. Prüfen & korrigieren

    etc.

    Der ganze Kram mit den Farben und CheckX & SQL sind spielereien für den späteren Feinschliff und solltest du erst mal weg lassen und erst umsetzen wenn deine GUI läuft.

    Ggf. Triggerst du auch irgendwie das "Else" im Switch-Part, nehm dort mal das Exit raus bzw. den Else Zweig komplett und setze das Exit bei deinem ersten Case ein.

    Und nochmal ein funktionierendes Beispiel (ganz frisch):

    Einmal editiert, zuletzt von Moombas (21. Januar 2022 um 15:36)

  • Hi casi4712,


    ich denke auch du solltest dir nicht zu viel auf einmal vornehmen und die Schritte wie von Moombas beschrieben erstmal Stück für Stück umsetzen und dazulernen 😀 .
    Dann fällt es sicherlich auch einfacher den Überblick zu bewahren und eine Struktur für dein Skript/Programm aufzubauen.

    Mal eine Frage zum Ziel:
    Sind die Aktionen die auf den Button-Klicks stattfinden sollen (deine Aufrufe diverser Skripte), bspw.:

    Zitat

    [...] PC-Einrichtung\PCSETTING_listv2.cmd [...]

    evtl. sogar in AutoIt umsetzbar und es ist gar nicht nötig das du andere Skripte aufrufst 🧐 ?
    Ich meine, wenn du dir nochmal überlegst was genau dein Ziel ist und es neu formulierst (falls es neu sein wird/sollte), dann können wir hier wahrscheinlich konkretere Vorschläge und Hilfestellungen leisten.


    Viele Grüße

    Sven

  • JO das mag aus Deiner Sicht ja so aussehen, aber eine solche simple GUI habe ich bereits, die geht auch, ist halt nicht der Brüller. Aber ich verstehe was Du meinst. Hätte jetzt nicht gedacht dass es solche Schwierigkeiten macht da ein paar Cases reinzubekommen. Das mit SQL wäre noch ne Frage für später, aber ich kann mir nicht vorstellen dass diese Funktion da momentan stört. Oder doch? Ich wollte diese Cases ja gerade hier einbauen. Aber das scheint wohl nicht zu gehen. Ich entnehme Deiner Aussage dass das mit der CheckX Funktion durcheiander gerät.


    vielen Dank noch mal

    lg

  • Hi nochmal,

    Zitat

    Hätte jetzt nicht gedacht dass es solche Schwierigkeiten macht da ein paar Cases reinzubekommen.

    Nein natürlich ist das kein großes Problem. Hier mal eine klein wenig abgewandelte Variante deines bisherigen Skriptes, die "funktioniert":

    Mit klickbaren Buttons und Schließen-X


    Du schreibst außerdem noch:

    Zitat

    Ich entnehme Deiner Aussage dass das mit der CheckX Funktion durcheiander gerät.

    Ja, die habe ich komplett rausgenommen da sie nicht benötigt wird. Zudem gibt es jedoch aus meiner Sicht zwei weitere Probleme mit dem Skript so in dieser "Quick & Dirty" abgeänderten Variante.

    • Zum Einen solltest du einige Dinge trennen/neustrukturieren und dir eine Übersicht verschaffen wo was im Skript hingehört. So wie es jetzt ist sollte man es nicht lassen.
    • Zum Anderen ist es sehr wahrscheinlich, dass du bald mit dem nächsten Problem diesbzgl. auf uns zukommen wirst, da sich andere Codestellen nicht wie erwartet verhalten oder ähnliches (so meine Einschätzung dazu).

    Daher auch die gut gemeinten Vorschläge von Moombas und mir 😀 .

    Viele Grüße

    Sven

  • Also zunächst erst mal herzlichen Dank, habe die angepasste Vesion jetzt versucht, abber ausser dem Schliessbutton passiert bei den 5 Testbuttons gar nix, dann liegt das wohl an meinem Rechner denke ich, Schade


    lg und schönen Abend


    chris

  • Na dass ist ja jetzt ein Ding, das Script hat wohl die ganze Zeit funktioniert, aber der Hintergrund blockiert das irgend wie, wieso das passiert ist mir allerdings mehr als schleierhaft

  • Dann formulier ich die Frage mal um, hat schon mal jemand das Problem gehhabt, dass Button nicht funktionieren, wenn ein Hintergrundbild eingebunden ist?


    schönes WE

  • Hallo erstmal,,

    bitte nicht denken, dass ich nicht zu erst Foren rauf und runter durchsuche, bevor ich selber mir die Blöße gebe in einem Forum zu schreiben. Ich hatte schon überlegt, ob ich schreibe, dass ich das bereits gefunden hatte, das war aber nicht der Fehler. Den Fehler, und das war der eigentliche Fehler, meine vorangegangenen Versuchen hatten im Grunde auch funktioniert, war die Position von GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660) . Dieses habe ich jetzt an die Stelle

    Code
    .
    .
    Global $idButton_51 = GUICtrlCreateButton("", 610, 265, 100, 20)
    Global $idButton_52 = GUICtrlCreateButton("", 730, 265, 100, 20)
    
    GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660)
    
    ;LABELS
    GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local DB-Server: &$st", 10, 35, 980, 20)
    .....

    verschoben, schon waren die Button klickbar. Das war vielleicht ne Zangengeburt, aber nun hat eine GUI auch irgendwie erst Sinn für mich.

    Aber eine Anschlussfrage habe ich dann doch noch, bin mal so frech sie gleich hier zu stellen. Ich habe am Ende, wie man sieht, eine Funktion um den Status eines Dienstes abzufragen. Es sollen dann noch weitere Variablen Anzeigen folgen. Laut der Autoit FAQs, die ich natürlich gelesen habe, sollte die Kombination String und Variable so funktionieren:

    Code
    GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local DB-Server: &$st", 10, 35, 980, 20)

    Er schreibt aber nur den Text $st, das ist etwas unbefriedigend, hier soll natürlich stehen RUNNING oder OFF, was mache ich falsch?


    lg

    und schönen Sonntag noch und danke für alles