Kann man in einem GUI Seiten anlegen? Wie geht das denn? habe die HELP Datei von Autoit schonmal durchsucht, aber nichts gefunden darüber.
Beiträge von shakoon
-
-
Mit solchen schleifen habe ich noch nie gearbeitet xD
Ich mach mir immer ein GUI, setze dort meine festen Label oder Input felder rein, befülle die dann mit variablen, und das wars
Problem is halt auch, es kann passieren, das dort mal 30 Treffer angezeigt werden, ich aber in den GUI maximal 15 Zeilen bekomme.
-
Bei dem Screenshoot von dir z.B..
Da gibt es Reihe 0,1,2 und 3.
Ich habe in meinem Script 15 Reihen, die jeweils 8 spalten haben, die ich mit den Daten aus dem Array befüllen will.
Da mache ich mit
$aDetail[0][1] - $aDetail[0][2] - $aDetail[0][3] - $aDetail[0][4] - $aDetail[0][5] - $aDetail[0][6] - $aDetail[0][7] - $aDetail[0][8]
$aDetail[1][1] - $aDetail[1][2] - $aDetail[1][3] - $aDetail[1][4] - $aDetail[1][5] - $aDetail[1][6] - $aDetail[1][7] - $aDetail[1][8]
$aDetail[2][1] - $aDetail[2][2] - $aDetail[2][3] - $aDetail[2][4] - $aDetail[2][5] - $aDetail[2][6] - $aDetail[2][7] - $aDetail[2][8]
usw. bis
$aDetail[15][1] - $aDetail[15][2] - $aDetail[15][3] - $aDetail[15][4] - $aDetail[15][5] - $aDetail[15][6] - $aDetail[15][7] - $aDetail[15][8]
Aber wenn ich z.B. nur 5 Zeilen finde im Array, dann hat er nen Fehler bei zeile 6, weil die ja außerhalb des Bereichs liegt.
CodeGUICtrlCreateLabel($aDetail[6][0], $labelxs1, $labelyz7, $labelbreites1, $labelhoehez7, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlCreateLabel(^ ERROR
Der Array Code von dir:
Code
Alles anzeigenLocal $sFile = 'U:\Automatisch Buchen\Programm\artikeldispo.txt' Local $sRead = FileRead($sFile) Local $sPattern = '\d+;135\.01\.052\.00[^\n]+' Local $aLines = StringRegExp($sRead, $sPattern, 3) ; wenn Zeilen gefunden -> 2D Array mit allen Einzelwerten erstellen ; oder statt in 2D Array zu schreiben, gleich die Einzelwerte in deine GUI eintragen If IsArray($aLines) Then Local $aDetail[UBound($aLines)][9] Local $aSplit For $i = 0 To UBound($aLines) -1 $aSplit = StringSplit($aLines[$i], ';', 2) For $j = 0 To UBound($aSplit) -1 $aDetail[$i][$j] = $aSplit[$j] Next Next ; _ArrayDisplay($aDetail) EndIf
befüllt wird sowas hier:
Code
Alles anzeigenGUICtrlCreateLabel("Pos. Nr.", $labelxs1, $labelyz1-50, $labelbreites1, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Artikelnummer", $labelxs2, $labelyz1-50, $labelbreites2, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Beschreibung", $labelxs3, $labelyz1-50, $labelbreites3, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Menge Reserviert", $labelxs4, $labelyz1-50, $labelbreites4, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Projekt", $labelxs5, $labelyz1-50, $labelbreites5, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Lieferdatum", $labelxs6, $labelyz1-50, $labelbreites6, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Status Top-PA", $labelxs7, $labelyz1-50, $labelbreites7, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Top PA Nr.", $labelxs8, $labelyz1-50, $labelbreites8, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD) GUICtrlCreateLabel("Top PA Beschreibung", $labelxs9, $labelyz1-50, $labelbreites9, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER)) GUICtrlSetBkColor(-1, $labelbgcolorh) GUICtrlSetColor(-1, $labeltextcolorh) GUICtrlSetFont(-1, $fontsizelabelh, $FW_BOLD
-
Nochmal ne kurze Frage xD
habe jetzt alles soweit hinbekommen und es Fuktioniert auch, aber gehen wir mal davon aus, ich habe nur 6 zeilen als treffer, dann werden die ersten 6 zeilen auch wunderbar angezeigt, aber bei folgendem kommt dann ein fehler. Wie bekommt man das denn am einfachsten hin, wenn $aDetail[6][0] keine Daten hat, das dann z.B. "0" oder ein "-" angezeigt werden?
-
Jap, sorry war mein Fehler xD
hatte eben noch ein paar Spalten erweitern, aber vergessen
Local $aDetail[UBound($aLines)][9]
von 5 auf 9 zu erhöhen
Danke vielmals an euch
-
Hallo Bugfix
Dein oberes Beispiel habe ich jetzt mal ausprobiert,
Aber irgendwie, findet er dann nur den gesuchten wert, und die anderen spalten werden nicht befüllt xD
Woran könnte das liegen?
-
Ok danke schonmal für die schnelle Antwort
Da muss ich mich jetzt erstmal reinarbeiten xD
Kann ich hier auch den Pfad zur textdatei angeben?
Global $sData = C:\Blabla \Texttdatei.txt
Die Texttdatei hat immer wechselnde Informationen, die wird ständig aktualisiert. Daraus will ich dann die Zeilen heraus suchen mit dem Wert.
-
Hallo,
ich benötige mal wieder Hilfe
Ich habe eine Textdatei wo folgende Daten (Beispiel) drin stehen. Daten Immer mit Simikolon getrennt.
10;135.01.052.00;2;504194;2.19.050
80;135.09.082.00;2;509644;2.19.080
110;185.15.112.00;2;503741;2.19.077
610;185.15.112.00;1;305489;2.18.100
650;185.15.112.00;1;305889;2.18.101
630;185.15.112.00;1;305989;2.18.102
Nun möchte ich mit Autoit die Textdatei auslesen und alle Zeilen wo jetzt z.B. genau "185.15.112.00" drin vorkommt (wichtig, muss exakt übereinstimmen falls möglich) in Autoit bekommen.
Die Werte der einzelnen Zeilen, möchte ich dann in verschiedenen "GUICtrlCreateLabel" anzeigen lassen.
ist das irgendwie möglich? Sollte doch eigentlich kein Hexenwerk sein, aber ich hänge hier schon seit 1 Woche dran, und finde auch nichts Hilfreiches im Internet darüber
-
Vielen vielen dank Noch klingt das alles Spanisch für mich aber ich versuche jetzt mal den Code zu verstehen
Danke danke danke -
Ok xD da blick ich jetzt garnichtmehr durch
Habe es mal ausprobiert sieht schon ganz gut aus Aber z.B. Name 2 wichtelt für Name 2. Das darf ja eigentlich nicht sein Das man sich selbst wichtelt -
Vielen dank schonmal das ist denke ich das was ich brauche
Allerdings habe ich jetzt mit der Datenausgabe von dem Script so meine Problemchen xDIch habe dein Script jetzt als Function.
Und ich habe mir eine GUi erstellt. Durch Klicken auf den Button Wichteln, möchte ich ganz gerne, das in meinem GUI bei "Zufallsname1-8" dann ein Zufälliger Name Auftaucht.
Aber Name 1 und Zufallsname 1 darf z.B. nicht hintereinander stehen. Also so das man sich nicht selber zieht
ist das irgendwie umsetzbar mit einfachen mitteln?AutoIt
Alles anzeigenFunc Example2() Local $msg GUICreate("Wichtelgenerator") ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird GUISetState(@SW_SHOW) ; Zeigt das leere GUI-Fenster GUICtrlCreateLabel ( "Name1", 10, 20 , 100 , 15 ) GUICtrlCreateLabel ( "Name2", 10, 40 , 100 , 15 ) GUICtrlCreateLabel ( "Name3", 10, 60 , 100 , 15 ) GUICtrlCreateLabel ( "Name4", 10, 80 , 100 , 15 ) GUICtrlCreateLabel ( "Name5", 10, 100 , 100 , 15 ) GUICtrlCreateLabel ( "Name6", 10, 120 , 100 , 15 ) GUICtrlCreateLabel ( "Name7", 10, 140 , 100 , 15 ) GUICtrlCreateLabel ( "Name8", 10, 160 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname1, 150, 20 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname2, 150, 40 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname3, 150, 60 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname4, 150, 80 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname5, 150, 100 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname6, 150, 120 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname7, 150, 140 , 100 , 15 ) GUICtrlCreateLabel ( Zufallsname8, 150, 160 , 100 , 15 ) $Button1 = GUICtrlCreateButton ( "WICHTELN", 10, 200 , 100 , 20) $Button2 = GUICtrlCreateButton ( "SCHLIEßEN", 150, 200 , 100 , 20) ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button1 Example1() Case $msg = $Button2 Exit EndSelect WEnd GUIDelete() EndFunc ;==>Example1
-
Hallo,
Ich bin gerade dabei mir ein Script zu schreiben um Auslosungen zum wicheteln du erstellen.
Ich dachte mir ich erzeuge mit der Funktion "Random" Zufallszahlen von 1-10. und den Zahlen ordne ich dann die namen zu mit "if".
Jetzt habe ich aber das problem, ich habe z.B. 10 Namen, und zu jedem Namen soll eine anderer name zugeordnet werden, so dass man sich nicht selbst ziehen kann.Könnt ihr mir verraten wie ich das umsetzen kann?
-
Vielen vielen dank für die schnelle Hilfe
Ich lass es aber lieber mal so wie ich es hatte, da blicke ich wenigstens durch
Für die nachwelt hier nochmal das komplette funktionierende Script
AutoIt
Alles anzeigenHotKeySet("{ESC}", "Terminate") Func Terminate() Exit EndFunc $Input = InputBox("Arbeitspositionen", "Bitte gib den Code für die Arbeitspositionen an", "", "", -1, -1, 0, 0) $Input = StringLeft($Input & '000000000', 9) $var1 = StringSplit($Input,"") If $var1[1] = 0 Then ShellExecuteWait ("nix1.au3") If $var1[1] = 1 Then ShellExecuteWait ("5min1.au3" ) If $var1[1] = 2 Then ShellExecuteWait ("istsoll1.au3" ) Sleep (300) If $var1[2] = 0 Then ShellExecuteWait ("nix2.au3") If $var1[2] = 1 Then ShellExecuteWait ("5min2.au3" ) If $var1[2] = 2 Then ShellExecuteWait ("istsoll2.au3" ) Sleep (300) If $var1[3] = 0 Then ShellExecuteWait ("nix3.au3") If $var1[3] = 1 Then ShellExecuteWait ("5min3.au3" ) If $var1[3] = 2 Then ShellExecuteWait ("istsoll3.au3" ) Sleep (300) If $var1[4] = 0 Then ShellExecuteWait ("nix4.au3") If $var1[4] = 1 Then ShellExecuteWait ("5min4.au3" ) If $var1[4] = 2 Then ShellExecuteWait ("istsoll4.au3" ) Sleep (300) If $var1[5] = 0 Then ShellExecuteWait ("nix5.au3") If $var1[5] = 1 Then ShellExecuteWait ("5min5.au3" ) If $var1[5] = 2 Then ShellExecuteWait ("istsoll5.au3" ) Sleep (300) If $var1[6] = 0 Then ShellExecuteWait ("nix6.au3") If $var1[6] = 1 Then ShellExecuteWait ("5min6.au3" ) If $var1[6] = 2 Then ShellExecuteWait ("istsoll6.au3" ) Sleep (300) If $var1[7] = 0 Then ShellExecuteWait ("nix7.au3") If $var1[7] = 1 Then ShellExecuteWait ("5min7.au3" ) If $var1[7] = 2 Then ShellExecuteWait ("istsoll7.au3" ) Sleep (300) If $var1[8] = 0 Then ShellExecuteWait ("nix8.au3") If $var1[8] = 1 Then ShellExecuteWait ("5min8.au3" ) If $var1[8] = 2 Then ShellExecuteWait ("istsoll8.au3" ) Sleep (300) If $var1[9] = 0 Then ShellExecuteWait ("nix9.au3") If $var1[9] = 1 Then ShellExecuteWait ("5min9.au3" ) If $var1[9] = 2 Then ShellExecuteWait ("istsoll9.au3" ) Sleep (300)
-
Danke schonmal,
aber glaube das löst nicht meine Aufgabe, das Script soll ja wie folgt funktionieren.
Wenn Zeichen 1 in Code = 1 dann starte 5min1.au3
Wenn Zeichen 2 in Code = 1 dann starte 5min2.au3
Wenn Zeichen 3 in Code = 1 dann starte 5min3.au3
Wenn Zeichen 4 in Code = 0 dann starte nix4.au3
Wenn Zeichen 5 in Code = 2 dann starte istsoll5.au3
Wenn zeichen 6 ist leer dann starte nix6.au3
Wenn zeichen 7 ist leer dann starte nix7.au3
Wenn zeichen 8 ist leer dann starte nix8.au3
Wenn zeichen 9 ist leer dann starte nix9.au3 -
Hallo,
Ich habe ein kleines problem und komme nicht weiter.
Ich muss dazu sagen das ich noch ein Anfänger bin Habe bisher immer durch ausprobieren überlebt Aber hier komme ich nicht weiter.Problem ist folgendes:
Ich habe eine Inputbox, in der ich Zahlen eingebe. Entweder 0,1 oder 2.
Maximal ist diese Zahl 9 stellen lang. Es kann aber auch mal sein, das ich nur 2 oder nur 4 stellen eingebe.Wenn ich alle 9 stellen in meine Inputbox eingebe, funktioniert mein Script wunderbar, aber sobald ich weniger als 9 eingebe kommt ein ERROR.
Kann mir da jemand helfen? das wenn ich nur 4 Zahlen eingebe, das er mir alle 5 Zahlen danach als 0 wiedergibt?AutoIt
Alles anzeigenHotKeySet("{ESC}", "Terminate") Func Terminate() Exit EndFunc $Input = InputBox("Arbeitspositionen", "Bitte gib den Code für die Arbeitspositionen an", "", "", -1, -1, 0, 0) $var1 = StringSplit($Input,"") $10 = $var1[1] $20 = $var1[2] $30 = $var1[3] $40 = $var1[4] $50 = $var1[5] $60 = $var1[6] $70 = $var1[7] $80 = $var1[8] $90 = $var1[9] Sleep (500) If $10 = 0 Then ShellExecuteWait ( "nix1.au3") If $10 = 1 Then ShellExecuteWait ( "5min1.au3" ) If $10 = 2 Then ShellExecuteWait ( "istsoll1.au3" ) Sleep (300) If $20 = 0 Then ShellExecuteWait ( "nix2.au3") If $20 = 1 Then ShellExecuteWait ( "5min2.au3" ) If $20 = 2 Then ShellExecuteWait ( "istsoll2.au3" ) Sleep (300) If $30 = 0 Then ShellExecuteWait ( "nix3.au3") If $30 = 1 Then ShellExecuteWait ( "5min3.au3" ) If $30 = 2 Then ShellExecuteWait ( "istsoll3.au3" ) Sleep (300) If $40 = 0 Then ShellExecuteWait ( "nix4.au3") If $40 = 1 Then ShellExecuteWait ( "5min4.au3" ) If $40 = 2 Then ShellExecuteWait ( "istsoll4.au3" ) Sleep (300) If $50 = 0 Then ShellExecuteWait ( "nix5.au3") If $50 = 1 Then ShellExecuteWait ( "5min5.au3" ) If $50 = 2 Then ShellExecuteWait ( "istsoll5.au3" ) Sleep (300) If $60 = 0 Then ShellExecuteWait ( "nix6.au3") If $60 = 1 Then ShellExecuteWait ( "5min6.au3" ) If $60 = 2 Then ShellExecuteWait ( "istsoll6.au3" ) Sleep (300) If $70 = 0 Then ShellExecuteWait ( "nix7.au3") If $70 = 1 Then ShellExecuteWait ( "5min7.au3" ) If $70 = 2 Then ShellExecuteWait ( "istsoll7.au3" ) Sleep (300) If $80 = 0 Then ShellExecuteWait ( "nix8.au3") If $80 = 1 Then ShellExecuteWait ( "5min8.au3" ) If $80 = 2 Then ShellExecuteWait ( "istsoll8.au3" ) Sleep (300) If $90 = 0 Then ShellExecuteWait ( "nix9.au3") If $90 = 1 Then ShellExecuteWait ( "5min9.au3" ) If $90 = 2 Then ShellExecuteWait ( "istsoll9.au3" ) Sleep (800)
-
Habe es jetzt mit den InputBoxen gemacht, da der barcodescanner ja immer ein Enter hinterher senden kann, und ich somit auch nicht auf ok klicken muss.
Und wenn mein Script dann fertig ist, startet es wieder die inputboxVielen dank
-
Guten morgen
Also ich habe jetzt diesen Code hier mal richtig ausprobiert:
AutoIt
Alles anzeigen$Input = InputBox("Barcode", "Bitte scanne den Zehner-Barcode", "10", "", -1, -1, 0, 0) ;$_read = GUICtrlRead($Input) If $Input = 10 Then MsgBox(0, "", "Tue was 10 sagt.") If $Input = 20 Then MsgBox(0, "", "Tue was 20 sagt.") If $Input = 30 Then MsgBox(0, "", "Tue was 30 sagt.") If $Input = 40 Then MsgBox(0, "", "Tue was 40 sagt.") If $Input = 50 Then MsgBox(0, "", "Tue was 50 sagt.") If $Input = 60 Then MsgBox(0, "", "Tue was 60 sagt.") If $Input = 70 Then MsgBox(0, "", "Tue was 70 sagt.") If $Input = 80 Then MsgBox(0, "", "Tue was 80 sagt.") If $Input = 90 Then MsgBox(0, "", "Tue was 90 sagt.") If $Input = 100 Then MsgBox(0, "", "Tue was 100 sagt.")
Das funktioniert alles einwandfrei, nur müssten wir es hinbekommen, das die Inputbox weg ist, und das Programm einfach im Hintergrund mitläuft, und wenn eine eingabe gemacht wird z.B. "10" dann startet das was "10" will.Das müsste doch eigentlich irgendwie leicht machbar sein, habe heute nacht mal gegoogelt, aber nicht so richtig über das Thema gefunden. Wir müssten doch eigentlich nur so ne art eingabescanner im script in schleife laufen lassen, und wenn was passiert, dann macht der was, und danach geht er wieder in diese Scan-Schleife
-
das weiß ich gerade auch nicht
Also der Barcodescanner scannt nicht nur den barcode und gibt mir dann die zahl 10 aus, sondern der sendet die 10 und direkt dabei im anschluss einen enter befehl.Vielleicht kann ich das auch irgendwie umstellen das er nur die zahl scannt. Muss ich mal gucken.
-
So eine Idee von mir, weiß aber nicht ob das irgendwie geht
Kann man die Eingabe vom Scanner z.B. "10undEnter" nicht als Hotkey einbauen?
Wenn 10undEnter eingegeben wird, dann starte funktion 10. Funktion 10 startet dann datei 10.au3
irgendwie so?
Der barcode Scanner sendet halt erst die 10 und dann Enter, also nicht gleichzeitig.
-
Leider bei unserem nicht
Wir haben nur die abgespeckte billige Version. Habe schon nachgefragt