Icon aus Datei
-
Hallo!
Ich möchte einer TListView einen Eintrag hinzufügen mit dem Symbol einer Datei... Komme damit jedoch nicht ganz klar...
Habe folgenden Code:TListItem *Listitem; TIcon *Icon = new TIcon(); String ExtrFileName; ExtrFileName = "C:\\Beispiel.exe"; Listitem = ListView1->Items->Add(); Listitem->Caption = ExtrFileName; Icon->Handle = ExtractIcon(HInstance,ExtrFileName.c_str(),0); Listitem->ImageIndex = ImageList1->AddIcon(Icon); //Die folgende Zeile entkommentieren zeigt, dass der ImageList kein Icon //hinzugefügt wird... :-( //ShowMessage(IntToStr(ImageList1->Count));Irgendwie wird aber der ImageList1 nichtmal ein Icon hinzugefügt... Was mache ich da nur falsch??
tschüss
Robert
-
Sieht auf Anhieb alles richtig aus, abgesehen davon, dass das delete fehlt.

Hast du denn mal überprüft, ob ExtractIcon überhaupt erfolgreich ist, also einen Wert ungleich NULL zurückgibt?
-
Hallo!
Erstmal besten Dank für deine Antwort!
ups... - delete fehlt... - ohh du Peinlichkeit
Habe den Fehler gefunden: Ich hatte dem ListView SmallImages statt LargeImages auf ImageList1 gesetzt...
Was ich jetzt aber festgestellt habe: Ich bin dumm
Ich kann zwar jetzt stolz sein, dass dies funktioniert, bemerke dabei aber auch gleich, dass das gar nicht die Funktion ist, die ich brauche ...
:o
Da hab ich mich wohl irgendwo "verlesen"
Ich möchte, dass das Icon einer jeden Datei angezeigt werden kann. Mit meiner Funktion kann ich jetzt zwar die Icons einer Exe, Dll oder ICO - Datei anzeigen, das Symbol für eine *.txt oder *.doc - Datei zeigts mir aber leider nicht an...

Weiß vielleicht jemand, welche Funktion ich da brauche???
Danke nochmal!
tschüss
Robert
-
Hi rowisoft
ich mach das so:
void __fastcall TForm1::LoadAppIcon(AnsiString FName) { SHFILEINFO shFinfo; HIMAGELIST hImgList = NULL; if (FName.Length()>0) { hImgList = (HIMAGELIST)SHGetFileInfo( FName.c_str(), 0, &shFinfo, sizeof( shFinfo ), SHGFI_ICON); TIcon *Icon; Icon=new TIcon; Icon->Handle=CopyIcon(shFinfo.hIcon); Image1->AutoSize=true; Image1->Stretch=false; Image1->Picture->Assign(Icon); delete Icon; } }Ich lass das Icon gleich in 'nem TImage anzeigen.
Geht prima! Holt die Zuordnung, die Windows im Explorer nutzt!

PS: Du musst das nicht in ner Funktion verpacken! :p
[ Dieser Beitrag wurde am 30.03.2003 um 15:58 Uhr von DerAltenburger editiert. ]
-
Hallo!
Vielen Dank! Funktioniert!!!
Wäre das jetzt nicht vielleicht was für die FAQ - 2 "Icon-Funktionen" in einem?Danke euch nochmal!!!
schönen Sonntag!
tschüss
Robert
-
die info hättest du durch suchen auch finden können!

Dateien+Verzeichnisse - Standard-Icons für Dateianzeige verwenden
-
Wo mag wohl DerAltenburger den Code her haben ...

Aber wer hat denn mal eine schöne/treffende Überschrift für die FAQ?
Sowas wie "Standard-Icons für Dateianzeige verwenden" vielleicht?
-
Original erstellt von Jansen:
Sowas wie "Standard-Icons für Dateianzeige verwenden" vielleicht?Joa, is OK.
-
Wo mag wohl DerAltenburger den Code her haben
Ich glaub' das war 'mal in einer Delphi- FAQ (Torrys o.ä.)

Bin eigentlich Pascal- Freak gewesen. :p
-
Nur seltsam, dass du in dem von Sunday zitierten, knapp 3 Wochen alten Thread scheinbar noch keine Ahnung davon hattest ...

-
Da gings mir um die Gesantkomponente 'TreeView fuer Ordner- Baum' !!!
(Treeview fuer alle Laufwerke, Arbeitsplatz und Netzwerk [mit oder ohne Icons])