Jak zczytać systemowe ikonki

0

jak wciagnac systemowe ikonki odpowiednie dla danego pliku, bo nie wiem a chciałęm troche zmodyfikowac komponent załączony Tsystemtreeview, jak ktos nie poda swojej bazy ikonek aby program wciagał inteligętnie sam odpowiednie tylko nie wiem jak wyciagnąc info o tym jaka ilonka i gdzie jest

oto link tego komponentu
http://www.4programmers.net/download.php?id=796

0

Poszukaj w SDK.
Jest tam funkcja nazywająca się GetFileIcon (albo coś podobnego). Jak odpowiednio ustatisz parametry to dostaniesz w nagrodę uchwyt do TImageList zawierającego wszystkie ikony systemowe :)

0

GetFileIcon nie znalazłem, ani w SDK ani w Delphim, ale znalazłem coś innego co chyba robi to co chcemy

SHGetFileInfo

0

Tak SHGetFileInfo zwróci ci ikonkę powiązaną z plikiem (używałem tego kiedyś w swoim komponencie), jednak nie zwróci ikonki związanej z konkretnym dyskiem :( Niestety w swoim komponencie pisanym jeszcze pod Win95 musiałem ręcznie określić które ikonki z shell32.dll pasują do dysków, a w Win98 już się wszystko zmieniło ;( Jak będziesz wiedział jak coś takiego zrobić to wrzuć do FAQ.
A jeżeli chodzi o uzyskiwanie ikonki to takie coś w moim komponenciku jest:

ShGetFileInfo(Buf, 0, Dir, SizeOf(Dir), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
Node.ImageIndex := Dir.iIcon;
ShGetFileInfo(Buf, 0, Dir, SizeOf(Dir), SHGFI_OPENICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
Node.SelectedIndex := Dir.iIcon;

Gdzie
Buf: array [0..260] of Char; //W Windowsie 260 znaków maks. dł. ścieżki
a Dir: TShFileInfo;
oraz Node to jest jedeno z dzieci TTreeView

0

hmm a co z uchwytem do obrazkow? jest cos takiego jak Hicon tylko ze typy sie nie zgadzaą mam niby uchwyt ale nie wiem jak go podczepic pod moj TImageList

0

hmm a co z uchwytem do obrazkow? jest cos takiego jak Hicon tylko ze typy sie nie zgadzaą mam niby uchwyt ale nie wiem jak go podczepic pod moj TImageList

Tak:

  1. ustalasz w helpie parametry, aby uzyskać z tej funkcji handle do imagelista
  2. robisz: imagelist1.handle:=wynik_procedury
  3. robisz: imagelist1.share (czy coś w tym stylu, nie pamiętam dokładnie) := true
  4. potem pobierasz tylko za pomocą tej funkcji z odpowiednimi parametrami indeksy ikon w imageliście

Punkt 3 możesz sobie odpuścić, jeżeli chcesz po wyłaczeniu programu zobaczyć fajny efekt :)

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