Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Icon Problem (https://www.delphipraxis.net/62513-icon-problem.html)

mOzZzI 5. Feb 2006 19:45


Icon Problem
 
Hai,
Also ich habe ein Problem mit meiner Schnellstartleiste, ich habe bis jetzt ein Drag&Drop Message eingebaut und kann auch die Programme starten, die in der Schnellstartleiste drin sind.
Jetzt fehlt mir noch das Icon des Gedroppeden Gegenstandes, das Problem ist
ich weiß nicht wie ich das Icon der .Exe auslesen, dann in Bitmap konvertieren, abspeichern, und dann auf dem Button, wo man Drag&Drop gemacht hat, absetzt...

Hier mein Codeschnipsel:
Delphi-Quellcode:
function FileIcon(FileName: String): TIcon;
var FileInfo: TSHFileInfo; AIcon: TIcon;
begin
  FillChar(FileInfo,SizeOf(FileInfo),#0);
  SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON or SHGFI_LARGEICON);
  AIcon:=TIcon.Create;
  Try
    AIcon.Handle:=FileInfo.HIcon;
    AIcon.Transparent:=True;
  Except end;
  Result:=AIcon;
end;

procedure TForm1.WMDROPFILES (var Msg: TMessage);
var i, anzahl, size: integer;
    Dateiname: PChar;
    antwort: Integer;
    s : string;
  Icon: TIcon;
begin
  inherited;
  Dateiname := '';
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
  for i := 0 to (anzahl - 1) do
  begin
    size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
    Dateiname:= StrAlloc(size);
    DragQueryFile(Msg.WParam,i , Dateiname, size);
    //hier dein source - in "Dateiname" ist der name des droped objectes
      begin
    Icon := TIcon.Create;
    try
      Icon.Loadfromfile(dateiname);
      s:= ChangeFileExt(dateiname,'.BMP');
      Image1.Width := Icon.Width;
      Image1.Height := Icon.Height;
      Image1.Canvas.Draw(0,0,Icon);
      Image1.Picture.SaveToFile((ExtractFilePath(ParamStr(0))+'1.BMP'));
    finally
      Icon.Free;
    end;
  end;
Ja, noch eine Frage... Muss ich das Icon jetzt unbedingt abspeichern oder kann ich das auch als TempIcon machen??

Mfg Philipp


Wer sich interisiert sich mal das halbfertige Programm anzuschauen,
kann sich hier den Source oder die Exe herunterladen...

SirThornberry 5. Feb 2006 20:54

Re: Icon Problem
 
du musst das Icon nicht abspeichern. TIcon ist genau wie TBitmap vom Typ TGraphic abgeleitet. Du solltest also mit Bitmap.Assign(Icon) das ganze auf das Bitmap bekommen (ansonsten Canvas.Draw nutzen damit kannst du jedes TGraphic auf die Canvas bringen (in dem fall auf die der Bitmap)).

mOzZzI 6. Feb 2006 13:56

Re: Icon Problem
 
So jetzt hab ich das auch, aber wie bring ich das, wenn man einen Gegenstand gedropped hat, das danna uf dieser Schaltfläche das Icon zu sehen ist?

Luckie 6. Feb 2006 14:00

Re: Icon Problem
 
Mit einem BitBlt sollte das gehen.

mOzZzI 6. Feb 2006 14:06

Re: Icon Problem
 
Zitat:

Zitat von Luckie
Mit einem BitBlt sollte das gehen.

Was ist ein BitBlt??

dahead 6. Feb 2006 14:27

Re: Icon Problem
 
Luckie meint einen Button der (soweit ich mich erinnere) die Eigenschaft Glyph hat. Der kannst du das TGraphic zuweisen (BitBlt ist eine Funktion zum Zeichen <> TBitBtn).

Auch möglich wäre ein TToolButton gepaart mit einer Imageliste (TImageList) in welcher du die Icons sammelst.

Rastaman 6. Feb 2006 14:28

Re: Icon Problem
 
Zitat:

Zitat von mOzZzI
Zitat:

Zitat von Luckie
Mit einem BitBlt sollte das gehen.

Was ist ein BitBlt??

Eigentlich ne Funktion. --> Siehe Hilfe :)

mOzZzI 6. Feb 2006 14:38

Re: Icon Problem
 
@dahead

hmm... ToolBar mit ImageList !!!
PERFEKT!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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