AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild von TImage in TListView verwenden

Ein Thema von Viktorii · begonnen am 1. Mär 2010 · letzter Beitrag vom 11. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

Bild von TImage in TListView verwenden

  Alt 1. Mär 2010, 15:29
Hallo zusammen.

Habe schon wieder eine Frage 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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Bild von TImage in TListView verwenden

  Alt 1. Mär 2010, 15:49
Zitat von Viktorii:
Die OH konnte mir nicht wirklich weiterhelfen...
Delphi-Referenz durchsuchenTImageList: Komisch, ich finde in meiner OH eine Methode Namens Add.

Jpeg in ein TBitmap kopieren und dann per .Add hinzufügen.
$2B or not $2B
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#3

Re: Bild von TImage in TListView verwenden

  Alt 1. Mär 2010, 16:34
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:
  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);
Kommt zwar kein Fehler mehr, aber anstatt des Bildes wird nur eine weisse Fläche dargestellt? Wat mach ich denn nu?
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

Re: Bild von TImage in TListView verwenden

  Alt 2. Mär 2010, 22:07
*push*
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Bild von TImage in TListView verwenden

  Alt 2. Mär 2010, 22:11
Hast du eigentlich schon mal dran gedacht, das Bitmap Objekt auch zu erzeugen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#6

Re: Bild von TImage in TListView verwenden

  Alt 3. Mär 2010, 08:14
Zitat von Luckie:
Hast du eigentlich schon mal dran gedacht, das Bitmap Objekt auch zu erzeugen?
Vielen Dank für Deinen augenrollenden Hinweis. Schön dass sich jemand so erfahrenes wie Du erbarmt einem Schussel wie mir zu helfen.

Nur leider habe ich dann auch noch dem selben Effekt. Aber vielleicht bin ich so dumm und habe was falsch gemacht.

Sieht jetzt so aus:

Delphi-Quellcode:
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);
Hoffe ich fall jetzt niemanden (schon wieder) auf die Nerven
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#7

Re: Bild von TImage in TListView verwenden

  Alt 5. Mär 2010, 08:45
*push*
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Bild von TImage in TListView verwenden

  Alt 5. Mär 2010, 12:13
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Bild von TImage in TListView verwenden

  Alt 5. Mär 2010, 12:42
Zitat:
Delphi-Quellcode:
lBitmap := TBitmap.Create();
  lBitmap := FPerson.Bild.Bitmap;
Denke ich falsch, oder erzeugst Du Dir hier ein feines Speicherleck? Erst erzeugst Du eine Instanz und dann weist Du der Variablen eine andere Instanz zu, kannst somit die erzeugte nicht mehr freigeben

[edit] Evtl. liegt der ursprüngliche Fehler ja ganz woanders.
Delphi-Quellcode:
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;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#10

Re: Bild von TImage in TListView verwenden

  Alt 5. Mär 2010, 13:52
Zitat von xZise:
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.
Hmm... Ich weiss nicht ob ich dass richtig verstanden habe. Wenn ich so probiere, kommt leider die selbe Meldung
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 von DeddyH:
Zitat:
Delphi-Quellcode:
lBitmap := TBitmap.Create();
  lBitmap := FPerson.Bild.Bitmap;
Denke ich falsch, oder erzeugst Du Dir hier ein feines Speicherleck? Erst erzeugst Du eine Instanz und dann weist Du der Variablen eine andere Instanz zu, kannst somit die erzeugte nicht mehr freigeben
Ja, das habe ich mir eigentlich ja auch gedacht, aber
Zitat von Luckie:
Hast du eigentlich schon mal dran gedacht, das Bitmap Objekt auch zu erzeugen?


Zitat von DeddyH:
[edit] Evtl. liegt der ursprüngliche Fehler ja ganz woanders.
Delphi-Quellcode:
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;
[/edit]
Also, ich habe die Größe im Objektinspektor auf 35*35 gesetzt. Der Witz an der Sache ist, dass die Graphik größer ist und so zu sagen verkleinert im Listview/Imagelist dargestellt/hinzugefüg werden soll...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:23 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