AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VST -> Stateimages durch handle auf ShellIcon?
Thema durchsuchen
Ansicht
Themen-Optionen

VST -> Stateimages durch handle auf ShellIcon?

Ein Thema von richard_boderich · begonnen am 12. Sep 2008 · letzter Beitrag vom 15. Sep 2008
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

VST -> Stateimages durch handle auf ShellIcon?

  Alt 12. Sep 2008, 15:12
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.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: VST -> Stateimages durch handle auf ShellIcon?

  Alt 13. Sep 2008, 17:49
Hmm bin mir nicht sicher ob es das ist was du suchst, aber ich hab das mal so in etwa gemacht:


Delphi-Quellcode:
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...
Grüße
s!
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: VST -> Stateimages durch handle auf ShellIcon?

  Alt 15. Sep 2008, 09:55
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?
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: VST -> Stateimages durch handle auf ShellIcon?

  Alt 15. Sep 2008, 14:01
Hmm hoffentlich ist das richtig, ich geh grad die alten sourcen durch von mir:

Delphi-Quellcode:
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;
Dann halt noch die 2 Imagelisten mit dem VST im OI verknüpfen...

Delphi-Quellcode:
  SystemImages.Handle := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
  SystemImages.ShareImages := True;
Ansonsten empfehle ich Dir, schau mal im DrawTreeDemo von Mike Lischke rein, da macht er sowas ähnliches, was du suchst...

Gruß
s!
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#5

Re: VST -> Stateimages durch handle auf ShellIcon?

  Alt 15. Sep 2008, 22:16
@Storm

Ich habe es mit einigem Rumgefrickel und deinem Codebeispiel hinbekommen. Herzlichen Dank noch mal an dich.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: VST -> Stateimages durch handle auf ShellIcon?

  Alt 15. Sep 2008, 22:21
Kein Thema schön wenn ich auch mal helfen konnte
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz