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. Yaerox

Beiträge von Yaerox

  • Happy Birthday chesstiger (15) und Xenobiologist (33)

    • Yaerox
    • 12. November 2012 um 10:57

    Auch Gratulation von mir.

    Gilt übrigens auch für „HassanMullah (44)“ ;)

  • (!) RestrictControlRegExp-UDF - automatisch zu setzende Zeichen

    • Yaerox
    • 25. Oktober 2012 um 09:58

    Vielen Dank dafür Mega. Ich werd mal schauen was ich zum schluss dann nehme, bzw. was besser in der Handhabung ist. Danke soweit :)

  • (!) RestrictControlRegExp-UDF - automatisch zu setzende Zeichen

    • Yaerox
    • 22. Oktober 2012 um 11:48

    Hallo Com,

    ich arbeite momentan mit der UDF von 'peethebee': RestrictControlRegExp-UDF - Fehleingaben direkt verhindern, Eingabentypen festlegen und habe auch schon mit ihm gesprochen gehabt.

    Mein Anliegen: Ich habe einen einzeiligen Input Ctrl indem eine Uhrzeit eingegeben werden soll. D.h. die UDF soll nach 2 Zeichen automatisch ein Zeichen einfügen.
    Die Variante einfach 2 InputCtrls zu nehmen ist mir bekannt aber mir wäre wenn möglich die kleine Anpassung der UDF 1000x lieber.

    Wahrscheinlich muss in der

    [autoit]

    Func _RegEx_RestrictControl_check($hWnd, $msg, $wParam, $lParam)

    [/autoit]

    etwas hinzugefügt werden.

    main.au3
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include "RestrictControlRegExp.au3"

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

    _RegEx_RestrictControl_setup (1) ; prepare for up to 20 Controls to restrict

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

    Global $hGUI = GUICreate("", 120, 50)
    Global $hINPUT = GUICtrlCreateInput("", 10, 5, 100, 20, $ES_WANTRETURN)
    _RegEx_RestrictControl_add ($hINPUT, "^[012]{1}[0-9]{1}\:[0-6]{1}[0-9]{1}$", "13:37")

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

    GUISetState(@SW_SHOW, $hGUI)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit", $hGUI)

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

    ; Wechsle in den OnEvent Modus
    Opt("GUIOnEventMode", 1)

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

    ; Schleife
    While 1
    Sleep(100) ; beschäftigen, damit die CPU-Auslastung nicht zu hoch geht
    WEnd

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]

    Mache ich aus:

    UDF 'RestrictControlRegExp.au3'
    [autoit]

    ; ===============================================================================
    ;
    ; UDF Name: RestrictControlRegExp.au3
    ; Description: This UDF can restrict the text typed into input controls live
    ; while typing based on a given Regular Expression.
    ; Requirement: AutoIt 3.2.0.1 or higher
    ; Author: peethebee ([email='peethebee@gmx.de'][/email], http://www.autoit.de)
    ; Notice: based on a script by gafrost in this thread:
    ; http://www.autoitscript.com/forum/index.ph…=guiregistermsg
    ;
    ; ===============================================================================

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

    #include-once

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

    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    ;Global Const $WM_COMMAND = 0x0111
    ;Global Const $EN_CHANGE = 0x300

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

    Global $array__RegEx_RestrictControl[1][4]
    Global $array__RegEx_RestrictControl_id_count = 0

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

    ;===============================================================================
    ;
    ; Function Name: _RegEx_RestrictControl_setup
    ; Description: Sets up the features of this UDF.
    ; Parameter(s): $_re_rc_max_controls (opotional, default 10)
    ; defines how many controls gan be controlled at maximum
    ; Requirement(s): This UDF included
    ; Return Value(s): None.
    ; Author(s): peethebee
    ;
    ;===============================================================================
    Func _RegEx_RestrictControl_setup($_re_rc_max_controls = 10)
    GUIRegisterMsg($WM_COMMAND, "_RegEx_RestrictControl_check")
    ReDim $array__RegEx_RestrictControl[$_re_rc_max_controls][4]
    $array__RegEx_RestrictControl_id_count = 0
    EndFunc ;==>_RegEx_RestrictControl_setup

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

    ;===============================================================================
    ;
    ; Function Name: _RegEx_RestrictControl_add
    ; Description: Sets up the controlling for a control.
    ; Parameter(s): $_re_rc_ctrlid
    ; ID of the control to be monitored
    ; $_re_rc_regex_pattern
    ; RegExp which has to be fullfilled or fullfillable
    ; $_re_rc_valid_string (optional, default "")
    ; Valid string for testing if RegExp can still be fullfilled.
    ; Requirement(s): This UDF included
    ; Return Value(s): None.
    ; Author(s): peethebee
    ;
    ;===============================================================================
    Func _RegEx_RestrictControl_add($_re_rc_ctrlid, $_re_rc_regex_pattern, $_re_rc_valid_string = "")
    $array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][0] = $_re_rc_ctrlid
    $array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][1] = $_re_rc_regex_pattern
    $array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][2] = $_re_rc_valid_string
    $array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][3] = ""
    $array__RegEx_RestrictControl_id_count += 1
    EndFunc ;==>_RegEx_RestrictControl_add

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

    ;===============================================================================
    ;
    ; Function Name: _RegEx_RestrictControl_check
    ; Description: Internal processing function - not to be called from outside!
    ; Parameter(s): [...]
    ; Requirement(s): This UDF included
    ; Return Value(s): None.
    ; Author(s): peethebee (using gafrost's work as a basis)
    ;
    ;===============================================================================
    Func _RegEx_RestrictControl_check($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = _HiWord($wParam)
    Local $nID = _LoWord($wParam)
    Local $hCtrl = $lParam

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

    ;~ MsgBox(0, "", UBound($array__RegEx_RestrictControl, 1))
    For $_re_rc_i = 0 To UBound($array__RegEx_RestrictControl, 1) - 1
    If $nID = $array__RegEx_RestrictControl[$_re_rc_i][0] Then
    If $nNotifyCode = $EN_CHANGE Then
    ; Check RegEx and set text
    For $_re_rc_j = 0 To StringLen($array__RegEx_RestrictControl[$_re_rc_i][2])
    $_re_rc_regex_res = 1
    ;~ MsgBox(0, "regexp string", GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j))
    If StringRegExp (GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j), $array__RegEx_RestrictControl[$_re_rc_i][1]) Then ExitLoop
    $_re_rc_regex_res = 0
    Next
    If $_re_rc_regex_res = 1 Then
    ; save string as "good" value for later resettability
    $array__RegEx_RestrictControl[$_re_rc_i][3] = GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0])
    Else
    ; reset Text to last known good value
    GUICtrlSetData($array__RegEx_RestrictControl[$_re_rc_i][0], $array__RegEx_RestrictControl[$_re_rc_i][3])
    EndIf
    EndIf
    EndIf
    Next
    ; Proceed the default Autoit3 internal message commands.
    ; You also can complete let the line out.
    ; !!! But only 'Return' (without any value) will not proceed
    ; the default Autoit3-message in the future !!!
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_RegEx_RestrictControl_check

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

    ; helping function by gafrost
    Func _HiWord($x)
    Return BitShift($x, 16)
    EndFunc ;==>_HiWord

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

    ; helping function by gafrost
    Func _LoWord($x)
    Return BitAND($x, 0xFFFF)
    EndFunc ;==>_LoWord

    [/autoit]

    folgendes:

    bearbeitete Funktion
    [autoit]

    Func _RegEx_RestrictControl_check($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = _HiWord($wParam)
    Local $nID = _LoWord($wParam)
    Local $hCtrl = $lParam

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

    ;~ MsgBox(0, "", UBound($array__RegEx_RestrictControl, 1))
    For $_re_rc_i = 0 To UBound($array__RegEx_RestrictControl, 1) - 1
    If $nID = $array__RegEx_RestrictControl[$_re_rc_i][0] Then
    If $nNotifyCode = $EN_CHANGE Then
    ; Check RegEx and set text
    For $_re_rc_j = 0 To StringLen($array__RegEx_RestrictControl[$_re_rc_i][2])
    $_re_rc_regex_res = 1
    ;~ MsgBox(0, "regexp string", GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j))
    If StringRegExp (GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j), $array__RegEx_RestrictControl[$_re_rc_i][1]) Then ExitLoop
    $_re_rc_regex_res = 0
    Next
    If $_re_rc_regex_res = 1 Then
    ; save string as "good" value for later resettability
    $array__RegEx_RestrictControl[$_re_rc_i][3] = StringMid(GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]), 1, 2) & ":" & StringMid(GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]), 4, 2)
    Else
    ; reset Text to last known good value
    GUICtrlSetData($array__RegEx_RestrictControl[$_re_rc_i][0], $array__RegEx_RestrictControl[$_re_rc_i][3])
    EndIf
    EndIf
    EndIf
    Next
    ; Proceed the default Autoit3 internal message commands.
    ; You also can complete let the line out.
    ; !!! But only 'Return' (without any value) will not proceed
    ; the default Autoit3-message in the future !!!
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_RegEx_RestrictControl_check

    [/autoit]

    So wird aus der Eingabe '1234' -> 12:4, aus '12345' -> 12:45 ... Der Doppelpunkt benötigt immernoch eine Eingabe, aber es ist egal welche.

    Könnt ihr mir vll. helfen dies wie oben erwähnt zu verbessern?
    'peethebee' meinte noch:

    Zitat

    Hab den Code gerade nicht da, aber auch keine Zeit im Moment. Der Reset-Part ist vermutlich die falsche Stelle für die Änderung. Mach das außerhalb der Fallunterscheidung (danach denke ich).[...]


    Grüße und schonmal Danke im voraus

  • RestrictControlRegExp-UDF - Fehleingaben direkt verhindern, Eingabentypen festlegen

    • Yaerox
    • 18. Oktober 2012 um 09:14

    Erstmal danke für die UDF, ist nun zwar schon eine ganze Weile her, aber ich habe genau solch eien UDF grad gebraucht.

    Eine kleine Idee meiner Seits wäre es vielleicht noch bei falscher Eingabe ein Infofenster hinzuzufügen wie es bei GUICtrlCreateInput mit $ES_NUMBER kommt.
    Ich bin noch ein Anfänger daher weiss ich nicht ob dies einfach zu realisieren ist aber vll. liest es ja noch jemand und hätte Spaß daran :)

    Grüße

  • Multiplayer-Game 'Kurven-Spiel'

    • Yaerox
    • 18. Oktober 2012 um 08:53

    Eine Hilfe wie das Spiel funktioniert wäre vll. ganz Hilfreich ... ^^

  • GUICtrlCreateInput "definieren/beschränken"

    • Yaerox
    • 18. Oktober 2012 um 08:44

    Erstmal danke für die tollen Vorschläge :)

    Ich habe mich für die Variante der

    Zitat von funkey


    RestrictControlRegExp-UDF - Fehleingaben direkt verhindern, Eingabentypen festlegen
    ;)

    entschieden und bin hell auf begeistert. Wirklich großartige UDF, in diesem Sinne Danke an 'funkey' für den Verweis und selbstverständlich ein großes Danke an 'peethebee'.

    Hier mein Ergebnis:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include "RestrictControlRegExp.au3"

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

    _RegEx_RestrictControl_setup (1) ; prepare for up to 20 Controls to restrict

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

    Global $hGUI = GUICreate("", 120, 50)
    Global $hINPUT = GUICtrlCreateInput("", 10, 5, 100, 20, $ES_WANTRETURN)
    _RegEx_RestrictControl_add ($hINPUT, "^[012]{1}[0-9]{1}\:[0-6]{1}[0-9]{1}$", "13:37")

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

    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • GUICtrlCreateInput "definieren/beschränken"

    • Yaerox
    • 17. Oktober 2012 um 16:29

    Hallo zusammen,

    ich habe die letzte Stunde damit verbracht mit Hilfe der SuFu und Google eine Lösung zu finden, leider erfolgslos.
    Ich weiss es gibt schon einige Themen, allerdings habe ich keins mit einer Einschränkung meines bestrebens gefunden :/

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $GUI = GUICreate("", 320, 50)
    Global $INPUT = GUICtrlCreateInput("", 10, 5, 300, 20)

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

    GUISetState(@SW_SHOW, $GUI)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Ich würde gerne diese InputCtrl wie folgt beschränken und im Falle einer Eingabe überwachen, sprich:

    Wenn das Feld ausgewählt worden ist für eine Eingabe, dann beschränke wie folgt:
    - erste Zeichen darf nur eine Zahl von 0-2 sein
    - zweite Zeichen darf nur eine Zahl von 0-9 sein
    - dann soll automatisch ein ":" hinzugefügt werden
    - dritte Zeichen darf nur eine Zahl von 0-6 sein
    - vierte Zeichen darf nur eine Zahl von 0-9 sein

    Herauskommen soll, man glaubt es kaum, eine Uhrzeiteingabe.

    Ist dies überhaupt möglich ohne ein eigenen Input über einen weiteren GUI zu schreiben?

    Grüße Yaerox

  • AutiIt Schleife soll beendet werden, sobald exe beendet ist.

    • Yaerox
    • 15. Oktober 2012 um 09:16

    Ahh okay, hast recht AspirinJunkie ^^

    Tut mir leid, hab das vorhin wohl falsch verstanden :P

  • AutiIt Schleife soll beendet werden, sobald exe beendet ist.

    • Yaerox
    • 15. Oktober 2012 um 08:10

    Wäre RunWait() nicht auch eine Alternative?

  • Zeile auslesen

    • Yaerox
    • 15. Oktober 2012 um 08:08

    Ich bin jetzt noch kein Superuser mit AutoIt, aber ich denke ich würde den String beim Semikolon jedes mal 'splitten' und die einzelnden Wörter in ein Array schreiben. Wenn du dann immer den zweiten Teil oder so brauchst kannst du diesen ja einfach aus dem Array holen ;)

    Grüße

  • Visualisierungs Testumgebung ...

    • Yaerox
    • 12. Oktober 2012 um 11:14

    Wahrscheinlich nicht die Beste Lösung, aber ich bin zufrieden :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>
    #include <WinAPI.au3>
    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.

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

    ;~ Menü erstellen
    Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
    Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.

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

    ;~ Button erstellen
    Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.

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

    ;~ Progress Bar + Label
    Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
    Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.

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

    ;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
    Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
    _GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,

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

    ;~ Listview_bot ... Arbeitsplaene in der Warteschlange
    Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
    Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
    _GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
    _GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT)
    ;====================================== Aufgabenliste-GUI erstellen ======================================

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

    ;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
    GUISetState(@SW_SHOW, $window)

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

    ;~ Schleife
    While 1
    Switch GUIGetMsg()
    Case $datei_beenden
    Exit
    Case $go_button
    go()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Func go()
    Local $carray[3]
    $carray[0] = 0xFFFF00
    $carray[1] = 0x00ff00
    $carray[2] = 0xff0000
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
    Local $i
    Local $zaehler
    Global $lvitems[3]
    $zaehler = 0
    For $i = 0 To 2
    $lvitems[$i] = GUICtrlCreateListViewItem(Int(Random(0, 24)) & ":" & Int(Random(0, 60)) & " |Arbeitsplan " & $zaehler, $bot_listview)
    $zaehler = $zaehler +1
    Next

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

    $zaehler = 0
    $i = 1
    Local $ii = 0
    Local $wait = 100
    Local $s = 0
    Do
    GUICtrlSetData($progress, 0)

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

    _GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
    _GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt" & Int(Random(0, 10)), 1)
    GUICtrlSetBkColor($lvitems[$ii], $carray[$ii])
    GUICtrlSetBkColor($top_listview, $carray[$ii])
    $ii = $ii + 1

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

    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt" & Int(Random(0, 10)), 1)
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt" & Int(Random(0, 10)), 1)

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

    For $si = 0 To 30
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    _GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)

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

    For $si = 30 To 60
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    _GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)

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

    For $si = 60 To 90
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    $zaehler = $zaehler + 1
    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($bot_listview), 0)

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

    GUICtrlSetData($progress, 100)
    Sleep(1000)

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

    GUICtrlCreateListViewItem(Int(Random(0, 24)) & ":" & Int(Random(0, 60)) & "|Arbeitsplan " & Int(Random(1, 10)), $bot_listview)
    $i = $i + 3

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

    GUICtrlSetBkColor($top_listview, 0xffffff)
    Until ($zaehler = 3)
    Sleep(1000)
    GUICtrlSetData($progress, 0)
    EndFunc ;==>go
    ;====================================== Subfunktionen ======================================

    [/autoit]
  • Visualisierungs Testumgebung ...

    • Yaerox
    • 12. Oktober 2012 um 10:22

    Hab mich mit

    [autoit]

    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID(GUICtrlGetHandle($bot_listview)), 030144255)

    [/autoit]

    versucht, aber so färbt er die ganze Listview was für oben korrekt ist aber für unten nicht...

    Ich denke die Lösung müsste etwas sein wie: GUICtrlSetBkColor( immer_die_oberste_zeile, farbe ) oder falls die Möglichkeit besteht die ControlID der Zeile rauszukriegen, die es meines Wissens nicht gibt, oder? Ich würd einfach mal behaupten die Listview ist ein Ctrl die hat eine ID und fertig.

    Falls ich falsch liege korrigiert mich bitte :P

    Edit: Es scheint mir als würde es nur 2 Varianten geben ...

    Entweder Script neuschreiben mit den AutoIt Funktionen (GUICtrLCreateListView) oder mit GDI arbeiten ... kann das sein? :/ Versuche grad über GDI etwas zu finden ^^

  • Visualisierungs Testumgebung ...

    • Yaerox
    • 12. Oktober 2012 um 09:52

    Okay, soweit ist der Groschen gefallen, und ich denke das Programm stellt die Visualisierung für meine Zwecke anständig da.

    Soweit funktionierend:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.

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

    ;~ Menü erstellen
    Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
    Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.

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

    ;~ Button erstellen
    Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.

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

    ;~ Progress Bar + Label
    Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
    Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.

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

    ;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
    Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
    _GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,

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

    ;~ Listview_bot ... Arbeitsplaene in der Warteschlange
    Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
    Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
    _GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
    _GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT)
    ;====================================== Aufgabenliste-GUI erstellen ======================================

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

    ;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
    GUISetState(@SW_SHOW, $window)

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

    ;~ Schleife
    While 1
    Switch GUIGetMsg()
    Case $datei_beenden
    Exit
    Case $go_button
    go()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Func go()
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
    ;~ Local $item1 = GUICtrlCreateListViewItem("10:00|Arbeitsplan1", $bot_listview)
    ;~ Local $item2 = GUICtrlCreateListViewItem("12:00|Arbeitsplan2", $bot_listview)
    ;~ Local $item3 = GUICtrlCreateListViewItem("14:00|Arbeitsplan3", $bot_listview)
    _GUICtrlListView_AddItem($bot_listview, "10:00")
    _GUICtrlListView_AddSubItem($bot_listview, 0, "Arbeitsplan 1", 1)
    _GUICtrlListView_AddItem($bot_listview, "12:00")
    _GUICtrlListView_AddSubItem($bot_listview, 1, "Arbeitsplan 2", 1)
    _GUICtrlListView_AddItem($bot_listview, "13:00")
    _GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan 3", 1)

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

    Local $zaehler = 0
    Local $i = 1
    Local $wait = 100
    Local $s = 0
    Do
    ;~ If $zaehler = 0 Then
    ;~ Local $item = $item1
    ;~ ElseIf $zaehler = 1 Then
    ;~ GUICtrlSetBkColor($item1, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... :/
    ;~ Local $item = $item2
    ;~ ElseIf $zaehler = 2 Then
    ;~ GUICtrlSetBkColor($item2, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... :/
    ;~ Local $item = $item3
    ;~ EndIf

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

    GUICtrlSetData($progress, 0)
    _GUICtrlListView_SetItemSelected($bot_listview, 0)

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

    _GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
    _GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt" & Int(Random(0, 10)), 1)
    ;~ If GUICtrlSetBkColor($item, 030144255) = 0 Then
    ;~ Exit
    ;~ EndIf
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt" & Int(Random(0, 10)), 1)
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt" & Int(Random(0, 10)), 1)

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

    For $si = 0 To 30
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    _GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)

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

    For $si = 30 To 60
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    _GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)

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

    For $si = 60 To 90
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    $zaehler = $zaehler + 1
    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($bot_listview), 0)

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

    GUICtrlSetData($progress, 100)
    Sleep(1000)

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

    _GUICtrlListView_AddItem($bot_listview, Int(Random(0, 24)) & ":" & Int(Random(0, 60)))
    _GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan " & $zaehler, 1)
    $i = $i + 3

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

    Until ($zaehler = 3)
    Sleep(1000)
    GUICtrlSetData($progress, 0)
    EndFunc ;==>go
    ;====================================== Subfunktionen ======================================

    [/autoit]


    Nun hätte ich jedoch noch gerne, dass nach dem Selektieren einer Zeile, oder einfach die zu selektierende Zeile gefärbt wird.
    Dazu habe ich gesehen gibt es „GUICtrlSetBkColor ( controlID, backgroundcolor )“ aber das geht damit scheinbar nur wenn ich dann die ListviewItems mit den von AutoIt vorhandenen Funktionen hinzufüge. Die User-Definded-Functions _GUICTRL... kann ich dann nicht nutzen oder? Ich habe versucht die Handles auszulesen und ähnliches um halt zu sagen, wenn du in der bot_listview das erste Item selektiert hast färbe es blau, und die gesamte top_listview in der gleichen Farbe. Erfolgslos.
    Wenn das Item dann gelöscht worden ist, bin ich davon ausgegangen, dass die Färbung auch gelöscht worden ist.

    Kann mir da vielleicht jemand helfen?

    Hier die bisher einzige Lösung von mir mit dem Problem, dass erst beim zweiten mal GO drücken gefärbt wird, und die Listview Bot dann flasch angezeigt ist, da Sie im zweiten durchlauf dann so ausschauen soll wie beim ersten...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.

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

    ;~ Menü erstellen
    Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
    Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.

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

    ;~ Button erstellen
    Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.

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

    ;~ Progress Bar + Label
    Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
    Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.

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

    ;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
    Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
    _GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,

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

    ;~ Listview_bot ... Arbeitsplaene in der Warteschlange
    Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
    Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
    _GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
    _GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT)
    ;====================================== Aufgabenliste-GUI erstellen ======================================

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

    ;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
    GUISetState(@SW_SHOW, $window)

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

    ;~ Schleife
    While 1
    Switch GUIGetMsg()
    Case $datei_beenden
    Exit
    Case $go_button
    go()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Func go()
    ;~ _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
    Local $item1 = GUICtrlCreateListViewItem("10:00|Arbeitsplan1", $bot_listview)
    Local $item2 = GUICtrlCreateListViewItem("12:00|Arbeitsplan2", $bot_listview)
    Local $item3 = GUICtrlCreateListViewItem("14:00|Arbeitsplan3", $bot_listview)
    ;~ _GUICtrlListView_AddItem($bot_listview, "10:00")
    ;~ _GUICtrlListView_AddSubItem($bot_listview, 0, "Arbeitsplan 1", 1)
    ;~ _GUICtrlListView_AddItem($bot_listview, "12:00")
    ;~ _GUICtrlListView_AddSubItem($bot_listview, 1, "Arbeitsplan 2", 1)
    ;~ _GUICtrlListView_AddItem($bot_listview, "13:00")
    ;~ _GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan 3", 1)

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

    Local $zaehler = 0
    Local $i = 1
    Local $wait = 100
    Local $s = 0
    Do
    If $zaehler = 0 Then
    Local $item = $item1
    ElseIf $zaehler = 1 Then
    GUICtrlSetBkColor($item1, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... :/
    Local $item = $item2
    ElseIf $zaehler = 2 Then
    GUICtrlSetBkColor($item2, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... :/
    Local $item = $item3
    EndIf

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

    GUICtrlSetData($progress, 0)
    _GUICtrlListView_SetItemSelected($bot_listview, 0)

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

    _GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
    _GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt" & Int(Random(0, 10)), 1)
    If GUICtrlSetBkColor($item, 030144255) = 0 Then
    Exit
    EndIf
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt" & Int(Random(0, 10)), 1)
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt" & Int(Random(0, 10)), 1)

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

    For $si = 0 To 30
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    _GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)

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

    For $si = 30 To 60
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    _GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)

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

    For $si = 60 To 90
    GUICtrlSetData($progress, $si)
    Sleep($wait)
    Next

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

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
    $zaehler = $zaehler + 1
    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($bot_listview), 0)

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

    GUICtrlSetData($progress, 100)
    Sleep(1000)

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

    _GUICtrlListView_AddItem($bot_listview, Int(Random(0, 24)) & ":" & Int(Random(0, 60)))
    _GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan " & $zaehler, 1)
    $i = $i + 3

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

    If $zaehler = 3 Then
    GUICtrlSetBkColor($item3, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... :/
    EndIf

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

    Until ($zaehler = 3)
    Sleep(1000)
    GUICtrlSetData($progress, 0)
    EndFunc ;==>go
    ;====================================== Subfunktionen ======================================

    [/autoit]


    Ich habe die Zeile 59:

    [autoit]

    ;~ _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))

    [/autoit]

    auskommentiert, da wenn ich diese aktiv laufen lasse ist die Listview dann zwar richtig, aber es wird nicht mehr gefärbt :/

    Grüße

    PS: Das färben der oberen Listview ist hier noch nirgends, da ich erstmal die untere Zeile gerne färben würde :/

  • Visualisierungs Testumgebung ...

    • Yaerox
    • 11. Oktober 2012 um 15:54

    So peinlich "-.-

    Kaum mal 45 Min den Thread geschrieben, Kopf anscheinend klarer da findet man: _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0) ...

    Darf der Thread evtl. bestehen bleiben, oder nach Projekte o.ä. verschoben werden?

  • Visualisierungs Testumgebung ...

    • Yaerox
    • 11. Oktober 2012 um 15:48

    Hallo liebe Community,
    ich bräuchte mal wieder eure Hilfe :/

    Dies ist quasi eine kleine Testumgebung bezüglich einer Ablaufsteuerung die ich derzeit versuche zu programmieren.
    Ich würde mir wünschen ^^ , dass in der unteren Listview 3 Zeilen eingefügt werden , dann immer die kleinste Uhrzeit automatisch selektiert werden soll, und die Arbeitspunkte für den jeweiligen Arbeitsplan sollen dann oben in der Listview erscheinen. Dann hätten wir oben in der zweiten Spalte quasi 3 Arbeitspunkte für diesen Arbeitsplan stehen die nacheinander "abgearbeitet" werden sollen. Hier würde als Simulation ein hochzählen oder ein Sleep() ja ausreichen...Bei Startzeit in der oberen Listview soll jedoch die Systemzeit eingetragen werden zudem dieser Arbeitspunkt angestoßen worden ist. Dann soll dieser arbeitspunkt wenn er fertig ist rausfliegen, und die beiden anderen rutschen in der Liste quasi "nach oben" und dann das selbe Spiel: Systemzeit soll eingetragen werden wenn der Arbeitspunkt "gestartet" wird, bis alle Arbeitspunkte durch sind. Diese 3 Arbeitspunkte die dort also einen einzigen Arbeitsplan darstellen sollen dazu diesen Statusbalken animieren.
    Dieser Ablauf soll dann quasi auch unten passieren. Sprich: Sind alle 3 Arbeitspunkte eines Arbeitsplans durchgelaufen, soll der eintrag des ersten Arbeitsplans unten in der Listview rausfliegen, die beiden noch vorhandenen quasi "nach oben rutschen", und dann soll der Arbeitsplan wieder angehangen werden mit einer größeren "geplanten Startzeit".
    ---
    Nochmal in kurz: Es sollen nach dem GO drücken 3 Arbeitspläne nacheinander ablaufen, der aktive Arbeitsplan wird in der unteren Listview "als ausgewählt makiert", dann werden oben seine Arbeitspunkte eingeblendet, diese laufen nacheinander durch und ziehen alle 3 zusammen 1x den Statusbalken mit sich, dann fliegt der Arbeitsplan aus der unteren Listview raus, die anderen 2 rutschen auf und er soll angehangen werden bis jeder Arbeitsplan 1x durchgelaufen ist.

    Hier eine kleine bildliche Darstellung (mit Paint gezaubert :D):
    [Blockierte Grafik: http://s14.directupload.net/images/121011/ybyr3c9i.png]
    und dies für jeden Punkt unten in der Liste 1x ;D

    Mein bisheriges vorgehen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.

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

    ;~ Menü erstellen
    Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
    Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.

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

    ;~ Button erstellen
    Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.

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

    ;~ Progress Bar + Label
    Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
    Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.

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

    ;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
    Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
    _GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
    _GUICtrlListView_SetExtendedListViewStyle($top_listview, $LVS_EX_FULLROWSELECT) ;~ und waehle immer die gesamte Zeile aus.

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

    ;~ Listview_bot ... Arbeitsplaene in der Warteschlange
    Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
    Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
    _GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
    _GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
    _GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT) ;~ und waehle immer die gesamte Zeile aus.

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

    ;====================================== Aufgabenliste-GUI erstellen ======================================

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

    ;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
    GUISetState(@SW_SHOW, $window)

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

    ;~ Schleife
    While 1
    Switch GUIGetMsg()
    Case $datei_beenden
    Exit
    Case $go_button
    go()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Func go()
    _GUICtrlListView_AddItem($bot_listview, "10:00")
    _GUICtrlListView_AddSubItem($bot_listview, 0, "Arbeitsplan 1", 1)
    _GUICtrlListView_AddItem($bot_listview, "12:00")
    _GUICtrlListView_AddSubItem($bot_listview, 1, "Arbeitsplan 2", 1)
    _GUICtrlListView_AddItem($bot_listview, "13:00")
    _GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan 3", 1)

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

    _GUICtrlListView_SetItemSelected($bot_listview, 0)

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

    _GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
    _GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt 1", 1)
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt 2", 1)
    _GUICtrlListView_AddItem($top_listview, "")
    _GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt 3", 1)
    Sleep(500)
    _GUICtrlListView_DeleteItem($top_listview, 0)
    EndFunc
    ;====================================== Subfunktionen ======================================

    [/autoit]

    Hier ist nun mein erstes Problem: Ich dachte ich lösche aus der Listview oben die erste zeile, damit ich dann den nächsten Arbeitspunkt starten kann. Aber hier hängt es grad irgendwie :/ Seit 2 Stunden starre ich auf den Text, ich seh den Fehler nicht ... :/

    Mir wäre wichtig das ihr wisst, ich will nicht einfach nur einen Code vorgelegt bekommen für meine Probleme, ich lerne momentan mit AutoIt zu programmieren (bzw. versuch es mir beizubringen), will es verstehen und arbeite selbstverständlich auch daran.
    Ich habe solch einen 'Progress' z.B. bisher nie genutzt, also solche Dinge könnten auch noch weggelassen werden, wenn ich mich damit beschäftige schaffe ich dies vielleicht ja auch alleine !! :)

    Also würde es mir vollkommen ausreichen wenn ihr mir bei Problemen helfen würdet und ich bis zum nächsten Problem den Code auch selber schreibe :)

    *freundlich um Hilfe bitten* *g*
    Achja, ich nehme Tipps (Lob und Kritik) zu meiner Schreibweise bezüglich des Codes oder der Wahl meiner Variablen geren an :P :)
    Grüße

    Nun hab ich so lang am Thread geschrieben, da ist glatt mein Kaffee kalt :O

  • Tab/Combo Überwachung

    • Yaerox
    • 9. Oktober 2012 um 13:08

    Super, sowas hab ich gebraucht :) Danke :) Dann schau ich jetzt mal ob ich das im großen Stil übertragen kriege ^^

    Grüße

  • Tab/Combo Überwachung

    • Yaerox
    • 9. Oktober 2012 um 12:07
    Zitat von m-obi


    MessageLoop-Methode kombiniert mit der OnEvent-Methode. [...] Und pack mal die Funktion ans Ende. So dazwischen ist das nicht "schön".

    So besser? (habe es editiert)

  • Tab/Combo Überwachung

    • Yaerox
    • 9. Oktober 2012 um 11:48

    Hallo liebe Community :)

    Ich versuche mich nun seit ca. 3 Wochen mit AutoIt, und schreibe derzeit ein Programm bei den ich quasi eine Comboüberwachung in einer Tabüberwachung bräuchte wie es bei Toolbars auch möglich ist.

    Meine Bitte an euch wäre, mir verständlich zu machen wie das funktioniert. Ich habe mir schon einige Beispiele angeschaut und simple Beispiele konnte ich auch erweitern/bearbeiten, aber 100%ig verstanden habe ich nicht, was ich dort tat :/

    Hier zunächst ein Code für mein Beispiel:

    [autoit]

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

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

    $gui1 = GUICreate("GUI 1", 505, 505)
    $switchtogui2 = GUICtrlCreateButton("Switch to GUI 2", 10, 10)
    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $switchtogui2
    zeige_gui2()
    EndSelect
    WEnd

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

    Func zeige_gui2()
    GUISetState(@SW_HIDE, $gui1)
    $gui2 = GUICreate("GUI 2", 500, 500)
    GUISetState(@SW_SHOW, $gui2)
    Local $tab = GUICtrlCreateTab(10, 10, 480, 480)
    Local $tab_1 = GUICtrlCreateTabItem("1")
    Local $tab1_combo = GUICtrlCreateCombo("", 50, 50, 200, 20)
    GUICtrlSetData(-1, "item1|item2|item3")
    Local $lvt1 = GUICtrlCreateListView("Test", 80, 80, 200, 200, $WS_BORDER, $LVS_EX_FULLROWSELECT)
    Local $tab_2 = GUICtrlCreateTabItem("2")
    Local $tab2_combo = GUICtrlCreateCombo("", 50, 50, 200, 20)
    GUICtrlSetData(-1, "item1|item2|item3")
    Local $lvt2 = GUICtrlCreateListView("Test", 80, 80, 200, 200, $WS_BORDER, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateTabItem("")
    EndFunc

    [/autoit]

    Nun soll quasi eien Überwachung stattfinden die wie folgt aussehen sollte:

    Code
    Überwache den Tab
    	wenn TabItem1 angeklickt wird, dann
    		Überwache die Combobox
    			wenn eine Auswahl getätigt wird, dann
    				schreibe die Auswahl in die Listview
    		EndeÜberwachung
    	wenn TabItem2 angeklickt wird, dann
    		Überwache die Combobox
    			wenn eine Auswahl getätigt wird, dann
    				schreibe die Auswahl in die Listview
    		EndeÜberwachung
    EndeÜberwachung
    Alles anzeigen

    Mein Ansatz wäre:

    [autoit]

    Local $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $tab_1
    MsgBox(0,"","Tab1")
    Case $msg = $tab_2
    MsgBox(0,"","Tab2")
    EndSelect

    [/autoit]


    funktioniert nur leider (bisher) nicht :P

    Ich sag schonmal danke an alle die versuchen oder es vll. sogar schaffen mir diese Überwachung beizubringen :)

    Grüße

  • Sinnvoll GuiCtrlCreateTab zu nutzen?

    • Yaerox
    • 1. Oktober 2012 um 16:45

    Sorry, dass Problem hat sich erledigt. Lag eig auf der Hand wenn man darüber nachgedacht hat.

  • Sinnvoll GuiCtrlCreateTab zu nutzen?

    • Yaerox
    • 1. Oktober 2012 um 09:01
    Zitat von Autolaser

    Zeige uns doch mal deinen bisherigen Quellcode, dann kann man sicherlich besser weiterhelfen ;)

    Quellcode ist bis auf den GUI noch nicht vorhanden ;)
    Habe mir über das Wochenende noch einige Gedanken gemacht und habe meinen ersten Post editiert ;)

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™