![]() |
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:
wäre toll wenn ihr mir helfen könntet.
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; Mfg Chris :wink: |
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 08:45 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-2025 by Thomas Breitkreuz