TreeView zapis do pliku

0

Chciałbym zoptymalizować zapis folderów do pliku.

Problem mam na etapie zapisania ścieżki tylko dla folderu, który ma zaznaczone wszystkie podfoldery.
Jeśli w podgałęziach jest któryś folder odznaczony, to trzeba zapisać wszystkie zaznaczone gałęzie.
Jeśli w podgałęziach jest wszystko zaznaczone, to należy zapisać tylko gałąź główną.

Zobrazuje to:

user image

1: Wynik w pliku powinien być:
C:

a mnie wychodzi:
C:$RECYCLE.BIN
C:\Boot
C:\Documents and Settings
C:\MSOCache
C:\Program Files
C:\Recycled
C:\RECYCLER
C:\System Volume Information
C:\WINDOWS

2: Wynik w pliku powinien być:
C:$RECYCLE.BIN

i tak też mam.

Zauważyłem iż problem pojawia się po rozwinięciu gałęzi.
Jeśli zaznaczę cały dysk C bez rozwijania gałęzi, poprawnie mi zapisuje tylko "C:" do pliku.

procedure SaveChecksToDisk(FileName: string);
var
 List: TStringList;
 i: integer;
 Node: TTreeNode;
 Path: string;
begin
 List := TStringList.Create;
 for i := 0 to Items.Count - 1 do
   begin
    Node := Items[i];
    if (Node.Level > 0) and (Node.StateIndex = CHECKED) then
      begin
       if (Node.GetFirstChild <> nil) and (Node.GetFirstChild.StateIndex = CHECKED) then Continue;
       Path := GetDirectory(FRootShellFolder, Node.Data, SHGDN_FORPARSING);
       Application.ProcessMessages;
       List.Add(Path);
      end;
   end;
 List.SaveToFile(FileName);
 List.Free;
end;

Proszę o pomoc

0

Już mniej więcej doszedłem jak to sprawdzić, a mianowicie.

Muszę sprawdzić, będąc w podgałęzi, czy gałąź główna ma ikonę z czerwonym znaczkiem (jak na zdjęciu). Jeśli ma, to pomijam operacje na podgałęzi aż do następnej gałęzi.

Nie wiem jednak jak odwołać się do gałęzi... chyba chodzi o:

Node.GetPrevChild(???).StateIndex

Macie propozycje ? :|

1 użytkowników online, w tym zalogowanych: 0, gości: 1