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

Beiträge von xTcisloVe

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 23:56
    Zitat von alpines

    Okay, nach ein bisschen rumgestochere habe ich das Problem gefunden. Offenbar sind die transparenten Bereiche in 7 klickbar und in 10 nicht.

    Da gibts aber einen "einfachen" Workaround. Zuerst habe ich versucht die Region des Controls auf seine eigentliche Region zu vergrößern aber das gelang mit nicht.

    Du kannst um das ganze rudimentär zu lösen die WM_LBUTTOMUP Nachricht registrieren und abfragen in welcher Position (auf welchen Button) geklickt wurde und dann die entsprechende Funktion ausführen.

    Aber da muss es doch bestimmt eine leichtere Methode geben...

    Interessant, danke fürs testen.

    Das ginge natürlich, hatte ich auch dran gedacht, ist aber alles andere als schön und bei der Control Anzahl:....

    array.PNG

    Liegt es vlt. an der UxTheme.dll ? Vlt sollte ich die von Win7 integerieren...

    Edit: heute nachmittag werde ich einfach mal nur ne Transparenz von 250 statt 255 einstellen, wird kaum anders aussehen aber evtl helfen.

    Edit: hab es auch mal mit Windows 7 getestet, da sind die transparenten Bereiche so wie es bei dir ist.

    Liegt es evtl. Daran das auch das Fenster anders aussieht auf 7? Also der Rand und so.

    Edit: Transparenz ändern hat nix gebracht.

    Interessant ist das mit der GUICtrlOnHover UDF - https://www.autoitscript.com/forum/topic/55…lsetonhover-udf genau das selbe Problem auftritt! Wtf!

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 21:47
    Zitat von alpines

    Hmm, eigenartig. Ich setz mir mal fix 'ne Win10 VM auf und teste das dann mal drauf. Melde mich gleich.

    Okay danke dir. Hatte das Script extra kompiliert und auch das hier getestet:
    https://www.autoitscript.com/forum/topic/10…ity-under-win7/

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 21:21
    Zitat von alpines

    Probier mal das ganze im Windows 7 Kompatibilitätsmodus auszuführen.

    Bringt leider nichts, komisch.

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 20:48
    Zitat von alpines

    Guck dir doch das Bild an welches ich gepostet hab. Bei mir sind die Controls vertikal mittig und bei dir scheinbar oben links.

    Das liegt daran weil ich nur einen Teil mit Photoshop ausgeschnitten und gepostet habe :D

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 20:09
    Zitat von alpines

    Dass bei dir die Controls oben sind kann nichts gutes heißen, ich verwende W7 x64 also kann ich auch nur spekulieren woran es liegt.

    Hast du im Skript noch was geändert seitdem du es gepostet hast?

    Ich habe das selbe probiert welches du gepostet hast. was bedeutet "oben" in dem Fall?

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 19:53
    Zitat von alpines

    Beide Radios, sowie die Labelbuttons klappen ohne Probleme mit dem geposteten Script von mir.

    cmd.jpg liegt im selben Ordner und beide MsgBoxen tauchen auf. 3.3.14.2

    AutoIt
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <GuiTab.au3>
    #include <Array.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)
    Local $hMain[8]
    Local $GUI, $GUIChild
    Local $aDropFiles
    _GUIMain()
    
    While 1
    
    WEnd
    
    Func _GUIMain()
    $hMain[0] = 7
    $GUI = GUICreate("GUIMain",1245,800,-1,-1,$WS_MAXIMIZEBOX,$WS_EX_ACCEPTFILES+$WS_EX_LAYERED)
    GUICtrlCreatePic(@scriptdir&"\"&"cmd.jpg",0,0,1245,800,$WS_CLIPSIBLINGS)
        GUICtrlSetState(-1,$GUI_DISABLE)
    $GUIChild = GUICreate("GUIMain",1245,800,-1,-1,$WS_POPUP,BitOr($WS_EX_LAYERED,$WS_EX_MDICHILD), $GUI)
        GUISetFont(12, 0, 0, 0, $GUIChild, 5)
        GUISetBkColor(0x605f5f, $GUIChild)
        GUICtrlSetDefColor(0xffffff, $GUIChild)
        GUICtrlSetDefBkColor(0x605f5f, $GUIChild)
        GUISetIcon(@ScriptDir & "\tools\icon.ico", $GUIChild)
    GUICtrlCreateLabel("",10,195,400,125,-1,$WS_EX_CLIENTEDGE)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("aUserDir[1]",15,200,390,25,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
        GUICtrlSetFont(-1,15,0,0,0,5)
    $hMain[1] = GUICtrlCreateLabel("aUserDir[1]",15,240,390,25,$SS_CENTERIMAGE,$WS_EX_CLIENTEDGE)
        GUICtrlSetFont(-1,13,0,0,0,5)
    $hMain[2] = GUICtrlCreateLabel("Drag & Drop or Browse to change.",15,280,260,25,$SS_CENTERIMAGE,$WS_EX_CLIENTEDGE)
        GUICtrlSetState(-1,BitOr($GUI_SHOW,$GUI_ENABLE,$GUI_DROPACCEPTED))
        GUICtrlSetFont(-1,14,0,0,0,5)
    $hMain[3] = GUICtrlCreateLabel("Browse",280,280,60,25,$SS_CENTERIMAGE+$SS_CENTER,$WS_EX_CLIENTEDGE)
    $hMain[4] = GUICtrlCreateLabel("Exit",1110,730,120,30,$SS_CENTERIMAGE+$SS_CENTER,$WS_EX_CLIENTEDGE)
    $hMain[5] = GUICtrlCreateGroup("Open Question",125,362,109,81,-1,-1)
    $hMain[6] = GUICtrlCreateRadio("On",157,390,53,20,-1,-1)
    $hMain[7] = GUICtrlCreateRadio("Off",157,416,53,20,-1,-1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = 1 To $hMain[0]
        DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($hMain[$i]), "wstr", 0, "wstr", 0)
        GUICtrlSetColor(-1, 0xFFFFFF)
    Next
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES')
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $GUI)
    GUISetOnEvent($GUI_EVENT_DROPPED, "_Dropped", $GUIChild)
    GUICtrlSetOnEvent($hMain[3], '_Browse')
    GUICtrlSetOnEvent($hMain[4], '_Exit')
    _WinAPI_SetLayeredWindowAttributes($GUIChild, 0x605f5f)
    GUISetState(@SW_SHOW, $GUI)
    GUISetState(@SW_SHOW, $GUIChild)
    EndFunc
    
    Func _Browse()
        MsgBox(0, "Test", "Browse")
    EndFunc
    
    Func _Dropped()
        _ArrayDisplay($aDropFiles)
    EndFunc
    
    Func _Exit()
        MsgBox(0, "Test", "Exit")
        Exit
    EndFunc
    
    Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $lParam
        Local $iSize, $pFileName
        Local $aRet = DllCall("shell32.dll", "int", "DragQueryFileW", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 0)
        Global $aDropFiles[$aRet[0] + 1] = [$aRet[0]]
        For $i = 0 To $aRet[0] - 1
            $aRet = DllCall("shell32.dll", "int", "DragQueryFileW", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
            $iSize = $aRet[0] + 1
            $pFileName = DllStructCreate("wchar[" & $iSize & "]")
            DllCall("shell32.dll", "int", "DragQueryFileW", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $iSize)
            $aDropFiles[$i + 1] = DllStructGetData($pFileName, 1)
            $pFileName = 0
        Next
        Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen



    Habe mal markiert wie es bei mir läuft, hab die selbe Autoit Version und Wndows 10 64Bit

    Dateien

    trigger.jpg 400,32 kB – 0 Downloads
  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 19:36
    Zitat von alpines

    Ich kann auch zwischen Text und Rand klicken und es funktioniert ohne Probleme.

    Das hat damit nichts zu tun. Wir verwenden hier unsere Freizeit um anderen Usern zu helfen und wenn man merkt, dass diese einfach nur so schnell wie möglich die Lösung haben wollen ohne dafür ein paar Minuten zu warten oder was dazu zu lernen, macht das einfach keinen Spaß mehr. Ein bisschen Respekt muss schon sein.

    Dann gibts auch noch Leute die überall posten, die Lösung abgreifen und dann sich nicht mehr melden, die Threads stauben voll und niemand hat was davon.

    Okay danke erstmal, ich lösche den anderen.

    Auch bei dem Exit Button? Bei mir klappt da nix..... Also außerhalb von "Exit"

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 19:12
    Zitat von alpines

    Ich wette mit dir du hast das falsche disabled. Ich meinte das Label welches um den Labelbutton liegt.

    Crossposting wird hier nicht gerne gesehen also lass das bitte

    Hast recht, hab das falsche disabled.

    Trotzdem kommt es mir vor als könnte man nur exakt auf den Text drücken und der Hintergrund reagiert nicht.

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 19:11
    Zitat von autoBert

    Da dürfte (zumindest im Skriptcode vom Spoiler) ein Include fehlen.

    Gar nicht gut finde ich, daß du für ein Standardthema gleich 2 Foren beschäftgen willst. :cursing:

    Und da du Drag-Drop benutzt, kommt es natürlich auf die Menge der Dateien an.

    #include <StaticConstants.au3>

    #include <GUIConstantsEx.au3>

    #include <WindowsConstants.au3>

    #Include <GuiButton.au3>

    #include <GuiTab.au3>

    #include <Array.au3>

    #include <EditConstants.au3>

    Die includes sollten reichen sorry.

    Es sind ja nicht überall die selben user untewegs oder?

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 17:33
    Zitat von alpines

    Ja, dann halt Labels. Du kannst auch Button so umrahmen, dass der graue Rand komplett verschwindet.

    Ich meinte das Label um das Browse Label, probiers doch mal, es klappt.

    Ändert nichts, habe es probiert.

    GUICtrlSetState(-1,$GUI_DISABLE)

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 17:12
    Zitat von alpines

    Du hast vergessen das Label (mit dem Rand) um den Button (Browser) herum zu deaktivieren. Der Exit-Button funktioniert standardmäßig weil er eben nicht drunter versteckt ist.

    Wo habe ich denn da einen Button erstellt? Ich erstelle ja nur das Label mit dem Rand als "Button", denn wenn man einen Button Hintergrund durchsichtig macht, bleibt der blaue Rand...

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 16:42
    Zitat von Oscar

    Im OnEventModus muss ein Sleep in die Endlosschleife, weil die sonst 100% Rechenzeit frisst:

    AutoIt
    While Sleep(1000)
    
    WEnd

    Danke das löst mein Problem aber nicht.

    Zitat von alpines

    Warum eine Child-GUI? Zeichne doch die Elemente direkt rein?

    Gibt es eine Möglichkeit anders alle Hintergründe der Controls durchsichtig zu bekommen und den Hintergrund zu behalten?

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • xTcisloVe
    • 9. September 2018 um 15:58

    Hallo, ich fasse den Thread mal zusammen.

    Ich möchte einen GUI mit Bild als Hintergrund, dazu sollten alle Controls Transparent sein.
    Das funktioniert soweit auch, nur werden die Transparenten Sektionen der Control dann nicht mehr erkannt, das Problem tritt aber nur auf Windows 10 auf und nicht auf Windows 7.

    Example.au3 und cmd.jpg gehören in den selben Ordner.

    Trigger.jpg zeigt an welche Sektionen auf Windows 10 nicht klickbar sind.

    Selbst mit der GUICtrlOnHover UDF - https://www.autoitscript.com/forum/topic/55…setonhover-udf/

    treten die selben Probleme auf!

    Ps: Ich weiß das ich den Thread auch auf, http://www.autoitscript.com gepostet habe, ich wusste nicht das sowas nicht gewollt ist und ich weiß nicht wie ich den Thread dort lösche.

    Wenn jemand Rat weiß wäre ich sehr dankbar.

    Interessant ist: Wenn ich aus dem Child GUI das $WS_EX_LAYERED raus nehme, Funktioniert alles.....Sieht natürlich doof aus.

    Dateien

    cmd.jpg 786,61 kB – 0 Downloads Example.au3 3,48 kB – 395 Downloads trigger.jpg 400,32 kB – 0 Downloads
  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 29. August 2018 um 19:34

    Problem scheint gelöst zu sein, zumindest erhalte ich jetzt immer die richtigen Ergebnisse.

    Code
    Func _FindDuplicates($sPath)
        Local $aFiles, $aFind, $aRet
        $aFiles = _FileListToArrayRec($sPath, "*", 1, 1, 0, 0)
        For $i = 1 To $aFiles[0]
            $aFind = _ArrayFindAll($aFiles, $aFiles[$i])
            If UBound($aFind) <> 1 Then
                If Not StringInStr($aRet, $aFiles[$i]) Then $aRet &= $aFiles[$i] & "|"
            EndIf
        Next
        $aRet = StringSplit(StringTrimRight($aRet, 1), "|")
        Return $aRet
    EndFunc
    
    Func _CreatePath($sPath, $idParent, $aDupl)
        Local $aFolder, $aFiles, $idItem, $aPath
        If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
        $aFolder = _FileListToArray($sPath, '*', $FLTA_FOLDERS)
        If Not @error Then
            For $i = 1 To $aFolder[0]
                $idItem = GUICtrlCreateTreeViewItem($aFolder[$i], $idParent)
                GUICtrlSetColor(-1, 0x098902)
                $aPath = _FileListToArrayRec($sPath & $aFolder[$i], "*", 1, 1, 0, 0)
                For $s = 1 To $aPath[0]
                    _ArraySearch($aDupl, $aPath[$s])
                    If Not @error Then GUICtrlSetColor($idItem, 0xf41e0e)
                Next
                GUICtrlSetImage(-1, "shell32.dll", 4)
                _CreatePath($sPath & $aFolder[$i], $idItem, $aDupl)
            Next
        EndIf
        $aFiles = _FileListToArray($sPath, '*', $FLTA_FILES)
        If @error Then Return
        For $i = 1 To $aFiles[0]
            $idItem = GUICtrlCreateTreeViewItem($aFiles[$i], $idParent)
            GUICtrlSetImage(-1, @ScriptDir & "\tools\icon.ico")
            GUICtrlSetColor(-1, 0x098902)
            _ArraySearch($aDupl, $aFiles[$i])
            If Not @error Then GUICtrlSetColor($idItem, 0xf41e0e)
        Next
    EndFunc
    Alles anzeigen


    Ergebnis:

    array.PNG

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 29. August 2018 um 19:01

    Ich habe die _CreatePath Funktion modifiziert und die Ergebnisse werden schon besser, was mache ich falsch?
    Ich denke auch nicht das die Änderung an sich sonderlich Effizient ist.


    Code
    Func _FindDuplicates($sPath)
        Local $aFolder, $aFiles, $aFind, $aRet_1, $aRet_2, $aRet_3, $sDir
        $aFolder = _FileListToArrayRec($sPath, "*", 1, 1, 0, 1)
        $aFiles = _FileListToArrayRec($sPath, "*", 1, 1, 0, 0)
        For $i = 1 To $aFiles[0]
            $aFind = _ArrayFindAll($aFiles, $aFiles[$i])
            If UBound($aFind) <> 1 Then
                $aRet_1 &= $aFolder[$i] & "|"
                $x = StringSplit($aFolder[$i], "\")
                $sDir = StringReplace($aFolder[$i], $x[$x[0]], "")
                $sDir = StringTrimRight($sDir, 1)
                If Not StringInStr($aRet_2, $sDir, 1) Then $aRet_2 &= $sDir & "\"
                $aRet_2 &= $x[$x[0]] & "\"
                If Not StringInStr($aRet_3, $x[$x[0]]) Then $aRet_3 &= $x[$x[0]] & "\"
            EndIf
        Next
        $aRet_1 = StringSplit(StringTrimRight($aRet_1, 1), "|")
        $aRet_2 = StringSplit(StringTrimRight($aRet_2, 1), "\")
        $aRet_3 = StringSplit(StringTrimRight($aRet_3, 1), "\")
        _ArraySort($aRet_1, 0, 1)
        Local $aRet[4]
            $aRet[0] = 3
            $aRet[1] = $aRet_1
            $aRet[2] = $aRet_2
            $aRet[3] = $aRet_3
        Return $aRet
    EndFunc
    
    Func _CreatePath($sPath, $idParent, $aDupl_Files)
        Local $aFolder, $aFiles, $idItem, $aPath
        If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
        $aFolder = _FileListToArray($sPath, '*', $FLTA_FOLDERS)
        If Not @error Then
            For $i = 1 To $aFolder[0]
                $idItem = GUICtrlCreateTreeViewItem($aFolder[$i], $idParent)
                GUICtrlSetColor(-1, 0x098902)
                $aPath = _FileListToArrayRec($sPath, "*", 1, 1, 0, 0)
                For $s = 1 To $aPath[0]
                    _ArraySearch($aDupl_Files, $aPath[$i])
                    If Not @error Then GUICtrlSetColor($idItem, 0xf41e0e)
                Next
                GUICtrlSetImage(-1, "shell32.dll", 4)
                _CreatePath($sPath & $aFolder[$i], $idItem, $aDupl_Files)
            Next
        EndIf
        $aFiles = _FileListToArray($sPath, '*', $FLTA_FILES)
        If @error Then Return
        For $i = 1 To $aFiles[0]
            $idItem = GUICtrlCreateTreeViewItem($aFiles[$i], $idParent)
            GUICtrlSetImage(-1, @ScriptDir & "\tools\icon.ico")
            GUICtrlSetColor(-1, 0x098902)
            _ArraySearch($aDupl_Files, $aFiles[$i])
            If Not @error Then GUICtrlSetColor($idItem, 0xf41e0e)
        Next
    EndFunc
    Alles anzeigen

    Ergebnis:

    array.PNG

    Ps: Ich gebe 3 Arrays in der FindDuplicates Funktion zurück, da ich nicht weiß welchen ich benutzen soll/kann :D

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 29. August 2018 um 18:32
    Zitat von autoiter

    Ah, sorry eine Nebelkerze. Ich habe mich von den Bezeichnungen blenden lassen. Ich dachte der unterschiediche Prameter wäre wirklich der für Datei- bzw. Ordner-Auflistung.

    Weiter viel Erfolg.

    Danke dir, bin noch offen für Ratschläge, da ich noch keine Lösung habe.

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 29. August 2018 um 09:05
    Zitat von autoiter

    Hallo xTcisloVe

    Ich habe gar nicht vielbeizutragen. Aber nach einem Blick auf deine _FindDuplicates Funktion, meine ich, die wird das ein oder andere Mal abstürzen. Das ist dir bei deinen Tests nur nicht aufgefallen, weil du mit wenigen Dateien testest oder nur am Anfang Dublikate hast.

    In der For Schleife kann $i jeden Indexwert von $aFiles annehmen. Bei einem Treffer greifst du auf den auf $aFolder[$i] zu. In der Annahme, dass du meist mehr Dateien als Ordner hast, solltest du früher oder später auf einen Indexwert zugreifen, den es gar nicht in $aFolder gibt und das Skript zum Abbruch bringen.

    Warum?

    1. $aFolder = _FileListToArrayRec($sPath, "*", 1, 1, 0, 1)
    2. $aFiles = _FileListToArrayRec($sPath, "*", 1, 1, 0, 0)

    Die beiden Arrays sind doch exakt gleich, oder irre ich? Der eine ist mit Relativem Pfad und der andere nur mit den Dateien....

    Hab ich das was falsch verstanden?

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 28. August 2018 um 22:02

    Ich habe meine _FindDuplicates Funktion verändert und bin der ganzen Sache wohl einen Schritt näher.

    Code
    Func _FindDuplicates($sPath)
        Local $aFolder, $aFiles, $aFind, $aRet_1, $aRet_2, $sDir
        $aFolder = _FileListToArrayRec($sPath, "*", 1, 1, 0, 1)
        $aFiles = _FileListToArrayRec($sPath, "*", 1, 1, 0, 0)
        For $i = 1 To $aFiles[0]
            $aFind = _ArrayFindAll($aFiles, $aFiles[$i])
            If UBound($aFind) <> 1 Then
                $aRet_1 &= $aFolder[$i] & "|"
                $x = StringSplit($aFolder[$i], "\")
                $sDir = StringReplace($aFolder[$i], $x[$x[0]], "")
                $sDir = StringTrimRight($sDir, 1)
                If Not StringInStr($aRet_2, $sDir, 1) Then $aRet_2 &= $sDir & "\"
                $aRet_2 &= $x[$x[0]] & "\"
            EndIf
        Next
        $aRet_1 = StringSplit(StringTrimRight($aRet_1, 1), "|")
        $aRet_2 = StringSplit(StringTrimRight($aRet_2, 1), "\")
        _ArraySort($aRet_1, 0, 1)
        Local $aRet[3]
            $aRet[0] = 2
            $aRet[1] = $aRet_1
            $aRet[2] = $aRet_2
        Return $aRet
    EndFunc
    Alles anzeigen


    $aRet_2 =

    Wenn jetzt noch jemand einen Tipp hätte wie ich das auf meinen Tree anwende :P

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 28. August 2018 um 17:28
    Zitat von BugFix

    Das hier sollte dir helfen: FolderStruct - Ordnerstruktur in Datei speichern / aus Datei erstellen

    Der Link in Post 1 (diesem Thread) passt seit der Forumsumstellung nicht mehr, das ist das Ziel: Anlegen vieler Verzeichnisse und Unterverzeichnisse aus Dateiliste möglich?.

    Hallo,
    vielen dank.

    Ich denke du meinst Redim aus der _FillTreeviewFromFolder

    An sich konnte ich das für mich umsetzen, nur das Ergebnis ist nicht ganz wie gewünscht.

    array.PNG

    Ich komme noch nicht drauf wie ich das richtig anordne, so das die richtigen Files unter den richtigen ordnern sind wie bei Row 7.

    Der kack beschäftigt mich seit Samstag morgen.

    Edit: Ich denke ich muss meine Funktion so umschreiben, das ich jede Datei samt Pfad im Tree erstelle und nicht Ordner für Ordner und dann Datei für Datei.

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 21:39
    Zitat von alpines

    Speicher dir doch die Struktur des TreeViews beim Erstellen dann ab, du musst lediglich die Create Funktion modifizieren.

    Dann speicherst du die ganzen Unterordner und Zweige in einem Array, Dictionary oder was auch immer und wenn du am Ende die Duplikate durchgehst kannst du währenddessen dein Array, Dictionary, o. ä. iterieren und gleichzeitig färben.

    Du weißt ja was du färben möchtest, nur hast du keine Ahnung wie du an die Objekte kommen sollst.

    Das ist ja mein Problem, deswegen der Thread.

    Damit funktioniert es nicht.
    Edit:

    Code
    Func _SetColor($hTreeView, $aFiles)
        Local $hFile = 0, $iBreak = 0
        Local $hItem
        For $i = 1 To $aFiles[0]
            $hFile = 0
            $iBreak = 0
            Do
            $hItem = _GUICtrlTreeView_FindItem($hTreeView, $aFiles[$i], True, $hFile)
            If $hItem <> 0 Then
                $hFile += 1
                _GUICtrlTreeView_SetTextColor($hItem, $COLOR_RED)
                _GUICtrlTreeView_SetTextColor(_GUICtrlTreeView_GetTree($hTreeView, $hItem), $COLOR_RED)
            Else
                $iBreak = 1
            EndIf
            Until $iBreak = 1
        Next
    EndFunc
    Alles anzeigen

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™