ShellListView - Domyślna ścieżka Delphi

0

Witam korzystam w delphi z komponentu ShellListView, przez który wybieram sobie plik jpeg do wyświetlenia. Klikając 2 razy na ten komponent w polu Use Path wpisałem po prostu nazw folderu bez dysku no "Nowy Folder". W obrębie mojego komputera gdziekolwiek przeniose folder z całym projektem (w którym też znajduje się folder z obrazkami) ShellListView działa poprawnie. A jak przeniosę cały projekt na inny komputer to wywala błąd i muszę zmienić ścieżkę i podać nazwę dysku i całą dokładną ścieżkę. Czy da się jakoś zrobić aby ShellListView czytal z katalogu w którym jest projekt niezależnie na którym komputerze?

0
rafal92909 napisał(a)

Klikając 2 razy na ten komponent w polu Use Path wpisałem po prostu nazw folderu bez dysku no "Nowy Folder".

U mnie nie ma możliwości wpisania na sztywno takiej nazwy, bo kompilator generuje błąd:

ErrStgPth.png

mimo tego, że projekt jest zapisany na dysku i katalog Nowy folder istnieje;

rafal92909 napisał(a)

W obrębie mojego komputera gdziekolwiek przeniose folder z całym projektem (w którym też znajduje się folder z obrazkami) ShellListView działa poprawnie. A jak przeniosę cały projekt na inny komputer to wywala błąd i muszę zmienić ścieżkę i podać nazwę dysku i całą dokładną ścieżkę.

Nie mam pojęcia dlaczego tak jest, ale jest gdzieś na pewno taki jeden trybik co nie trybi;

rafal92909 napisał(a)

Czy da się jakoś zrobić aby ShellListView czytal z katalogu w którym jest projekt niezależnie na którym komputerze?

Jest i to wiele sposobów; Można to zrobić z poziomu kodu; Załóżmy, że właściwość komponentu ShellListView.Root będzie ustawiona na standardową wartość rfDesktop; Teraz podczas tworzenia formularza wykorzystasz prostą instrukcję, która odczyta nazwę katalogu, w którym znajduje się aplikacja po czym doda do niej nazwę interesującego Cię katalogu w ten sposób:

ShellListView1.Root := ExtractFilePath(Application.ExeName) + 'Nowy folder';

jeżeli nie chcesz mieć łańcucha zakończonego backslesh'em, lub:

ShellListView1.Root := ExtractFilePath(Application.ExeName) + 'Nowy folder\';

jeśli ma być nim zakończony (jak będziesz wolał, tak zrobisz (oba łańcuchy są poprawne));

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