![]() |
VST -> Stateimages durch handle auf ShellIcon?
Hallo zusammen!
Ich wollte mal Fragen, ob es eine möglichkeit gibt, beim VST die Image bzw. Stateimage nicht durch eine Imagelist zuzuweisen, sondern durch ein handle auf das entsprechende Shellicon. Würde mir auch reichen, wenn ich das über ein zwischengeschaltetes TImage erreichen koennte. |
Re: VST -> Stateimages durch handle auf ShellIcon?
Hmm bin mir nicht sicher ob es das ist was du suchst, aber ich hab das mal so in etwa gemacht:
Delphi-Quellcode:
Grüße
function GetIconIndex(Name: string; Flags: Cardinal): Integer;
// Returns the index of the system icon for the given file object. var SFI : TSHFileInfo; Tmp : String; ResPath : String; begin Tmp := lowercase(trim(Name)); ResPath := VBSplit('.exe', Tmp, 0); ResPath := ResPath + '.exe'; KillChars(ResPath, ['"', ',']); if SHGetFileInfo(PChar(ResPath), 0, SFI, SizeOf(TSHFileInfo), Flags) = 0 then Result := -1 else Result := SFI.iIcon; end; procedure TForm1.vRegGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer); var Data : PRegObjectData; begin if Column = 0 then begin Data := Sender.GetNodeData(Node); case Kind of ikNormal, ikSelected: begin if Sender.Expanded[Node] then ImageIndex := -1 else ImageIndex := GetIconIndex(Data.ImagePath, SHGFI_SYSICONINDEX or SHGFI_LARGEICON); end; usw... s! |
Re: VST -> Stateimages durch handle auf ShellIcon?
Hallo stOrM
kannst du mir vielleicht sagen, was in der property Data.Imagepath gespeichert ist bzw. wozu diese benötigt wird. Ich möchte eigentlich nur Laufwerke im VST auflisten, und dazu natürlich die Entsprechenden Shellicons für Festplatte, CDrom usw. anzeigen. //Edit Ich habe jetz selber eine SHGetFileInfo funktion implementiert und diese Liefert mir sogar den SysIconIndex zurück. Mein Problem ist wie krieg ich das Icon in den VST. bzw. Wie biege ich die VST Imagelist auf die Shelliconlist für die ich den iconindex habe um? |
Re: VST -> Stateimages durch handle auf ShellIcon?
Hmm hoffentlich ist das richtig, ich geh grad die alten sourcen durch von mir:
Delphi-Quellcode:
Dann halt noch die 2 Imagelisten mit dem VST im OI verknüpfen...
procedure TForm1.LoadImageLists;
var sfi : TSHFileInfo; SysIL : uint; LargeImages, SmallImages : TImageList; begin LargeImages := TImageList.Create(Form1); ConvertToHighColor(LargeImages); SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_LARGEICON); if SysIL <> 0 then begin LargeImages.Handle := SysIL; LargeImages.ShareImages := TRUE; end else ShowMessage('Error: ImageList has not Handle'); SmallImages := TImageList.Create(Form1); ConvertToHighColor(SmallImages); SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); if SysIL <> 0 then begin SmallImages.Handle := SysIL; SmallImages.ShareImages := TRUE; end else ShowMessage('Error: ImageList has not Handle'); svLog.StateImages := SmallImages; end;
Delphi-Quellcode:
Ansonsten empfehle ich Dir, schau mal im DrawTreeDemo von Mike Lischke rein, da macht er sowas ähnliches, was du suchst...
SystemImages.Handle := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
SystemImages.ShareImages := True; Gruß s! |
Re: VST -> Stateimages durch handle auf ShellIcon?
@Storm
Ich habe es mit einigem Rumgefrickel und deinem Codebeispiel hinbekommen. Herzlichen Dank noch mal an dich. :) |
Re: VST -> Stateimages durch handle auf ShellIcon?
Kein Thema schön wenn ich auch mal helfen konnte :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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