AutoItGUIBuilder

  • Hi!

    Hier also mein Tool. Ich hoffe ihr habt viel Spaß damit. Über Anregungen, Tips und Verbesserungsvorschläge freue ich mich jeder Zeit.


    Ich hab die neue Version jetzt mal hier dazu.

    PS: Da bei peethebee und wolkenloser Probleme aufgetreten sind (Control verkleinert sich/verschwindet bei anklicken) bitte ich alle eine kurze Antwort zu posten, ob Probleme aufgetreten sind.(Es muss ja kein ausführlicher Test sein.)

    3 Mal editiert, zuletzt von Markus (28. Januar 2006 um 22:13)

  • Hi
    Sieht soweit erstmal gut aus, aber irgendwie raff ich das nicht.

    Ich versuche eine Button zu erstellen, das klappt soweit. Doch wenn ich da ein paarmal drauf geklickt habe ist er nur noch mit der Umrandung zu sehn und im Baufester werden die CONTOL VERÄNDERN Felder aktiv.
    Da komm ich dann nicht mehr raus.....

    Gruß
    Wolke

  • OK, also erstmal zu den Control verändern Buttons. Die sind immer da, so lang ein Control im oberen Combo ausgewählt ist. Die halten das Script aber auch nicht auf, d.h. alle anderen Funktionen bleiben aktiv (nicht so wie beim Control hinzufügen, wo alle Hinzufügeaktionen ausgeführt werden müssen, bevor das Script weiterläuft).

    Zitat

    Doch wenn ich da ein paarmal drauf geklickt habe ist er nur noch mit der Umrandung zu sehn

    Wie das passiern konnte ist mir unklar, bei mir selbst noch nicht passiert. Eigentlich ist es ja so, dass wenn du draufklickst, das Control im Combo automatisch ausgesucht werden sollte, wodurch dann die Control verändern Buttons auftauchen (siehe oben).

    Du könntest mal versuchen, das "Hintergrund" Bild auszumachen, vielleicht ist der Button dahinter "versteckt".

    Außerdem müssten wenn du auf den Button klickst 8 schwarze Quadrate um den Button herum verteilt auftauchen, mit denen du die Größe verändern kannst. Kamen die nicht?

  • Was vielleicht auch noch sein könnte, dass du ne andere autoit version hast? Update von AutoIt und Scite würde vielleicht helfen, weiß ja nicht welche version du hast?

    • Offizieller Beitrag

    Hallo Markus!

    So, hab es jetzt auch mal getestet. Das Problem besteht tatsächlich. Wenn man ein Contorl (z.B. Button) anklickt, wird es auch ca. 4x4 Pixel verkleinert. Man muss nur die Größe einen Pixel irgendwo verändern, dann ist die Anzeige wieder korrekt (sieht klasse aus, wie machst du das?). Was zum totalen Glück noch fehlt ist die Möglichkeit, das Control direkt mit der maus zu ziehen. Und noch was. Wenn ich ein Control, das die 8 Punkte angezeigt hat, bewege, wandern die Punkte nicht mit - am besten einfach ausblenden.

    Edit: Mehr Probleme...
    Woran liegt das grundsätzliche LAG? z.B., wenn man ein neues Control anlegt, dauert es einen Augenblick, bis man den nächsten Punkt eingeben kann...
    Und der HotKey für S funktioniert nicht... zumindest bei mir.

    Trotzdem weiter so,
    peethebee

  • Hm warum tritt das Problem bei mir nicht auf??? Nochmal genauer bitte, ihr fügt einen Button hinzu, nach den 3 Abfragen, klickt ihr einmal an der linken oberen ecke der Position des neuen Buttons und dann erscheint der neue Button schon und man kann ihn auf seine Größe ziehn, soweit hat alles funktioniert oder? Und wenn ihr dann auf den Button klickt, wird der Button verkleinert?

    Leider hab ich irgendwie einen Fehler mit der compilten Version. Die *.au3 Version geht, die *.exe nicht, da kommt ein "function name error".

    Dann das Problem, dass die Punkte nicht mitlaufen, das ist mir auch erst heute aufgefallen, ich hab sie jetzt mal nicht ausgeblendet sondern lass sie mitlaufen. Später wird sowieso noch ne Option hinzukommen, dass man die immer ausblenden kann.

    Control verschieben mit Maus kommt hoffentlich in der nächsten Version :)

    Der Hotkey für "S", in dem Script is eigentlich noch kein Hotkey drin.

    Das mit dem Lag ist ein Problem, ich weiß selbst noch nicht genau woran das liegt. Möglich wärs, dass es daran liegt, dass in der Hauptschleife ständig die Cursorinfo abgefragt wird, der Combo links abgefragt wird, ob ein anderes Control ausgewählt wurde und so weiter. Bei reiner Msg Abfrage ist es ja so, dass das Programm praktisch auf Leerlauf läuft, also kaum CPU-Auslastung verursacht bis ne $msg kommt(?). Ich weiß nicht ob es wirklich daran liegt, dass viele Sachen ständig ohne $msg abgefragt werden. Möglich wärs auch, dass es daran liegt, dass die "Abfrage-Funktionen" beim Hinzufügen von einem neuen Control unpraktisch geschrieben sind. Wird zum Beispiel der Text abgefragt, muss der Input erst erstellt werden. Das werd ich auch umschreiben, dass nur der Status verändert wird, mal schaun obs dadurch schneller wird.

  • Zitat

    Original von Markus
    Leider hab ich irgendwie einen Fehler mit der compilten Version. Die *.au3 Version geht, die *.exe nicht, da kommt ein "function name error".

    Hi,
    Welche Function ?
    Soweit ich weiß sind seit der 0.94 die Funktionen DLLSTRUCT_DELETE (o.ä.) rausgeflogen sind

    Gruß
    Wolke

  • ja genau, bei der *.exe kommt der Fehler:

    Local $p=DllStructCreate($struct)
    Local $p=^Error

    Error: Unknown function name

    Und was heißt das jetzt, oder was muss ich verändern dass es geht?

  • Du musst in der Libary in der die Funktion steht in der betreffenden Zeile (steht beides in der Fehlermeldung) einfach auskommentieren (;)

    Wobei eigendlich die betreffend Funktion beim einspielen der BETA Version getauscht werden müßte. Ich weiß aber nicht ob das automatsich passiert

    Vielleicht ist das bisher nur niemanden aufgefallen ??

    Eigendlich sollte man solche Fehler in englischen Forum posten, dann sollten die Entwickler die Libaries angepassen.

    Gruß
    Wolke

  • War mein Fehler, ich hab nicht genau gewusst was ich machen muss beim Updaten und hab deswegen nicht alle Dateien durch die der Beta-version ersetzen lassen^^ Jetzt gehts.

  • Hier die nächste Version:

    Neues:

    -Control kopiern mit "strg+c" (Baufenster muss aktiv sein und Control in combo ausgewählt)
    -Control einfügen mit "strg+v" (Baufenster muss aktiv sein)
    -Control entfernen mit "Entf" (Baufenster muss aktiv sein)
    -Control verschieben mit Maustaste, dazu Maustaste auf Control gedrückt halten und verschieben. Wichtig:
    Das Baufenster muss auf jeden Fall aktiv sein und das Control schon angewählt, sonst bleibt das Control evtl nicht mehr stehn :)

    Problem: Programm wird immer langsamer

    Einmal editiert, zuletzt von Markus (26. Januar 2006 um 19:44)

    • Offizieller Beitrag

    Hallo!

    Phantastisch! Läuft bei mir Top slüssig, alle neuen Funktionen gehen, Verschieben der Maus problemlos und live.
    Muss echt mal in den Quelltext schauen, muss geil gemacht sein. Kannst du mir vielleicht so beantworten, wie du die Punkte machst? Sind die von Windows?

    Einziges bekanntes Problem: Vorschläge sind schlecht, da sind meist Beispiele angegeben. Das sollte aber ein sinnvoller Vorgabewert sein. Beispiele entweder per Tooltip oder in der Beschreibung (evtl. zusätzliches Label).

    Sonst aber echt klasse.

    peethebee

  • Die Punkte sind einfach nur ein Bild (background.bmp)^^. Deswegen hören die Punkte auch irgendwann auf wenn man das Baufenster extrem vergrößert.

  • Ah! Hat mich doch gewundert^^ Hab mir auch überlegt ob du die Punkte oder die Quadrate meinst :)

    Das sind 8 schwarze Labels (6x6) deren Position entsprechend verändert wird. Im script haben sie die Variablen $nord_west_schieber, $nord_schieber usw.. Wenn sich jetzt die ausgewählte Controlvariable im Combo ändert, berechnet des Programm die Positionen der 8 Labels um das angewählte Control

    Code
    GUICtrlSetPos($nord_west_schieber,$control_x_pos[$nummer]-6,$control_y_pos[$nummer]-6)
    		GUICtrlSetPos($nord_schieber,$control_x_pos[$nummer]+$control_width[$nummer]/2-3,$control_y_pos[$nummer]-6)
    		GUICtrlSetPos($nord_ost_schieber,$control_x_pos[$nummer]+$control_width[$nummer],$control_y_pos[$nummer]-6)
    		GUICtrlSetPos($ost_schieber,$control_x_pos[$nummer]+$control_width[$nummer],$control_y_pos[$nummer]+$control_height[$nummer]/2-3)
    		GUICtrlSetPos($sued_ost_schieber,$control_x_pos[$nummer]+$control_width[$nummer],$control_y_pos[$nummer]+$control_height[$nummer])
    		GUICtrlSetPos($sued_schieber,$control_x_pos[$nummer]+$control_width[$nummer]/2-3,$control_y_pos[$nummer]+$control_height[$nummer])
    		GUICtrlSetPos($sued_west_schieber,$control_x_pos[$nummer]-6,$control_y_pos[$nummer]+$control_height[$nummer])
    		GUICtrlSetPos($west_schieber,$control_x_pos[$nummer]-6,$control_y_pos[$nummer]+$control_height[$nummer]/2-3)

    Wird die Maustaste gedrückt und die Cursorinfo ist die ID eines Quadrats wird eine Schleife gestartet, die endet wenn die $msg Primary up ist , d.h. wird die Maustaste nur kurz gedrückt passiert nichts.
    Wird sie gehalten, dann wird über die MousePos je nachdem über welchem Quadrat die Maus ist die x_pos,y_pos,width und heigt des angewählten Controls berechnet und die restlichen Schieber wie oben im Code mitverschoben(und verschiedene andre Sachen gemacht).

    Dass sich der Cursor verändert, wenn manüber die Quadrate geht, funktioniert auch über die Cursorinfo

  • Hi,

    Ich würde gerne loben, aber bei mir hakt das irgendwie :(
    Es ist wie Katz und Maus spielen, ich bekomme die Punkte meißt nicht gepackt, bzw verschwindet das Control was ich verändern will im Hntergrund o.ä.

    Jedenfalls kommt bei mir nicht viel Freude auf :(

    Zu den Vorgaeben beim erstellen eines neuen Controls hatte peethebee ja angeregt, realistische Werte vorzugeben.

    Ich habe soetwas mal mit Stringsplit gemacht,

    Das heist es wird ein Wert in der Combobox angegeben + Infostring.
    Den infostring schneide ich dann hinterher einfach wieder ab, so habe ich immer nur gültige Werte im Control stehen

    Beispiel:

    Code
    ....
    $Input4 = GUICtrlCreateCombo($Zuordnung, 27, 95, 121, 20, -1, $WS_EX_CLIENTEDGE)
    GUICtrlSetData($Input4, "7703 Verwaltung|7704 VerkaufsTeam|7709 Azubis|,$Zuordnung)
     
    $Zuordnung_4stellig = StringSplit(GUICtrlRead($Input4)," ")
    .....

    Gruß
    Wolke

  • Hm das ist irgendwie komisch, bei mir funktioniert es echt perfekt und bei peethebee ja anscheinend auch. Hast du nur mit der *.au3 datei gearbeitet oder auch mit der *.exe , weil wie peethebee gesagt hat, müsste die ja auf jeden fall bei jedem gleich funktionieren. Woran könnte des liegen???? Es gibt eigentlich keinen Grund für diese Unterschiede, sehr komisch.