![]() |
Re: ListView, Icon und SHGetFileInfo
ich habe leider noch ein Problem
mein LV steht auf vsReport In der SmallImages eine ImageList (LargeImage ist ja nur für vsIcon) aus dieser ImagesList kommen die Icon für die Columns jetzt lese ich dateien/laufwerke aus dem System ein und möchte aus SHFIleInfo das passende Icon haben dieses Icon soll dann in der ListView angezeigt werden jetzt brauch ich aber noch eine ImagesList, und wie bekomme ich die ins ListView ohne die ImagesList für die Columns zu überschreiben? |
Re: ListView, Icon und SHGetFileInfo
IMHO wirst du da wohl auf das API ausweichen müssen, weil die VCL-List-View eben nur "SmallImages" und "LargeImages" kennt. Die Spalten gehören aber zu einem separaten Control (genannt "Header"), und dem Ding kann man über das API eigene Pics verpassen.
Als Anregung empfehle ich dir den List-View-Beitrag in den Win32-API-Tutorials für Delphi von Luckie. Stichwort: "Die Sortierrichtung im Spaltenkopf anzeigen". Da geht es zwar nur darum, den Sortierpfeil korrekt anzuzeigen, aber das Prinzip ist ja eben genau das: Eine Bitmap auf dem jeweiligen Spaltenkopf zu platzieren. Musst mal schauen ob dir das irgendwie hilft. @Daniel: Ich fordere ein Update der "bbcode.php", die das Vorkommen von Win32-API-Tutorials für Delphi automatisch in einen Link auf Luckies Homepage umbaut. :mrgreen: |
Re: ListView, Icon und SHGetFileInfo
hab die Icon in den Columns weggelassen
nur hab ich jetzt folgenden effekt ich hab 2 ListView lass ich mir in ListView1 alle dateien anzeigen zeigt auch die Icon zu den Dateien lass ich mir dann ListView2 die Dateien anzeigt zeigt er AUCH die Icon an nun kommt es start ich das programm neu und laß mir erst die Dateien in ListView2 anzeigen sind keine Icon da lass ich sie dann wieder in ListView2 anzeigen sind sie da und kann ich sie mir auch in ListView1 anzeigen lassen
Delphi-Quellcode:
//******************************************************************************
//IE CookieCache lesen Procedure IECache_Cookie_Lesen_IECU(); var ie_cache : PINTERNETCACHEENTRYINFO; size_dw : DWord; cache_dir_dw : DWord; icon_list_il : HImageList; list_item_li : TListItem; file_info_fi : TSHFileInfo; begin //Icon laden icon_list_il := HImageList(SHGetFileInfo('', 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON)); if (icon_list_il <> 0) then begin Haupt_Form.Wartung_Temp_ImageList1.Handle := icon_list_il; Haupt_Form.Wartung_Temp_ImageList1.Height := 16; Haupt_Form.Wartung_Temp_ImageList1.Width := 16; end; Haupt_Form.Wartung_ListView01.Items.BeginUpdate; Haupt_Form.Wartung_ListView01.Items.Clear; size_dw := 65536; ie_cache := AllocMem(size_dw); try cache_dir_dw := FindFirstUrlCacheEntry(NIL, ie_cache^,size_dw); while cache_dir_dw <> 0 do begin Application.ProcessMessages; if ((ie_cache^.CacheEntryType AND COOKIE_CACHE_ENTRY) = COOKIE_CACHE_ENTRY) then begin //Name list_item_li := Haupt_Form.Wartung_ListView01.Items.Add; list_item_li.Caption := ie_cache^.lpszSourceUrlName; //Icon SHGetFileInfo(ie_cache^.lpszLocalFileName, 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON); list_item_li.ImageIndex := file_info_fi.iIcon; //Grösse list_item_li.SubItems.Add(Datei_Groesse_Format_GU(Datei_Groesse_GU(ie_cache.lpszLocalFileName))); end; size_dw := 65536; if not FindNextURLCacheEntry(cache_dir_dw,ie_cache^,size_dw) then begin cache_dir_dw := 0; end; end; finally FreeMem(ie_cache,65536); Haupt_Form.Wartung_ListView01.Items.EndUpdate; end; end; //****************************************************************************** //IE URLHistoryCache lesen Verläufe Procedure IECache_URLHistory_Lesen_IECU(); var ie_cache : PINTERNETCACHEENTRYINFO; size_dw : DWord; cache_dir_dw : DWord; icon_list_il : HImageList; list_item_li : TListItem; file_info_fi : TSHFileInfo; begin //Icon laden icon_list_il := HImageList(SHGetFileInfo('', 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON)); if (icon_list_il <> 0) then begin Haupt_Form.Wartung_Temp_ImageList1.Handle := icon_list_il; Haupt_Form.Wartung_Temp_ImageList1.Height := 16; Haupt_Form.Wartung_Temp_ImageList1.Width := 16; end; Haupt_Form.Wartung_ListView11.Items.BeginUpdate; Haupt_Form.Wartung_ListView11.Items.Clear; size_dw := 65536; ie_cache := AllocMem(size_dw); try cache_dir_dw := FindFirstUrlCacheEntry(NIL, ie_cache^,size_dw); while cache_dir_dw <> 0 do begin Application.ProcessMessages; if (ie_cache^.CacheEntryType AND URLHISTORY_CACHE_ENTRY) = URLHISTORY_CACHE_ENTRY then begin //Name list_item_li := Haupt_Form.Wartung_ListView11.Items.Add; list_item_li.Caption := ie_cache^.lpszSourceUrlName; //Icon SHGetFileInfo(ie_cache^.lpszLocalFileName, 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON); list_item_li.ImageIndex := file_info_fi.iIcon; end; size_dw := 65536; if not FindNextURLCacheEntry(cache_dir_dw,ie_cache^,size_dw) then begin cache_dir_dw := 0; end; end; finally FreeMem(ie_cache,65536); Haupt_Form.Wartung_ListView11.Items.EndUpdate; end; end; Es ist aber immer nur eine ListView sichbar kannst du helfen ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz