Ikonki

0

Witam,
mam sobie taką procedurkę do FormCreate-a:

var
Ico : PShFileInfo;
begin
ImageList1.Handle := ShGetFileInfo(PChar('plik'), 0, Ico, sizeof(TShFileInfo), SHGFI_SYSICONINDEX OR SHGFI_ICON OR SHGFI_SMALLICON);
Image1.Picture.Icon.Handle:=Ico.hIcon;
ImageList1.ShareImages := TRUE;
ListView1.Selected.ImageIndex := Ico.iIcon;
end; 

Podczas gdy kompiluje program wywala błąd:

user image

Po kliknieciu na OK włącza się, ale nic nie dziala ;-(. Czy wie ktoś co jest źle??

Pozdr,
Red Hot

0

A istnieje plik o nazwie "plik", ma w zasobach ikone, i czy jest w tym samym folderze co program?

0

[code]ListView1.Selected.ImageIndex := Ico.iIcon;[/code]

Najpierw sprawdz czy cos jest zaznaczone.

//mm no tak

0

[code]ListView1.Selected.ImageIndex := Ico.iIcon;[/code]
Najpierw sprawdz czy cos jest zaznaczone.

Wtedy by wyskoczylo:
'(blablabla)
List index out of Bound (-1)
(blablabla)';
:-P

//poza tym sprawdz, czy dziala w np. OnClick jakiegos buttona...

0
  1. Używaj debuggera
  2. Zobacz czy ListView ma we właściwości 'SmallImages' lub 'LargeImages' wybrany komponent 'ImageList1'
  3. Sprawdź czy jakikolwiek Item w ListView został wybrany
0

Pokombinowałem i poszło. Tylko, że wyświetla mi ikonkę w Image-u, a ja chce jeżeli jest plik o danym rozszerzeniu (w ListView-ie) to żeby wybierał do niego odpowiednią ikonkę. Czy da się to zrobić??

0

Wszystko sie da. Mozesz np wyciagnac to rozszerzenie i zrobic kilka if'ow, potem albo wyciagnac systemowe ikonki, albo ustawic jakies wlasne.

0

Mógłbyś Mi pomóc bo nie jestem w tym najlepszy?? Może jakaś procedurka??

0

Procedurka do czego? Wyciagania rozszerzenia: byl o tym temat na forum, wyciaganie ikony: Poszukaj na torry w dziale tips.

A jesli nie chce ci sie bawic z systemowymi ikonami to mozesz po prostu wrzucic jakiegos ImageList, w nim ikonki, potem tylko zalerznie od rozszerzenia zmieniasz ImageIndex.

A tak w sumie to ta twoja procedurka moze do tego posluzyc.

Nie sprawdzalem:

//Zakladajac, ze w SubItems[0] masz sciezke do pliku

procedure MakeIcons(var ListView: TListView; ImageList: TImageList); 
var 
  q: Integer; 
  Icon: TIcon; 
  ListItem: TListItem; 
  FileInfo: SHFILEINFO; 
begin 
  Icon := TIcon.Create; 
  ListView.Items.BeginUpdate; 
  for q := 0 to ListView.Items.Count -1 do begin
    SHGetFileInfo(PChar(ListView.Items[q].SubItems[0]), 0, FileInfo, 
    SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON); 
    icon.Handle := FileInfo.hIcon; 
    ListItem.ImageIndex := ImageList.AddIcon(Icon); 
    DestroyIcon(FileInfo.hIcon);
  end;
  Icon.Free;
  ListView.Items.EndUpdate; 
end;
0

Dzięki, tylko że próbuje skompilować to wywala błąd

[Error] Unit1.pas(32): Undeclared identifier: 'SHFILEINFO'

itd. tylko, że zamiast SHFILEINFO wywala SHGetFileInfo itd.

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