Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Icons viel zu klein (https://www.delphipraxis.net/129448-icons-viel-zu-klein.html)

Sir K 19. Feb 2009 12:48


Icons viel zu klein
 
Hallo,

ich benutze den unteren Code um mir in ner ListView das Icon eines bestimmten Dateityps anzeigen zu lassen. Klappt soweit auch ganz gut nur hab ihc das Problem, dass die Icons nur ganz winzig dargestellt werden. Achso und ich weis auch nicht welchen Parameter ich der function "GetAssociatedIcon" übergeben muss damit ich das Icon von einem Verzeichnis bekomme.

Delphi-Quellcode:
function GetAssociatedIcon(const AExtension: string; ASmall: Boolean): HIcon;
var
  Info: TSHFileInfo;
  Flags: Cardinal;
begin
  if ASmall then
    Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES
  else
    Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES;

  SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags);
  Result := Info.hIcon;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ListItem: TListItem;
     icon : TIcon;
begin
  ListView1.ViewStyle:=vsIcon;
  ListView1.LargeImages := Imagelist1;
  Icon := TIcon.Create;
  Icon.Handle := GetAssociatedIcon('.wma', false);
  icon.Transparent := true;

   ListView1.Items.BeginUpdate;
     ListItem := ListView1.Items.Add;
     ListItem.ImageIndex := ImageList1.AddIcon(Icon);
     ListItem.Caption := 'Test.wma';
   ListView1.Items.EndUpdate;
Icon.Free;
end;
Gruß
Sir K

dataspider 19. Feb 2009 13:46

Re: Icons viel zu klein
 
Hi,

keine Ahnung, ob es hilft, aber ich nutze die Methode aus ComCtrl:

Delphi-Quellcode:
function TFRMDlgHtmlMail.CheckIcon(const AFileName: string): Integer;
var
  FileInfo : TSHFileInfo;
begin
  Result := -1;
  if SHGetFileInfo(PChar(AFilename), 0, FileInfo, SizeOf (FileInfo), SHGFI_ICON or SHGFI_SMALLICON) <> 0 then
  begin
    ImageList_AddIcon(ImageList.Handle, FileInfo.hIcon);
    DestroyIcon(FileInfo.hIcon);
    Result := ImageList.Count -1;
  end;
end;
Damit kann man sich auch den Umweg über TIcon.Create sparen.

Hab nur Copy und Paste gemacht (nicht auf deine Namen angepasst...

Frank

Sir K 19. Feb 2009 15:09

Re: Icons viel zu klein
 
was kommt in der Zeile hin?
Delphi-Quellcode:
ImageList_AddIcon(ImageList.Handle, FileInfo.hIcon);
wenn ich daraus
Delphi-Quellcode:
Form1.ImageList1_AddIcon(ImageList.Handle, FileInfo.hIcon);
mache bekomme ich die Meldung Undefinierter Bezeichner

und bei der Abänderung hier
Delphi-Quellcode:
For1.ImageList1.AddIcon(ImageList.Handle, FileInfo.hIcon);
die Melduing "Inkompatible Datentypen 'TIcon' un 'Cardinal'.


Gruß
Sir K

dataspider 19. Feb 2009 16:32

Re: Icons viel zu klein
 
probier mal:

Delphi-Quellcode:
ImageList_AddIcon(ImageList1.Handle, FileInfo.hIcon);
ImageList_AddIcon ist in ComCtrl definiert.

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 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 by Thomas Breitkreuz