![]() |
Bild von TImage in TListView verwenden
Hallo zusammen.
Habe schon wieder eine Frage :oops: Ich habe nun ein Bild, beispielsweise ein jpg, in einem TImage vorliegen. Nun möchte ich diese Bild (verkleinert) in einer Spalte einer TListview (vsReport) darstellen. Ist der einzige Weg der, dass man den 'Umweg' über eine Imagelist macht? Wenn ja, wie kann ich der ImageList das Bild von TImage zuweisen, wenn dies z.B ein jpg ist? Kann TImage mir das Bild auch konvertiert als Icon zurückliefern? Die OH konnte mir nicht wirklich weiterhelfen... |
Re: Bild von TImage in TListView verwenden
Zitat:
![]() ![]() Jpeg in ein TBitmap kopieren und dann per .Add hinzufügen. |
Re: Bild von TImage in TListView verwenden
Okay, Add hatte ich zwar gefunden, aber auf das zu TBitmap zuweisen bin ich nicht bekommen.
Nun bekomme ich aber Trotzdem noch einen Fehler: --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt CRM.exe ist eine Exception der Klasse EInvalidOperation mit der Meldung 'Ungültige Bildgröße' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe ---------------------------
Delphi-Quellcode:
lBitmap : TBitmap;
begin lBitmap := FPerson.Bild.Bitmap; ImageListFahrer.Add(lBitmap, lBitmap); // <-- Fehler hier. ListItem := TListItem.Create(ListViewPerson.Items); ListItem.SubItems.Add(FPerson.Name); ListViewPerson.Items.AddItem(ListItem); Deswegen habe ich meine Quelltest intuitiv so erweitert:
Delphi-Quellcode:
Kommt zwar kein Fehler mehr, aber anstatt des Bildes wird nur eine weisse Fläche dargestellt? Wat mach ich denn nu?
lBitmap : TBitmap;
begin lBitmap := FPerson.Bild.Bitmap; lBitmap.Width := 35; lBitmap.Height := 35; ImageListFahrer.Add(lBitmap, lBitmap); ListItem := TListItem.Create(ListViewPerson.Items); ListItem.SubItems.Add(FPerson.Name); ListViewPerson.Items.AddItem(ListItem); |
Re: Bild von TImage in TListView verwenden
*push*
|
Re: Bild von TImage in TListView verwenden
Hast du eigentlich schon mal dran gedacht, das Bitmap Objekt auch zu erzeugen? :roll:
|
Re: Bild von TImage in TListView verwenden
Zitat:
Nur leider habe ich dann auch noch dem selben Effekt. Aber vielleicht bin ich so dumm und habe was falsch gemacht. :roll: Sieht jetzt so aus:
Delphi-Quellcode:
Hoffe ich fall jetzt niemanden (schon wieder) auf die Nerven :duck:
lBitmap : TBitmap;
begin lBitmap := TBitmap.Create(); lBitmap := FPerson.Bild.Bitmap; ImageListFahrer.Add(lBitmap, lBitmap); // <-- Fehler hier. ListItem := TListItem.Create(ListViewPerson.Items); ListItem.SubItems.Add(FPerson.Name); ListViewPerson.Items.AddItem(ListItem); |
Re: Bild von TImage in TListView verwenden
*push*
|
Re: Bild von TImage in TListView verwenden
Moin,
ist denn das Bild > 35x35 Pixel? Dann würde ich dir Canvas.StrechDraw empfehlen. Damit kann du auf dein „Pufferbitmap“ (lBitmap) das Orginal verkleinert zeichnen. MfG Fabian |
Re: Bild von TImage in TListView verwenden
Zitat:
[edit] Evtl. liegt der ursprüngliche Fehler ja ganz woanders.
Delphi-Quellcode:
[/edit]
lBitmap : TBitmap;
begin lBitmap := FPerson.Bild.Bitmap; if Assigned(lBitmap) then begin //Dimensionen der Imagelist vor dem Einfügen festlegen ImageListFahrer.Width := lBitmap.Width; ImageListFahrer.Height := lBitmap.Height; ImageListFahrer.Add(lBitmap, lBitmap); // <-- Fehler hier (jetzt weg?) ListItem := TListItem.Create(ListViewPerson.Items); ListItem.SubItems.Add(FPerson.Name); ListViewPerson.Items.AddItem(ListItem); end; |
Re: Bild von TImage in TListView verwenden
Zitat:
Delphi-Quellcode:
lBitmap := TBitmap.Create();
Rect.Left := 0; Rect.Right := 35; Rect.Top := 0; Rect.Bottom := 35; lBitmap.Canvas.StretchDraw(Rect, FPerson.Bild.Bitmap);; ImageListFahrer.Add(lBitmap, lBitmap); Zitat:
Zitat:
Zitat:
|
Re: Bild von TImage in TListView verwenden
Versuch es doch erst einmal ohne verkleinern. Wenn das funktioniert, bist Du ja schonmal einen Schritt weiter. Und Luckie hat ja auch nicht immer Recht ;)
|
Re: Bild von TImage in TListView verwenden
So, bin habe nochmal rumprobiert...
Zitat:
Delphi-Quellcode:
Kommt leider dieselbe Meldung :cry:
lBitmap := FPerson.Bild.Bitmap;
ImageListFahrer.Add(lBitmap, lBitmap); |
Re: Bild von TImage in TListView verwenden
Nee, ich meinte so (Code von oben gekürzt):
Delphi-Quellcode:
Tritt da immer noch ein Fehler auf?
lBitmap : TBitmap;
begin lBitmap := FPerson.Bild.Bitmap; if Assigned(lBitmap) then begin //Dimensionen der Imagelist vor dem Einfügen festlegen ImageListFahrer.Width := lBitmap.Width; ImageListFahrer.Height := lBitmap.Height; ImageListFahrer.Add(lBitmap, lBitmap); end; end; |
Re: Bild von TImage in TListView verwenden
So kommt keine Fehlermeldung mehr. Aber komischerweise ist Width und Height immer 0.
Muss ich nochmal nach schauen. Vielen Dank soweit erstmal. |
Re: Bild von TImage in TListView verwenden
ohne zu testen:
Delphi-Quellcode:
var
lBitmap: TBitmap; begin lBitmap := TBitmap.Create; try lBitmap.Width := ImageListFahrer.Width; lBitmap.Height := ImageListFahrer.Height; lBitmap.Canvas.StretchDraw(lBitmap.Canvas.ClipRect, FPerson.Bild.Graphic); ImageListFahrer.Add(lBitmap, lBitmap); finally lBitmap.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 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