ShellListView - Domyślna ścieżka Delphi

ShellListView - Domyślna ścieżka Delphi
R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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?

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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:

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

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

Kopiuj
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));

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.