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

Beiträge von mirko2002

  • Treeview Icons einzeln ändern

    • mirko2002
    • 9. März 2018 um 19:58

    Erstmal danke das du drüber geschaut hast... ich muss da erstmal durchsteigen, da es natürlich ganz anders geschrieben ist, als ich meine Zeilen schreibe... so wie Du erstmal meinen Code verstehen musst hab ich jetzt auch erstmal zu tun :) :) :)

    Die Restarts des Skripts habe ich als Notlösung eingebaut da in ich meinem Skript einen Fehler habe, der lustigerweise in deinem Skript ähnlich auftaucht. Wenn du die Dropdownliste öffnest hast du ja alle Märkte zur Auswahl. Öffne mal das Dropdown menü, nachdem Du eine datei erstellt hast die keinen markt ausgewählt hat. dann hast du anschließend im dropdownmenü keine einträge mehr zur auswahl.

    und obwohl ich extra mit

    GUICtrlSetData($input_infos[0], "MM Alex|MM Biesdorf|MM Brandenburg|MM Charlottenburg|MM Eiche|MM Gropius|MM HBF|MM HSH|MM Moabit|MM Neukölln|MM Potsdam|MM Prenz'l Berg|MM Schöneweide|MM Schwedt|MM Spandau|MM Steglitz|MM Tegel|MM Tempelhof|MM Waltersdorf|MM Wedding", "")

    das Control wieder "fülle" schreibt er es stattdessen alles nur noch in eine Zeile. Das heißt er klappt bei mir das Dropdown auf und anstelle von 20 Märkten untereinander habe ich nur einen Eintrag zur Auswahl wo er alles hintereinander schreibt. Um das zu umgehen habe ich diese Restart-Dinge eingebaut damit die Dropdownfelder wieder normal sind....


    So... jetzt is schon spät. Ich schau mir mal morgen dein Skript komplett an und versuche zu verstehen :)

    LG

    Mirko

  • Treeview Icons einzeln ändern

    • mirko2002
    • 9. März 2018 um 12:57

    So, ich habe jetzt nochmal die letzte Tage rumgetestet wie wild - immer mit dem selben Ergebnis. Es funktioniert einfach nicht. 2 Unterschiedliche Icons gehen noch - sobald ein drittes dazu kommt ist vorbei, bzw es wird ignoriert.

    Ich weiss nicht mehr weiter :( :( :(

  • Treeview Icons einzeln ändern

    • mirko2002
    • 6. März 2018 um 13:26

    Oscar

    Ja, dass weiß ich. Habe mich da evtl nur wieder doof ausgedrückt :)

    Hier mal das komplette Script:

    (siehe Dateianhang - war zu lang für den Post)

    Ab Zeile 307 (wenn ich es grad richtig sehe) beginnt das Dilemma.... auskommentiert ist mein alter Codeteil, der mit 2 Unterschiedlichen Icons arbeitet, dadrunter kommt euer "Select" Beispiel.

    Du kannst ja, wenn das Skript läuft, einfach selber ein sogenanntes OSC Ticket erstellen, dann wirst du den unterschied mit den angezeigten icons sehen.

    LG

    Mirko

    Dateien

    ticketbackup.au3 20,02 kB – 265 Downloads
  • Treeview Icons einzeln ändern

    • mirko2002
    • 6. März 2018 um 11:06

    Guten Morgen zusammen,

    gestern ging leider nichts mehr zu testen. War fertig mit den Nerven :)

    Hab heute mal beide Codes probiert. Auch mit ContinueCase - er setzt es nicht um.

    Hier mal 3 Screenshots dazu.

    Auf Bild 1 ist zu sehen, dass die Checkbox "Reservierung" aktiv ist - er soll also Icon 1 (als Beispiel) wählen.

    Auf Bild 2 ist zu sehen, dass die Checkbox "Wichtig" aktiv ist - er soll also Icon 2 wählen.

    Auf Bild 3 ist zu sehen, dass keine Checkbox aktiv ist, er aber dennoch nicht das dritte Icon wählt sondern stattdessen noch immer das Icon als ob eine Checkbox aktiv wäre.

    Ich hoffe es ist damit etwas offensichtlicher was nicht funktioniert?

    LG

    Bilder

    • 2.png
      • 19,38 kB
      • 746 × 180
    • 3.png
      • 21,14 kB
      • 733 × 191

    Dateien

    1.png 29,52 kB – 0 Downloads
  • Treeview Icons einzeln ändern

    • mirko2002
    • 5. März 2018 um 18:55

    Hm nee... ich glaube ich drücke mich auch einfach blöd aus. Entschuldige, ich versuche es nochmal anders zu erklären:

    Also, wenn die TreeView aufgebaut wird bekommen alle Items ja ein und dasselbe Icon. Nennen wir es mal Icon 1.

    Soweit so gut. Nun ist es aber so, dass in den Dateien die er ausließt, auch die Werte der Checkboxen gespeichert sind, ob diese halt aktiviert sind oder nicht.

    Gehen wir jetzt mal von dem Fall aus ich hätte nur eine Checkbox. Wenn diese aktiviert ist (und der Wert demnach in der Datei in Zeile fünf auf "1" geändert wird) dann soll nur dieses eine Item ein anderes Icon bekommen. Nennen wir es der Einfachheit halber Icon 2.

    Das heißt im Beispiel: ich habe 10 Dateien im Ordner. Bei 9 ist die Checkbox inaktiv, also bekommen alle das Icon 1 und bei der zehnten Datei ist die Checkbox aktiv, diese soll also Icon 2 erhalten.

    Ziel ist es dadurch, gecheckboxte Dateien sofort durch das Icon herauszuerkennen. Mit nur einer Checkbox funktioniert das ganze auch. Nun habe ich aber eine zweite Checkbox eingebaut. Diese schreibt jetzt ihren Wert in die Dateizeile 6.

    Also soll im Grunde nur geschaut werden:

    Ist Checkbox 1 aktiv wähle Icon 2, ist Checkbox 2 aktiv wähle Icons 3 und ist gar keine Checkbox aktiv wähle Icon 1 - sprich das Standardicon.

    Ich dachte es wäre hier mit der einfachen If-Then abfrage getan aber anscheinend ist dies nicht der Fall.... ich kann gern bei Bedarf mein komplettes Skript nochmal hochladen?

    Erstmal vielen Dank das ihr euch meines Problems überhaupt annehmt...

  • Treeview Icons einzeln ändern

    • mirko2002
    • 5. März 2018 um 18:23

    Zwei getrennte If-Abfragen habe ich auch gleich anschließend probiert. Er ändert jedoch keine weiteren Icons sondern behält nur die beiden aus der ersten If-Then Abfrage bei...

    Im Prinzip macht mein Tool nix anders als Verzeichnis X einzulesen. Er prüft anschließend in den Dateien in der Zeile 5 oder der Wert 4 oder 1 steht (Checkbox aktiv oder nicht). Dementsprechend haben nun Dateien, wo die Checkbox aktiviert ist ein anderes Icon als die Dateien wo die Checkbox deaktiviert ist.

    Wie gesagt - solange das nur die fünfte Zeile geprüft wird macht er alles so wie er soll. Anschließend soll er aber die Zeile 6 auslesen und auch dort wieder schauen ob Wert 4 oder 1 und auch dort die restlichen Icons anpassen... Derzeit raucht mir wirklich mein Kopf und ich seh den Wald vor lauter Bäumen nicht mehr.

  • Treeview Icons einzeln ändern

    • mirko2002
    • 5. März 2018 um 17:42

    Ich habs mit ConsoleWrite diesmal gemacht, da ich sonst mit msgboxen bombardiert werde.

    Er springt nicht in den Else-If Bereich rein, da die Bedingung beim ersten "If" bereits erfüllt ist, daher interessiert ihn der weitere Rest nicht...

    Aber genau dafür habe ich ja ein ElseIf verwendet.... ich raffs nicht :(

  • Treeview Icons einzeln ändern

    • mirko2002
    • 5. März 2018 um 17:13

    Oscar

    Sage mal, weißt Du warum meine angepasste Variante mit mehreren Icons nicht funktioniert? Ich hätte gedacht, dass Dein Bespiel beliebig erweiterbar ist auf unterschiedliche Icons...

    AutoIt
    If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $read_reservierung = FileReadLine($sPath & $Files.Name,5)
                If $read_reservierung = 4 then
                    _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 99) ;Icon "Blaues Fragezeichen"
                Else
                    _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 102) ;Icon "Gelbes Ausrufezeichen"
                EndIf
                $aCount[1] += 1
            Next
        EndIf
    Alles anzeigen

    Das war ja dein Vorschlag, der wunderbar funktioniert solange ich zwischen 2 Icons wählen möchte.

    Abgeändert habe ich die If-Then Abfrage erweitert auf ElseIf aber er beachtet generell nur 2 Icons....

    AutoIt
    If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $read_reservierung = FileReadLine($sPath & $Files.Name,5)
                $read_important = FileReadLine($sPath & $Files.Name,6)
                If $read_reservierung = 4 then
                    _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 99) ;Icon "Blaues Fragezeichen"
                ElseIf $read_important = 4 then
                    _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 100) ;Icon "Rotes Ausrufezeichen"
                Else
                    _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 102) ;Icon "Gelbes Ausrufezeichen"
                EndIf
                $aCount[1] += 1
            Next
        EndIf
    Alles anzeigen

    Warum kann ich auf diese Art die Anzahl der nötigen Icons beliebig erweitern? Ich meinen Augen ist die Else-IF-Erweiterung richtig.

    Sorry das ich hier nochmal mit meinem halbwissen nachhake :(

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 18:55

    Alles klar....

    auch das mit den Regionen war mir bereits bekannt... zwischendurch habe ich es schon genutzt... ich sollte es nur mal dauerhaft umsetzen....

    *asche auf mein Haupt*


    Danke Euch allen :)

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 16:16

    Hallo Peter,

    danke für die ausführliche "heransgehensweise"... manchmal verliere ich mich selber im Code und entferne öfter meine Kommentare aus dem Code da ich denke, später brauche ich diese nicht mehr... ich versuche meinen Code auf so wenig Zeilen wie möglich zu schröpfen und dabei fallen unter anderem auch oft Comments mit zum Opfer :(

    Obwohl ich eigentlich alle von dir oben angesprochen Punkte kenne, nutze ich diese Weise jedoch zu selten. Da muss ich noch etwas an meiner Arbeit feilschen :)

    Auf jeden Fall vielen Dank für die tolle Unterstützung hier... so kann ich mit meinem Skript weitermachen. Die Telefonnummernprüfung habe ich übrigens auch schon drin was du vorher bereits erwähntest....

    :) :) :)

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 15:20

    Oscar

    Habe deinen Code mal getestet.... funktioniert auch exakt wie gewünscht :)

    Versuche noch im Detail zu verstehen wo mein Fehler war bzw was Dein Code im Unterschied bewirkt.

    Btw - Du erwähntest schwere Lesbarkeit meines Codes. Hast Du Tipps was ich anders machen sollte?

    Ich sortiere im Code immer erst die Erstellung der Gui und deren Inhalte, anschließend die Funktionen. Die GUI Elemente hab ich noch keinen schönen Weg gefunden wie man diese lesbar gut einrücken kann, wie ich es in den Funktionen tue...

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 14:22

    Naja Beispieldaten kannst Du ja selber erstellen indem du in der GUI einfach ein Fake-Ticket erstellst....

    Ich habe nur reale Kundendaten hier die ich unmöglich weitergeben kann :)

    Wie gesagt, die Daten werden ja durch das Programm selber generiert und in die entsprechenden txt-Dateien geschrieben.

    Ich teste mal deinen Code aus und versuche zu verstehen was da passiert... melde mich nachher nochmal zurück :)

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 13:31

    Stimmt, werde den Code diesbezüglich später dann etwas anpassen. Danke für den Hinweis :)

    Evtl dennoch Ideen/Tipps zu meinem eigentlichen Problem?

    LG

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 11:55

    Oh ihr habt in der zwischenzeit weiter geantwortet :)

    Mit Msg-boxen arbeite ich permanent - um genau den Zweck zu erfüllen den den beschreibst, Peter. ConsoleWrite bin ich kein Fan von - ich mach das lieber auch per msgbox. Aber es hilft mir hier in dem Fall nicht weiter...

  • Treeview Icons einzeln ändern

    • mirko2002
    • 3. März 2018 um 11:53

    Hallo zusammen,

    erstmal vielen Dank für Eure Antworten.

    @Peter - die Hilfe hat mir leider nicht weitergeholfen (oder ich versteh's nicht).

    Tuxedo - also die Abfrage funktioniert schon. Er liest in der vorgegebenen Datei die 5. Zeile aus und dort soll halt entweder 1 oder 4 drin stehen. Das kann er auch wunderbar prüfen. Nur das ändern der Icons macht er dann nicht.

    Oscar - bitte entschuldige. Ich ging davon aus, dass das obige Skript eigentlich alles aussagt... ich poste mal das komplette Skript, dann kann man das ganze nachvollziehen. Lediglich der Pfad muss dann angepasst werden, worauf der TreeView zugreifen soll.

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=artifacter.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include<GuiTreeView.au3>
    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<TreeViewConstants.au3>
    #include<WindowsConstants.au3>
    #include<ButtonConstants.au3>
    #include<guiconstants.au3>
    #Include<Restart.au3>
    
    Global $sPath = 'F:\Mailer\'
    Global $width = 800, $height = 600
    Global $hGui = GUICreate('OSC Mailer 1.0', $width, $height, -1, -1)
    
    Dim $input_infos[4]
    
    GUICtrlSetFont(-1, 9, 600, 0, 'Verdana')
    Global $bFiles = True
    GUICtrlCreateGroup("OSC Tickets", 5, 20, 275, 555)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    Global $hTreeView = GUICtrlCreateTreeView(10, 35, $width - 540, $height - 70, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES), $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
    GUICtrlSetBkColor(-1, 0xF8F8F8)
    GUICtrlCreateGroup("OSC Infos", 290, 20, 500, 125)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlCreateLabel("Markt:", 300, 40)
    ;~ $input_infos[0] = GUICtrlCreateInput("", 360, 38, 150, 18)
    $input_infos[0] = GUICtrlCreateCombo("", 360, 38, 150, 18, $CBS_DROPDOWNLIST)
    GUICtrlSetData($input_infos[0], "MM Alex|MM Biesdorf|MM Brandenburg|MM Charlottenburg|MM Eiche|MM Gropius|MM HBF|MM HSH|MM Neukölln|MM Potsdam|MM Prenz'l Berg|MM Schöneweide|MM Schwedt|MM Spandau|MM Steglitz|MM Tegel|MM Tempelhof|MM Waltersdorf|MM Wedding", "")
    GUICtrlCreateLabel("Name KD:", 540, 40)
    $input_infos[1] = GUICtrlCreateInput("", 600, 38, 150, 18)
    GUICtrlCreateLabel("Abteilung:", 300, 70)
    ;~ $input_infos[2] = GUICtrlCreateInput("", 360, 68, 150, 18)
    $input_infos[2] = GUICtrlCreateCombo("", 360, 68, 150, 18, $CBS_DROPDOWNLIST)
    GUICtrlSetData($input_infos[2], "BW TV|BW HiFi|BW Foto|BW Henkelware|BW Zubehör|BW Car-HiFi|Neue Medien|Computer|Zubehör|GSM|Bürokom|Navi, Outdoor|WW Großgeräte|WW Kleingeräte|Enternainment|Tonträger|Software|Service|eBay|Lager|Sicherheit", "")
    GUICtrlCreateLabel("Telefon#:", 540, 70)
    $input_infos[3] = GUICtrlCreateInput("", 600, 68, 150, 18)
    GUICtrlCreateLabel("Belegnummer/Auftragsnummer/Bestellnummer:", 425, 100, 250, 15)
    $input_createfile = GUICtrlCreateInput("", 470, 120, 135, 18)
    $input_reservierung = GUICtrlCreateCheckbox("Reservierung", 670, 110)
    GUICtrlCreateGroup("Anliegen", 290, 150, 500, 80)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    $button_createfile = GUICtrlCreateButton("OSC Fall erstellen", 480, 240, 120, 20)
    GUICtrlSetFont(-1, 7, 600, 0, "Verdana")
    ;~ $button_refreshtree = GUICtrlCreateButton("", 440, 270, 25, 25, $BS_ICON)
    ;~ GUICtrlSetImage(-1, "wmploc.dll", -138,0)
    ;~ GUICtrlSetImage(-1, "shell32.dll", -239,0)
    ;~ GUICtrlSetTip(-1, "Aktualisiert die OSC Ticket Ansicht")
    GUICtrlCreateGroup("", 450, 270, 180, 50)
    GUICtrlCreateLabel("Nur für den OSC'ler", 492, 270, 92, 15)
    $button_filedelete = GUICtrlCreateButton("", 475, 285, 25, 25, $BS_ICON)
    ;~ GUICtrlSetImage(-1, "shell32.dll", -132,0)
    GUICtrlSetImage(-1, "shell32.dll", -145,0)
    GUICtrlSetTip(-1, "Schließt das ausgewählte OSC Ticket")
    $button_update = GUICtrlCreateButton("Update OSC Fall", 510, 287, 95, 20)
    $input_update = GUICtrlCreateEdit("", 300, 165, 480, 55, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
    GUICtrlCreateGroup("Notizen", 290, 320, 500, 255)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    $notizen = GUICtrlCreateEdit("", 300, 335, 480, 230, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_READONLY))
    ;~ GUICtrlSetBkColor(-1, 0xF8F8F8)
    Global $hStatus1 = GUICtrlCreateLabel('', 0, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
    Global $hStatus2 = GUICtrlCreateLabel('', $width / 2 + 1, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
    
    $winuser = @UserName
    
    GUISetState()
    _TreeViewUpdate()
    AdlibRegister("_TreeViewUpdate",30000)
    
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_PRIMARYDOWN
                $aInfo = GUIGetCursorInfo($hGui)
    ;~             MsgBox(0,"",$aInfo[4])
                If $aInfo[4] = $hTreeView Then
                    $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
                    GUICtrlSetData($hStatus1, ' ' & StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
                    $readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
                    GUICtrlSetData($notizen,StringTrimLeft($readini, StringInStr($readini, @CRLF, 0, 5)))
                    $read_info1 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),1)
                    GUICtrlSetData($input_infos[0],$read_info1)
                    GUICtrlSetData($input_infos[0],$read_info1)
                    $read_info2 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),2)
                    GUICtrlSetData($input_infos[1],$read_info2)
                    $read_info3 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),3)
                    GUICtrlSetData($input_infos[2],$read_info3)
                    GUICtrlSetData($input_infos[2],$read_info3)
                    $read_info4 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),4)
                    GUICtrlSetData($input_infos[3],$read_info4)
                    $read_info5 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),5)
                    GuiCtrlSetState($input_reservierung,$read_info5)
    
                    Opt('GUIDataSeparatorChar', $oldGUIDataSeparatorChar)
                    If BitAND(_GUICtrlTreeView_HitTest($hTreeView, $aInfo[0] - 11, $aInfo[1] - 41), 64) Then
                        $checked = _GUICtrlTreeView_GetChecked($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                        _GUICtrlTreeView_SetBold($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView), $checked)
                        $hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                        If $hItem Then _MarkChildItems($hTreeView, $hItem, $checked)
                    EndIf
                EndIf
                If $aInfo[4] = 5 Then
    ;~                 GUICtrlSetData($input_infos[0],"")
    ;~                 GUICtrlSetData($input_infos[0],"MM Alex|MM Biesdorf|MM Brandenburg|MM Charlottenburg|MM Eiche|MM Gropius|MM HBF|MM HSH|MM Neukölln|MM Potsdam|MM Prenz'l Berg|MM Schöneweide|MM Schwedt|MM Spandau|MM Steglitz|MM Tegel|MM Tempelhof|MM Waltersdorf|MM Wedding","")
    ;~                 GUICtrlSetData($input_infos[1],"")
    ;~                 GUICtrlSetData($input_infos[2],"")
    ;~                 GUICtrlSetData($input_infos[2], "BW TV|BW HiFi|BW Foto|BW Henkelware|BW Zubehör|BW Car-HiFi|Neue Medien|Computer|Zubehör|GSM|Bürokom|Navi, Outdoor|WW Großgeräte|WW Kleingeräte|Enternainment|Tonträger|Software|Service|eBay|Lager|Sicherheit", "")
    ;~                 GUICtrlSetData($input_infos[3],"")
                    GUICtrlSetData($notizen,"")
    ;~                 GUICtrlSetData($input_update,"")
    ;~                 GUICtrlSetData($input_createfile,"")
                EndIf
            Case $button_update
                $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
                $read_update = GUICtrlRead($input_update)
                FileWrite(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), @CRLF & "Update am " & @MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" durch " & $winuser&":" & @CRLF & $read_update & @CRLF & "--------------------------------------------------------------------------------------------------------------------------------------------------------")
                $readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
                GUICtrlSetData($notizen,StringTrimLeft($readini, StringInStr($readini, @CRLF, 0, 4)))
                GUICtrlSetData($input_update,"")
                AdlibUnRegister("_TreeViewUpdate")
                _ScriptRestart()
            Case $button_createfile
                _checkInputs()
    ;~         Case $button_refreshtree
    ;~             _TreeViewUpdate()
            Case $button_filedelete
                $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
                $checked = _GUICtrlTreeView_GetChecked($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                If $checked = True then
                    $tmp = MsgBox(48+4, '', "Möchtest Du das OSC Ticket schließen?")    ; Yes, No, Cancel
                    Switch $tmp
                        Case 6    ; JA
                                FileMove(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),$sPath & "erledigt")
            ;~                     FileDelete(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
                                GUICtrlSetData($input_infos[0],"")
                                GUICtrlSetData($input_infos[1],"")
                                GUICtrlSetData($input_infos[2],"")
                                GUICtrlSetData($input_infos[3],"")
                                GUICtrlSetData($notizen,"")
                                _TreeViewUpdate()
                        Case 7    ; NEIN
                    EndSwitch
                Else
                    MsgBox(0,"Achtung","Kein Ticket ausgewählt")
                EndIf
            Case $GUI_EVENT_CLOSE
                AdlibUnRegister("_TreeViewUpdate")
                Exit
        EndSwitch
    WEnd
    
    Func _checkInputs()
        Local $test = 0
        for $i = 0 to UBound($input_infos)-1
                if GUICtrlRead($input_infos[$i]) = "" then
                    $test = 1
                    ExitLoop
                EndIf
        next
            If $test = 1 then
                MsgBox(0,"Achtung!", 'Bitte alle Felder unter "OSC Infos" ausfüllen.')
            Else
                $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
                $read_createfile = GUICtrlRead($input_createfile)
                $read_input_infos1 = GUICtrlRead($input_infos[0])
                $read_input_infos2 = GUICtrlRead($input_infos[1])
                $read_input_infos3 = GUICtrlRead($input_infos[2])
                $read_input_infos4 = GUICtrlRead($input_infos[3])
                $read_update = GUICtrlRead($input_update)
                if BitAnd(GUICtrlRead($input_reservierung),$GUI_CHECKED) = $GUI_CHECKED then $read_checkbox    = 1
                if BitAnd(GUICtrlRead($input_reservierung),$GUI_UNCHECKED) = $GUI_UNCHECKED then $read_checkbox = 4
    ;~             FileWrite($sPath & $read_createfile & ".txt", $read_input_infos1 & @CRLF & $read_input_infos2 & @CRLF & $read_input_infos3 & @CRLF & $read_input_infos4 & @CRLF & "Erstellt am " &@MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" durch " & $winuser & @CRLF & $read_update & @CRLF)
                FileWrite($sPath & $read_createfile & ".txt", $read_input_infos1 & @CRLF & $read_input_infos2 & @CRLF & $read_input_infos3 & @CRLF & $read_input_infos4 & @CRLF & $read_checkbox & @CRLF & "Erstellt am " &@MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" durch " & $winuser & @CRLF & $read_update & @CRLF)
                _TreeViewUpdate()
                GUICtrlSetData($input_infos[0],"")
                GUICtrlSetData($input_infos[1],"")
                GUICtrlSetData($input_infos[2],"")
                GUICtrlSetData($input_infos[3],"")
                GUICtrlSetData($input_update,"")
                GUICtrlSetData($input_createfile,"")
                MsgBox(0,"", 'OSC Ticket erstellt')
                AdlibUnRegister("_TreeViewUpdate")
                _ScriptRestart()
            EndIf
        Return
    EndFunc
    
    Func _MarkChildItems(ByRef $hTreeView, $hItem, $checked)
        Do
            $hNewItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem)
            If $hNewItem Then _MarkChildItems($hTreeView, $hNewItem, $checked)
            _GUICtrlTreeView_SetChecked($hTreeView, $hItem, $checked)
            _GUICtrlTreeView_SetBold($hTreeView, $hItem, $checked)
            $hItem = _GUICtrlTreeView_GetNextChild($hTreeView, $hItem)
        Until $hItem = 0
    EndFunc   ;==>_MarkChildItems
    
    Func _TreeViewUpdate()
        GUICtrlSetData($hStatus1, ' Bitte warten! Verzeichnis wird eingelesen...')
        GUICtrlSetData($hStatus2, '')
        $Timer = TimerInit()
        Local $aCount = _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
        If Not @error Then
            $msg = ' Benötigte Zeit: ' & Round(TimerDiff($Timer) / 1000, 3) & ' sek.'
            $msg &= '  |   ' & $aCount[1] & ' OSC Fälle ' ; & $aCount[0] & ' Verzeichniss(e)'
            GUICtrlSetData($hStatus1, ' Fertig')
            GUICtrlSetData($hStatus2, $msg)
        EndIf
    EndFunc   ;==>_TreeViewUpdate
    
    
    
    
    ;===============================================================================
    ; Function Name:   _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
    ; Description::    erstellt ein TreeView mit Verzeichnissen (+Dateien)
    ; Parameter(s):    $hTreeView = ControlID/Handle des TreeViews
    ;                  $sPath     = Verzeichnispfad, der dargestellt werden soll
    ;                  $bFiles    = True = auch Dateien anzeigen, False = nur Verzeichnisse
    ; Requirement(s):  #include<GuiTreeView.au3>
    ; Return Value(s): Array mit Anzahl der Verzeichnisse=[0] und Dateien=[1]
    ;                  0 und @error = 1, wenn der Pfad nicht existiert bzw. kein Verzeichnis ist
    ;                  0 und @error = 2, wenn das FileSystemObject nicht erstellt werden konnte
    ; Author(s):       Oscar (www.autoit.de)
    ;===============================================================================
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
        Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
        $sPath = FileGetLongName($sPath)
        Local $oFSO = ObjCreate('Scripting.FileSystemObject')
        If @error Then Return SetError(2, 0, 0)
        _GUICtrlTreeView_BeginUpdate($hTreeView)
        _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
        Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView)
        GUICtrlSetColor(-1, $FolderColor)
    ;~     $read_reservierung = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),5)
    ;~     If $read_reservierung = 4 then
            _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 134) ;Icon 111
    ;~     Else
    ;~         _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 77)
    ;~     EndIf
        $Folder = $oFSO.GetFolder($sPath)
        _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
        If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $aCount[1] += 1
            Next
        EndIf
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2)
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
        _GUICtrlTreeView_EndUpdate($hTreeView)
        GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
        $oFSO = ''
        Return $aCount
    EndFunc   ;==>_GUICtrlTreeView_CreateDirectory
    
    Func _CreateDirectoryRecursive($hTreeView, $Folder, $ItemOld, $bFiles, ByRef $aCount)
        Local $hFolderItem, $hFileItem, $FolderColor = 0x0000FF
        For $Subfolder In $Folder.SubFolders
            $hFolderItem = GUICtrlCreateTreeViewItem($Subfolder.Name, $ItemOld)
            GUICtrlSetColor(-1, $FolderColor)
            _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 3, 2)
            _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 110, 4)
            $aCount[0] += 1
            _CreateDirectoryRecursive($hTreeView, $Subfolder, $hFolderItem, $bFiles, $aCount)
            If $bFiles Then
                For $Files In $Subfolder.Files
                    $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hFolderItem)
                    $aCount[1] += 1
                Next
            EndIf
        Next
    EndFunc   ;==>_CreateDirectoryRecursive
    Alles anzeigen

    Die Funktion _ScriptRestart() könnt ihr zum testen rausnehmen... dafür wäre eine extra UDF notwendig.

    Im Prinzip geht es immer nur darum, dass bei Erstellung eines Tickets immer in Zeile 5 der Textdatei der Wert 4 oder 1 steht. Was anderes wird dort nie stehen, denn in dieser Zeile speichere ich ab, ob im Ticket die Checkbox für eine Reservierung aktiviert war oder nicht. In der TreeView Ansicht möchte ich also nun auf anhieb sehen, welche Tickets als Reserierung laufen und welche normal sind, daher möchte ich hier unterschiedliche Icons verwenden damit es optisch raussticht.

    Mit meinem If-Then bin ich ja ins leere gelaufen, bin da aber halt auch kein Profi drin :(

  • Treeview Icons einzeln ändern

    • mirko2002
    • 2. März 2018 um 17:59

    Hallo zusammen,

    ich habe eine GUI erstellt, welche einen Ordner via TreeView darstellt. In dem Ordner sind ausschließlich .txt-Dateien. Die TreeView Einträge sollen jedoch unterschiedliche Icons erhalten. Momentan erhalten alle gelisteten Items dasselbe Icon von mir über den folgenden Befehl:

    AutoIt
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 134)

    Hier sicherheitshalber die Funktion einmal im ganzen:

    AutoIt
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
        Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
        $sPath = FileGetLongName($sPath)
        Local $oFSO = ObjCreate('Scripting.FileSystemObject')
        If @error Then Return SetError(2, 0, 0)
        _GUICtrlTreeView_BeginUpdate($hTreeView)
        _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
        Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView)
        GUICtrlSetColor(-1, $FolderColor)
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 134) ;Icon 111
        $Folder = $oFSO.GetFolder($sPath)
        _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
        If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $aCount[1] += 1
            Next
        EndIf
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2)
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
        _GUICtrlTreeView_EndUpdate($hTreeView)
        GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
        $oFSO = ''
        Return $aCount
    EndFunc   ;==>_GUICtrlTreeView_CreateDirectory
    Alles anzeigen

    Ich habe nun versucht, über eine IF-Then Abfrage den Items unterschiedliche Icons zuzuweisen was leider fehlschlägt :(

    Eigentlich soll das Tool schauen, das in den Textdateien ein bestimmter Wert vorkommt um anschließend diese Datei durch ein entsprechendes Icon besser hervorzuheben.

    Ich habe also die oben stehende Funktion wie folgt geändert, jedoch ohne Erfolg:

    AutoIt
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
        Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
        $sPath = FileGetLongName($sPath)
        Local $oFSO = ObjCreate('Scripting.FileSystemObject')
        If @error Then Return SetError(2, 0, 0)
        _GUICtrlTreeView_BeginUpdate($hTreeView)
        _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
        Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView)
        GUICtrlSetColor(-1, $FolderColor)
         $read_reservierung = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),5)
         If $read_reservierung = 4 then
            _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 134)
         Else
             _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 77)
         EndIf
        $Folder = $oFSO.GetFolder($sPath)
        _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
        If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $aCount[1] += 1
            Next
        EndIf
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2)
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
        _GUICtrlTreeView_EndUpdate($hTreeView)
        GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
        $oFSO = ''
        Return $aCount
    EndFunc   ;==>_GUICtrlTreeView_CreateDirectory
    Alles anzeigen

    Für mich sollte also folgendes passieren: Findet mein Programm in der Textdatei in Zeile 5 den Wert 4, so soll das Icon 134 verwendet werden, andernfalls soll Icon 77 verwendet werden. Sollte eigentlich nicht so schwer sein, ich beiss mir aber die Zähne dran aus :(

    Jemand ne kleine Idee für mich?

    LG

  • WinMove innerhalb eines Remote-Fensters

    • mirko2002
    • 30. August 2017 um 08:55

    Hm jein... :)

    Auch dazu müsste ich ja der Maus sagen, welches Fenster er bewegen soll und genau das ist ja das Problem? Ich mag ja nur die Programme anordnen und auch in einer entsprechenden Größe positionieren. Das klappt halt lokal mit WinMove wunderbar.

    Da die Programme im Remote ja auch jedesmal an einer anderen Stelle starten, könnte ich für die Maus ja noch nichtmal positionen festlegen, dass er an einer bestimmten Stelle klicken und sich anschließend bewegen soll :(

    Oder habe ich gerade einen Denkfehler?

    Edit: Script auf dem Remote laufen lassen geht leider nicht, aufgrund fehlender Berechtigungen dort...

  • WinMove innerhalb eines Remote-Fensters

    • mirko2002
    • 30. August 2017 um 08:31

    Hallo zusammen,

    gibt es irgendeine Möglichkeit, ein Fenster innerhalb einer geöffneten Remote-Verbindung zu verschieben?

    Mit WinMove kann ich ja normalerweise meine Fenster anordnen... nur funktioniert das nicht mit Programmen, die sich innerhalb des Remotes befinden.

    Gibt's da irgendeinen Trick für?

    LG
    Mirko

  • Problem mit _Excel_BookOpen und WinAPI

    • mirko2002
    • 12. Januar 2017 um 12:16

    @water

    Also bisher läuft es... konnte es jetzt noch nicht sooo oft testen aber bisher ist es stabil :)

    Danke für den Hinweis auf den Fix.

  • Problem mit _Excel_BookOpen und WinAPI

    • mirko2002
    • 11. Januar 2017 um 09:53

    @BugFix

    Leider kann ich"nur" AutiIT. Mit VBA kenn ich mich überhaupt nicht aus... auch wenn es evtl sehr ähnlich ist.... man klammert sich halt immer an dingen die man kennt bzw kann...

    @water
    Hm ich glaube nicht - ich werde das aus Deinem Post mal testen (allerdings erst morgen - bin heute nur noch im Meeting)...

    Ich melde mich dann nochmal zurück.

    LG
    Mirko

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™