![]() |
Listbox mit Bildern, durch Styles
Hallo Leute,
ich versuche mich gerade an einer Listbox mit Bildern und habe dabei die Stylebook funktion genutzt, um neben jedem String(Dem Bildnamen) ein kleines Bild anzuzeigen. Delphi ist für mich noch Neuland, hoffe ihr könnt meine Fehler entschuldigen. Im Style habe ich die TImage Komponente 'picture' und den Text 'text' genannt, der Style selber trägt den einfachen Namen Style1. Die Darstellung funktioniert relativ sauber, nur leider werden nur die obersten Items angezeigt und die unteren werden zwar erstellt, aber weder Bild noch Text ist zu sehen. Wenn ich herunterscrolle verschwinden auch die oberen. hier ist einmal mein Quelltext:
Code:
Liste ist ein TStringDynArray.
procedure TForm1.Button1Click(Sender: TObject);
Var ListBoxItem : TListBoxItem; ItemText : TText; ItemImage : TImage; I : Integer; BitmapFile : String; begin liste:= TDirectory.GetFiles('C:\Pictures\wincos\bmp\test'); for I := 0 to length(liste)-1 do begin BitmapFile := Liste[i]; ListBoxItem := TListBoxItem.Create(nil); ListBoxItem.Parent := ListBox1; ListBoxItem.StyleLookup := 'Style1'; ItemText := ListBoxItem.FindStyleResource('text') as TText; if Assigned(ItemText) then ItemText.Text := RightStr(Liste[i],17); ItemImage := ListBoxItem.FindStyleResource('picture') as TImage; if Assigned(ItemImage) then If FileExists(BitmapFile) Then ItemImage.Bitmap.LoadFromFile(BitmapFile); end; end; Ich hoffe ihr könnt mir helfen und wünsche ein schönes Wochenende! MfG |
AW: Listbox mit Bildern, durch Styles
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn Du hier mit Styles arbeitest, sind deren Inhalte nur so lange gültig, wie das Element (hier das ListboxItem) angezeigt wird, wenn es wieder aus Sicht ist, wird das Style-Item wieder freigegeben.
Daher gibt es das Event "OnApplyStyleLookUp". Hier müsstest Du jedem ListboxItem dieses Event zuweisen und im Event dann die Style-Elemente entsprechend mit Inhalten versehen. Wenn Dir das zu umständlich ist: Oft wird übersehen, dass das ListboxItem schon ein Bitmap über "ItemData" hat. Hier kannst Du es auch direkt zuweisen und alles bleibt dann auch zur Laufzeit zu jeder Zeit an allen Stellen erhalten. Dafür Dein Beispielcode leicht abgewandelt (Ergebnis siehe Screenshot):
Delphi-Quellcode:
Der ListBox musst Du dann bei "DefaultItemStyles" bei ItemStyle den Wert "listboxitembottomdetail" zuweisen.
procedure TForm26.Button1Click(Sender: TObject);
Var ListBoxItem : TListBoxItem; I : Integer; BitmapFile : String; Liste: TStringDynArray; begin liste:= TDirectory.GetFiles('D:\APic\BMP'); for I := 0 to length(liste)-1 do begin BitmapFile := Liste[i]; ListBoxItem := TListBoxItem.Create(nil); ListBoxItem.Height := 50; ListBoxItem.Parent := ListBox1; ListboxItem.ItemData.Text := ExtractFileName (Liste[i]); try ListboxItem.ItemData.Accessory := TListBoxItemData.TAccessory.aNone; If FileExists(BitmapFile) Then ListboxItem.ItemData.Bitmap.LoadFromFile(BitmapFile); except // Für Fehlerhaftes Bild kein Item nehmen ListBoxItem.Free; end; end; end; |
AW: Listbox mit Bildern, durch Styles
Das probiere ich gleich mal aus :-D
Danke für die umfangreiche und flotte Antwort :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 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