AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Listbox mit Bildern, durch Styles
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox mit Bildern, durch Styles

Ein Thema von Hammha · begonnen am 24. Jun 2016 · letzter Beitrag vom 26. Jun 2016
Antwort Antwort
Hammha

Registriert seit: 24. Jun 2016
2 Beiträge
 
#1

Listbox mit Bildern, durch Styles

  Alt 24. Jun 2016, 13:19
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:
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;
Liste ist ein TStringDynArray.

Ich hoffe ihr könnt mir helfen und wünsche ein schönes Wochenende!

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Listbox mit Bildern, durch Styles

  Alt 25. Jun 2016, 12:24
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:
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;
Der ListBox musst Du dann bei "DefaultItemStyles" bei ItemStyle den Wert "listboxitembottomdetail" zuweisen.
Miniaturansicht angehängter Grafiken
itemdata.jpg  

Geändert von Harry Stahl (25. Jun 2016 um 12:39 Uhr)
  Mit Zitat antworten Zitat
Hammha

Registriert seit: 24. Jun 2016
2 Beiträge
 
#3

AW: Listbox mit Bildern, durch Styles

  Alt 26. Jun 2016, 18:43
Das probiere ich gleich mal aus
Danke für die umfangreiche und flotte Antwort
  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 18:50 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