Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Programmsymbole in Imagelist einfügen? (https://www.delphipraxis.net/116737-programmsymbole-imagelist-einfuegen.html)

Johnny Bravo 5. Jul 2008 12:29


Programmsymbole in Imagelist einfügen?
 
Hi, hab gerade schwierigkeiten, einer Imagelist mehrere Icons einzufügen. Die Icons werden aus einer datei geladen, die dann in eine Listbox geschrieben wird.
Das Icon wird korrekt angezeigt wenn ich eine Datei lade.
Doch wie kann ich den Eintrag in der Listbox mit einem Icon verbinden, sodas ich mit einem klick auf den Eintrag das entsprechende Icon angezeigt bekomme?

Hier mal der komplette aufruf:

Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
 var
   DisplayName:string;
    i:integer;
    h : hIcon;
    S : String;
    Icon : TIcon;
    lIndex: Integer;
    OpenDialog: TOpenDialog;

   begin
       OpenDialog := TOpenDialog.Create(self);
       OpenDialog.InitialDir := ExtractFilePath(ParamStr(0));
       OpenDialog.Options := [ofFileMustExist];
       OpenDialog.Filter := 'Anwendungen|*.exe';
       OpenDialog.FilterIndex := 0;
       OpenDialog := TOpenDialog.Create(self);

  if OpenDialog.Execute then

  for i:=0 to OpenDialog.Files.Count -1 do

    begin
        lIndex := Length(MeinArray);
        SetLength(MeinArray, lIndex + 1);
        MeinArray[lIndex].RealFileName := OpenDialog.FileName;
        MeinArray[lIndex].DisplayName := DisplayName;
        ListBox1.MultiSelect := False;
        ListBox1.Sorted := True;

    begin
        DisplayName := ExtractFileName(OpenDialog.Files[i]);

  if (InputQuery('Programmname','Bitte geben sie ein neuen Namen ein:',DisplayName)) then

     try
         Listbox1.Items.AddObject(DisplayName,TObject(Opendialog.Files[i]));
         ImageList1.GetIcon(0, Icon);
         Image1.Canvas.Draw(0, 0, Icon);
         Icon := TIcon.Create;
         ImageList1.AddIcon (Icon);
         S := OpenDialog.FileName;
         h := IconFromFile(OpenDialog.FileName,0);
         Label2.Caption := ListBox1.Items.Text;
         Label9.Caption := GetFileVersion(s);
      with
          Image1.Canvas Do
          DrawIconEx(Handle, 0, 0,h, 32, 32, 0, Brush.Handle, di_Normal);
      begin
          Label3.Caption := S;
          FreeAndNil(Icon);
          Image1.Refresh;

       end;
    finally
         openDialog.Free;
      end;
    end;
  end;
end;
wäre toll wenn ihr mir helfen könntet.

Mfg Chris :wink:

_frank_ 5. Jul 2008 13:10

Re: Programmsymbole in Imagelist einfügen?
 
ich glaube nicht, dass du einen string einfach so nach TObject casten kann, und der danach noch verfügbar ist.erstelle doch beim einlesen pro item ein TIcon-Object und laden das icon dort hinein (Loadicon). dieses kannst du dann anhängen und im OnDrawCell entsprechend zeichnen (ggf. state prüfen).
wenn du mehr infos (wie den Dateinamen) brauchst, wirst du dir eine eigene Klasse basteln müssen (welche ggf. auch gleich ein TIcon enthält).

HTH Frank


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