1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. AutoMit

Beiträge von AutoMit

  • reguläre Suche - Verzeichnisnamen

    • AutoMit
    • 31. Januar 2017 um 15:22

    Danke Oscar, das ist eine gute Idee.

    Kannst Du das auch als reguläre Suche (siehe Beispiele 1 bis 3) formulieren?

    Ich würde gerne beim Thema reguläre Suche voran kommen, weil die Fragestelle "erste Fundstelle", "xte Fundstelle" und "letzte Fundstelle" in einer Zeichenkette häufiger vorkommt.

    Aus der Hilfe konnte ich bisher entnehmen:

    Falls "\" in dem ersetzen String vorkommt, so muss dieser gedoppelt werden.
    -> also \\ -> Findet alle tatsächlichen Backslashs (\)

    ^ für Zeilenanfang (ggf. nutzbar als "beginne am Zeilenanfang"?)

    $ fü Zeilenende (ggf. nutzbar als "beginne am Zeilenende"?)

    Über das offset könnte ich die xte Fundstelle festlegen.

    StringRegExp ( "test", "pattern" [, flag [, offset]] )
    offset = Die Position des Strings, wo die Funktion beginnen soll (startet bei 1). Der Standard ist 1.

    Finde beginnende vom Zeilenende $ das erste Vorkommen, welchen zwichen / und / steht.

    Weiter komme ich leider nicht.

  • reguläre Suche - Verzeichnisnamen

    • AutoMit
    • 31. Januar 2017 um 13:52

    Hallo,

    vorab nebenbei gefragt: Gibt es bei AutoIt eine Funktion, um aus einem Pfad z.B. das letzte Unterverzeichnis (das erste Unterverzeichnis, das xte Unterverzeichnis) auszulesen oder würde man das mit StringRegExp (auslesen) bzw. StringRegExpReplace (entfernen) machen müssen?

    Wer mag beim Thema reguläre Suche helfen?

    StringRegExp($Verzeichnis_mit_den_Daten, regulärer Suchausdruck)

    Wie schreibt man, dass man das erste Vorkommen von "\ beliebige Zeichen \" bzw. das letzte Vorkommen von "\ beliebige Zeichen \" bzw. das xte Vorkommen von "\ beliebige Zeichen \ in dem String sucht?

    (1)

    Wie kann ich den letzten Ordner "01" aus dem Pfad mit StringRegExp (reguläre Suche) oder anderweitig (a) entfernen bzw. (b) in einer Variablen speichern?

    $Verzeichnis_mit_den_Daten = "d:\test\01\05\01\01\test.txt"

    (2)

    Wie kann ich den letzten Ordner "01" aus dem Pfad mit StringRegExp (reguläre Suche) oder anderweitig (a) entfernen bzw. (b) in einer Variablen speichern?

    $Verzeichnis_mit_den_Daten = "d:\test\01\05\01\01"

    (3)

    Wie kann ich das dritte Unterverzeichn (hier: "05") aus dem Pfad mit StringRegExp (reguläre Suche) oder anderweitig (a) entfernen bzw. (b) in einer Variablen speichern?

    $Verzeichnis_mit_den_Daten = "d:\test\01\05\01\test.txt"
    $Verzeichnis_mit_den_Daten = ""d:\test\01\05\01"

    Danke - und einen gelungenen Wochenstart :)

  • DirMove - Verzeichnis verschieben

    • AutoMit
    • 28. Januar 2017 um 20:46

    Vielen Dank - habe das Thema grün gefärbt :)

  • DirMove - Verzeichnis verschieben

    • AutoMit
    • 22. Januar 2017 um 03:34

    Vielen Dank Bitnugger für die Ergänzung und Deine Hilfe :)

    Ich lasse das Thema noch offen. Vielleicht kann jemand noch etwas zu den Fragen aus Post 7 schreiben.

    Ein schönes Wochenende und Gute Nacht.

  • DirMove - Verzeichnis verschieben

    • AutoMit
    • 21. Januar 2017 um 13:57
    Zitat von Bitnugger

    Remarks
    If the source and destination are on different volumes or UNC paths are used then a copy/delete operation will be performed rather than a move.

    If the destination already exists and the overwrite flag is specified then the source directory will be moved inside the destination.

    Da wird man dann wohl nicht um ein temporäres Verzeichnis herumkommen...

    Ich habe das gerade mal so getestet:

    MoveDir
    AutoIt
    ;-- TIME_STAMP   2017-01-20 22:09:03
    
    
    #include <File.au3>
    
    
    Global $sHomeDir = 'R:\0 - Kopie\'
    Global $sSubDir  = '02\'
    Global $sTestDir = $sHomeDir & $sSubDir & $sSubDir & $sSubDir & $sSubDir
    Global $aFileList, $sSourceDir = $sHomeDir, $sDestinationDir = $sHomeDir & $sSubDir, $sDestinationDirTemp, $iMove, $iRemove
    
    
    $aFileList = _GetFileList($sDestinationDir)
    If @extended = 0 And FileExists($sTestDir) = 0 Then
    	ConsoleWrite('DirCreate: ' & $sTestDir & @CRLF)
    	Global $iDirCreate = DirCreate($sTestDir)
    	ConsoleWrite('$iDirCreate = ' & $iDirCreate & @CRLF)
    	For $i = 1 To 3 Step 1
    		FileWrite($sTestDir & '\Dummy_' & $i & '.txt', 'Dummytext = ' & $i)
    	Next
    EndIf
    
    
    While 1
    	$sSourceDir &= $sSubDir
    	If FileExists($sSourceDir) = 0 Then Exit	; dann gibt es nichts zu tun...
    
    
    	ConsoleWrite('$sSourceDir = ' & $sSourceDir & @CRLF)
    	$aFileList = _GetFileList($sSourceDir)
    	If @extended > 0 Then ExitLoop
    WEnd
    
    
    If $aFileList[0] > 0 Then
    	If $sSourceDir = $sDestinationDir Then
    		ConsoleWrite('$sSourceDir = $sDestinationDir' & @CRLF)
    		Exit	; dann gibt es nichts zu tun...
    	EndIf
    
    
    	ConsoleWrite(@CRLF & 'FileList in Directory: ' & $sSourceDir & @CRLF & _ArrayToString($aFileList, @CRLF) & @CRLF)
    	If StringRight($sDestinationDir, 1) = '\' Then	$sDestinationDir = StringTrimRight($sDestinationDir, 1)
    	$sDestinationDirTemp = $sDestinationDir & '_Temp'
    	ConsoleWrite(StringFormat('DirMove("%s", "%s")\n', $sSourceDir, $sDestinationDirTemp))
    	$iMove = DirMove($sSourceDir, $sDestinationDirTemp, $FC_NOOVERWRITE)
    	ConsoleWrite(@CRLF & '$iMove = ' & $iMove & @CRLF)
    
    
    	If $iMove = 1 Then
    		$iRemove = DirRemove($sDestinationDir, $DIR_REMOVE)	; remove files and subdirectories
    		ConsoleWrite('$iRemove = ' & $iRemove & @CRLF)
    
    
    		ConsoleWrite(StringFormat('DirMove("%s", "%s")\n', $sDestinationDirTemp, $sDestinationDir))
    		$iMove = DirMove($sDestinationDirTemp, $sDestinationDir, $FC_NOOVERWRITE)
    		ConsoleWrite(@CRLF & '$iMove = ' & $iMove & @CRLF)
    	EndIf
    EndIf
    
    
    Func _GetFileList($sPath)
    	$aFileList = _FileListToArray($sPath, "*", $FLTA_FILES, False)
    	If @error Then Return SetError(@error, 0, 0)
    
    
    	Return SetError(0, $aFileList[0], $aFileList)
    EndFunc
    Alles anzeigen


    Wie kann man das Script von Bitnugger erweitern, damit nur Verzeichnisse berücksichtigt werden?

    If $aFileList[0] > 0 Then ... bedeutet wohl, nur Dateien werden verschoben.

    Mein Ziel ist es, dass der Inhalt gleichnamiger Verzeichnisse verschoben wird.

    Verschoben werden sollen nur Verzeichnisse inklusive der Dateien (nicht einzelne Dateien, daher habe ich es mit DirMove versucht)


    So soll das Ergebnis aussehen


    R:\0 - Kopie\02\02\Test -> R:\0 - Kopie\02\Test

    Quelle:

    R:\0 - Kopie\02\02\Test\Dummy_1.txt
    R:\0 - Kopie\02\02\Test\Dummy_2.txt
    R:\0 - Kopie\02\02\Test\Dummy_3.txt

    Ergebnis:

    R:\0 - Kopie\02\Test\Dummy_1.txt
    R:\0 - Kopie\02\Test\Dummy_2.txt
    R:\0 - Kopie\02\Test\Dummy_3.txt

    Ein schönes Wochenende und Danke :)

  • DirMove - Verzeichnis verschieben

    • AutoMit
    • 21. Januar 2017 um 13:21

    Danke Bitnugger für den Workaround :)

    Zitat von alpines

    Dafür ist doch hinten die ,1 gedacht. Das setzt den Flag für $FC_OVERWRITE. Trotz Adminrechte ersetzt er die Dateien dennoch nicht.

    Ich hatte auch die Hoffnung, dass es überschrieben wird mit Flag = 1, daher in meinem ersten Post:
    DirMove ($Start, $Ziel, 1)
    Geht leider wirklich nicht.

    Im Total Commander funktioniert das ohne Probleme - es kommt keine Überschreibwarnung - F6 und der Inhalt des gleichnamigen Verzeichnisses ist eine Ordnerebene höher.
    So eine Funktion (API Aufruf?) suche ich für AutoIt, die einfach aufgerufen werden kann. Bis dahin versuche ich es mit dem Workaround und dem temp Verzeichnis.

    DirMove
    laut Hilfe
    "Wenn der Zielort schon existiert, und bei "flag" angegeben wird, dass überschrieben werden soll, so wird das Quellverzeichnis in das Zielverzeichnis verschoben."

    Das funktioniert scheinbar nicht, wie in der Hilfe beschrieben - oder verstehe ich die Beschreibung falsch?
    Wie ist der Satz aus der Hilfe zu verstehen?

  • auf einen Button in der Startleiste klicken

    • AutoMit
    • 20. Januar 2017 um 17:36

    Vielen Dank - das scheint kniffliger zu sein, als gehofft. Die Reihenfolge der Anwendungen auf der Startleiste kenne ich leider nicht, da diese ständig wechselt.

  • DirMove - Verzeichnis verschieben

    • AutoMit
    • 20. Januar 2017 um 17:34

    Hallo,

    wie verschiebe ich folgendes (ergibt derzeit Fehler 0, laut Hilfe: wenn das Verschieben des Ordners fehlschlug.):

    Der Inhalt von "R:\0 - Kopie\02\02" soll nach "R:\0 - Kopie\02" verschoben werden.


    $Start = "R:\0 - Kopie\02\02"
    $Ziel = "R:\0 - Kopie\02"
    DirMove ($Start, $Ziel, 1)

    Hingegen funktioniert:

    $Start = "R:\0 - Kopie\02\02"
    $Ziel = "R:\0 - Kopie\04"
    DirMove ($Start, $Ziel, 1)

    Danke und ein erfreuliches Wochenende :)

    PS:
    Ziel des Ganzen: Mehrfach verschachtelte Verzeichnisse werden solange 1 Ebene nach oben verschoben, bis im Zielverzeichnis mehr als 1 Element (mehr als 1 Datei oder 1 Verzeichnis) ist.
    Es kommt häufiger vor, dass bei mehrfach verschachtelten Verzeichnissen Unterverzeichnisse mit gleichem Namen vorhanden sind - wie z.B. in "R:\0 - Kopie\02\02".

  • auf einen Button in der Startleiste klicken

    • AutoMit
    • 20. Januar 2017 um 15:56

    Vielen Dank alpines - das klingt nach einer Herausforderung für ein freies Wochenende.

    Zu Deiner Frage - es sind bisher ausschließlich 2 Programme (Timonize und PC-Notizz!) eines Autoren, der meiner Meinung nach in Delphi programmiert (bin mir hier aber nicht 100%ig sicher).
    So weit ich mich erinnere, betrifft das nur diese beiden Programme von den rund 20 Fenstern, die ich mit AutoIt aktiviere - bei den anderen Fenstern klappt das problemlos.

    Nun würde gerne in diesem Thread wieder an das ursprüngliche Anliegen anknüpfen:
    "auf einen Button in der Startleiste klicken"

    Hast Du dafür auch eine Idee oder einen Lösungsansatz?

  • auf einen Button in der Startleiste klicken

    • AutoMit
    • 20. Januar 2017 um 14:33

    Hallo alpines,

    ich habe alle @SW Parameter ausgetestet - immer das gleiche Ergebnis (kein Minimieren per Mausklick möglich).

    Mit "WM_MESSAGEs" kenne ich mich bisher leider nicht aus. Welche Idee hast Du hier genau?


    Wenn es eine Lösung gibt, einen Button auf der Startleiste (nicht Systray) anzuklicken, wäre das etwas sehr nützliches (auch außerhalb des geschilderten Problems).

  • auf einen Button in der Startleiste klicken

    • AutoMit
    • 20. Januar 2017 um 14:03

    Hallo,

    wie kann ich auf einen Button in der Startleiste unter Windows 8 / 64 klicken, der die Teilzeichenkette "notepad" (von Unbenannt - Editor) hat?

    Gibt es dazu ggf. einen API Aufruf, falls es mit Boardmitteln nicht geht?

    Vielen Dank :)

    PS:

    Ein Hintergrund der Anfrage ist das Problem, dass es Fenster gibt, die nach dem minimieren (sie werden unsichtbar gemacht), nicht mit AutoIt so sichtbar gemacht werden können, dass sie anschließend per Mausklick minimiert werden können.
    Erst wenn man den zugehörigen Button auf der Startleiste mit der Maus anklickt, ist das Fenster wieder minimierbar.
    Wer sich für die Details interessiert, die sind hier im Codefenster.

    AutoIt
    Programm: PC-Notizz!
    Version: 6.05 (Achtung - neue Version 7.x hat eine andere Oberfläche)
    
    
    "[CLASS:Tfrm_Main; TITLE:PC-Notizz]"
    
    
    Wie zeige ich ein minimiertes Fenster (in Delphi programmiertt) wieder an, wenn es beim Minimieren auf unsichbtbar gesetzt wird?
    
    
    Die Abfrage der Fensterposition zeigt, dass das Fenster beim mnimieren an der gleichen Position bleibt.
    
    
    WinGetState hat den Wert 15, wenn das Fenster sichtbar ist.
    WinGetState hat den Wert 13, wenn das Fenster minimiert ist.
    Scheinbar wird das Fenster "nur" auf unsichtbar gesetzt.
    
    
    Daher habe ich es wieder sichtbar machen können mit:
    WinSetState("[ACTIVE]", "", @SW_SHOW)
    WinSetState("[ACTIVE]", "", @SW_RESTORE)
    
    
    Das hat wiederum einen Schönheitsfehler. Nach dem Befehl (egal welcher der beiden), kann ich das Fenster nicht mehr minimieren.
    Mausklick auf die "Minimieren-Schaltfläche" bleibt ohne Ergebnis.
    Tastenbefehl zum Minimieren aller Fenster funktioniert auch nicht - alle Fenster werden minimiert, außer dieses Fenster.
    
    
    Es scheint irgendwas blockiert zu werden. 
    Klicke ich auf den Button eines sichtbaren Fensters in der Startleiste, dann wird es minimiert und ein minimiertes wird angezeigt.
    Soweit die Theorie.
    
    
    Klicke ich auf den Button dieses Fensters in der Startleiste, passiert beim ersten Mausklick nichts sichtbares.
    Ab dem zweiten Mausklick verhält sich das Fenster wieder normal. Es kann wieder per Mausklick oder "alles minimieren" minimiert werden.
    
    
    Wenn ich Elemente im Fenster anklicke, kann ich zwar darin arbeiten, ich kann das Fenster verschieben, aber ich kann das Fenster nicht minimieren.
    
    
    Wie löse ich das Problem mit AutoIt? 
    Wie zeige ich ein Fenster dieser Art wieder an, wenn es "minimiert = unsichtbar" ist?
    
    
    Gibt es einen API Aufruf für so ein "störisches" Fenster oder einen anderen Trick?
    Alles anzeigen
  • Monitor Auflösung – Programmabsturz

    • AutoMit
    • 9. Januar 2017 um 21:27

    Vielen Dank Euch allen.

    Ich nutze jetzt die von Oscar empfohlene Funktion, die läuft fehlerfrei.

    Problem gelöst - grünen Haken gesetzt :)

  • Monitor Auflösung – Programmabsturz

    • AutoMit
    • 9. Januar 2017 um 14:23
    Zitat von Oscar

    Verwende alternativ "_WinAPI_EnumDisplayMonitors".


    Danke Oscar, das scheint eine gute Alternative zu sein.


    Zitat von BugFix

    Verwendest du AutoIt3.exe in 32- oder 64-Bit Version?
    Kompilierst du die Monitorauflösung.exe als 32- oder 64-Bit?

    Um Kompatibilitätsprobleme zu vermeiden verwende ich ausschliesslich die 32-Bit AutoIt Version und kompiliere als 32-Bit Anwendung.

    Das ist eine intererssante Frage.

    In den Programmpfaden vom „ISN Autoit Studio“ steht

    AutoIt3.exe (und nicht AutoIt3_x64.exe)
    und
    Aut2exe.exe (und nicht Aut2exe_x64.exe)


    Daher gehe ich davon aus, dass es die 32 bit Fassung ist - richtig?


    Gleiches gilt für die Verknüpfung - die auf AutoIt3.exe zeigt = 32 bit.

    Hat jemand von Euch mal unter Windows 8 obiges Script kompilliert und ausgeführt und kann sagen, ob das Script bei ihm fehlerfrei lief?

  • Monitor Auflösung – Programmabsturz

    • AutoMit
    • 9. Januar 2017 um 08:25
    Zitat von chip

    Und was passiert wenn es in Scite startest?

    Scite habe ich nicht mehr installiert. Ich nutze „ISN Autoit Studio“ als Editor - und dort funktioniert das Script 1a, wenn ich es aus dem Editor starte.

  • Monitor Auflösung – Programmabsturz

    • AutoMit
    • 9. Januar 2017 um 07:29

    Hallo,


    wenn ich folgendes Skript über eine Verknüpfung starte oder als kompilierte exe Datei, dann bricht das Programm mit der Fehlermeldung ab:


    Test Monitorauflösung.exe funktioniert nicht mehr
    Ein Problem hat die richtige Ausführung dieses Programms verhindert. Schließen Sie das Programm.


    Starte ich das Programm hingegen aus dem Editor, funktioniert es problemlos.


    Wahrscheinlich verträgt sich irgendein DLL Aufruf unter Windows 8/64 nicht?


    (1) ist im Skript eventuell ein Fehler enthalten?


    (2) wie kann man unter Windows 8/64 alternativ die Monitor Auflösung jedes einzelnen Monitors ermitteln, wenn mehrere Monitore an die Grafikkarte angeschlossen sind?

    AutoIt
    $a_Monitor_Anzahl_Aufloesung = _Funktion_Monitore_Aufloesung_()			;			Auflösung aller Monitore
    Global $Monitor_1_Desktop_Breite = $a_Monitor_Anzahl_Aufloesung[1][0]
    Global $Monitor_1_Desktop_Hoehe = $a_Monitor_Anzahl_Aufloesung[1][1]
    Global $Monitor_2_Desktop_Breite = $a_Monitor_Anzahl_Aufloesung[2][0]
    Global $Monitor_2_Desktop_Hoehe = $a_Monitor_Anzahl_Aufloesung[2][1]
    
    
    $msg_01 = $Monitor_1_Desktop_Breite & @CRLF & "($Monitor_1_Desktop_Breite)" & @CRLF
    $msg_02 = $Monitor_1_Desktop_Hoehe & @CRLF & "($Monitor_1_Desktop_Hoehe)" & @CRLF
    $msg_03 = $Monitor_2_Desktop_Breite & @CRLF & "($Monitor_2_Desktop_Breite)" & @CRLF
    $msg_04 = $Monitor_2_Desktop_Hoehe & @CRLF & "($Monitor_2_Desktop_Hoehe)" & @CRLF
    
    
    $msg = $msg_01 & @CR & $msg_02 & @CR & $msg_03 & @CR & $msg_04
    MsgBox (262144, "Zeile " & @ScriptLineNumber & " - " & @ScriptName,  $msg)
    
    
    
    
    ; - » - Funktion -  ---  ---   --- --------------------------------------------------------------------------
    
    
    
    
    Func _Funktion_Monitore_Aufloesung_()			;			Auflösung aller Monitore
    			ConsoleWrite (@ScriptLineNumber & @TAB & "Funktion = " & "Monitore_Aufloesung" & @CRLF)
    			Local $cbMonitorEnumProc = DllCallbackRegister("MonitorEnumProc", "ubyte", "ptr;ptr;ptr;int")
    			If @error Then Return SetError(1, 0, False)	
    			Local $strctCount = DllStructCreate("uint Count;uint Width[12];uint Height[12];int left[12];int top[12]")
    			If @error Then Return SetError(2, @error, False)
    			Local $iCount
    
    			DllStructSetData($strctCount, "Count", 0)
    
    			$Ret = DllCall("User32.dll", "ubyte","EnumDisplayMonitors","ptr", 0,"ptr", 0, "ptr", DllCallbackGetPtr($cbMonitorEnumProc), "ptr", DllStructGetPtr($strctCount))
    			If @error Or $Ret[0] = 0 Then Return SetError(3, @error, False)
    
    			DllCallbackFree($cbMonitorEnumProc)
    
    			$iCount = Int(DllStructGetData($strctCount, "Count"))
    
    			Local $aMonitors[$iCount+1][4] = [[$iCount]]
    
    			For $i = 1 To $iCount
    				$aMonitors[$i][0] = Int(DllStructGetData($strctCount, "Width",$i))
    				$aMonitors[$i][1] = Int(DllStructGetData($strctCount, "Height",$i))
    				$aMonitors[$i][2] = Int(DllStructGetData($strctCount, "left",$i))
    				$aMonitors[$i][3] = Int(DllStructGetData($strctCount, "top",$i))
    			Next
    
    			Return $aMonitors
    EndFunc
    
    
    Func MonitorEnumProc($hMonitor, $hdcMonitor, $lprcMonitor, $dwData)
    			Local $strctRECT = DllStructCreate("long left;long top;long right;long bottom", $lprcMonitor)
    			Local $strctCount = DllStructCreate("uint Count;uint Width[12];uint Height[12];int left[12];int top[12]", $dwData)
    			Local $iNumber = DllStructGetData($strctCount, "Count")
    			Local $Height = Int(DllStructGetData($strctRECT, "bottom"))-Int(DllStructGetData($strctRECT, "top"))
    			Local $Width = Int(DllStructGetData($strctRECT, "right"))-Int(DllStructGetData($strctRECT, "left"))
    
    			DllStructSetData($strctCount, "Width", $Width, $iNumber+1)
    			DllStructSetData($strctCount, "Height", $Height, $iNumber+1)
    			DllStructSetData($strctCount, "left", Int(DllStructGetData($strctRECT, "left")), $iNumber+1)
    			DllStructSetData($strctCount, "top", Int(DllStructGetData($strctRECT, "top")), $iNumber+1)	
    			DllStructSetData($strctCount, "Count", $iNumber+1)
    			Return True
    EndFunc
    Alles anzeigen


    Danke :)

  • Kindern etwas spielerisch beibringen - Schritt für Schritt Anleitungen

    • AutoMit
    • 5. Januar 2017 um 17:23

    Ich danke Euch allen für die sehr gute Hilfe!

    Auf in ein erfolgreiches 2017 :)

    Am Wochenende schaue ich mir in Ruhe die Codezeilen an, um etwas daraus zu zaubern. Ich hoffe, meine kleinen Geister lassen mir die Zeit :)

    Grünen Haken gesetzt :)

  • Kindern etwas spielerisch beibringen - Schritt für Schritt Anleitungen

    • AutoMit
    • 4. Januar 2017 um 01:36
    Zitat von Oscar

    Hier mal ein erster Versuch mit Text-Label:

    Vielen Dank Oscar. Dein Entwurf in Post 9 sieht optisch einfach (und) gut aus!

    Kannst Du bitte an zwei Stellen noch ewtas ergänzen (sind 2 kleine optische Sachen)?

    (a)
    Derzeit kann man pro Ziel-Feld mehrere Text-Labels raufsetzen.
    Was muss im Code ergänzt werden, dass Text-Labels im Ziel nicht übereinander gestapelt werden können? Bzw. wenn ein neues Text-Label reingezogen wird, dass ein bisheriges dort vorhandenes wieder auf die Oberfläche gelegt wird?

    (b)
    Wenn man ein Text-Label richtig in ein Ziel gezogen hat, wird auf grün umschaltet.
    Zieht man es wieder heraus, also wenn das Ziel wieder leer ist, bleibt der Status auf grün und schaltet nicht auf rot um.


    Übrigens - Deine Idee, eine Teillösung als richtig (grün) zu makieren, ist für Kinder eine gute Motivation, um schneller Erfolge zu erzielen.


    Als zusätzliche Motivation werde ich versuchen, einen Counter zu ingegrieren, wieviele Versuche notwendig waren, um alle Text-Labels richtig zu plazieren.
    Einmal für das Einzel-Feld rechts neben dem Ziel.
    Und einmal als Summe für alle Felder.

    Gute Nacht - und vielen Dank an alle helfenden Hände :)

  • Kindern etwas spielerisch beibringen - Schritt für Schritt Anleitungen

    • AutoMit
    • 3. Januar 2017 um 18:21
    Zitat von chesstiger

    Die richtige Reihenfolge ist 1, 2, 3. Dann wird der Hintergrund grün.


    Wirf bitte noch mal einen Blick drauf. Als Codeknacker funktioniert auch die Lösung
    leer - 2 - 3
    (also wenn Feld 1 frei bleibt, schaltet der Hintergrund auf grün um)

    (edit)

    ... schmunzel, Du hast es ist der Zwischenzeit schon selbst gemerkt. Du bist um einiges schneller als ich.
    Lösung 1 - 2 - 3

    Danke :)

  • Kindern etwas spielerisch beibringen - Schritt für Schritt Anleitungen

    • AutoMit
    • 3. Januar 2017 um 17:44
    Zitat von chesstiger

    P.S.: Das ist nicht violett, das ist pink!

    Ich gebe zu, ich habe die Farbe von pink in violett geändert ... und das, obowhl ein pinker Tiger in der Nähe ist :)

    Deine neue Umsetzung sieht interessant aus. Ich zerlege das gerade, um es zu verstehen. Danke Euch beide!

  • Doppelklick auf die Fensterleiste (Caption) einer AutoIt GUI auswerten

    • AutoMit
    • 3. Januar 2017 um 17:09

    @alpines - vielen Dank - ich habe den Beitragstitel entsprechend auf "Fensterleiste" angepasst - ja, die meine ich.

    Problem gelöst :) Grün gesetzt.

    Danke Euch beiden, das ist eine super Hilfe!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™