Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView mit Hintergrundbild (https://www.delphipraxis.net/29021-listview-mit-hintergrundbild.html)

marcus 2. Sep 2004 20:15


ListView mit Hintergrundbild
 
Hallo zusammen!

Ich suche jetzt schon ein Weilchen nach einem Weg ein Hintergrundbild in ein ListView einzufügen. Das Bild
einfügen ist kein großes Problem, siehe unten. Aber bei Einträgen in dem ListView wird das Bild dann leider
"übermalt". Ich habe schon mit den Funktionen AdvancedCustomDrawItem und AdvancedCustomDrawSubItem herum
probiert, aber leider ohne Erfolg.
Hat jemand evtl. einen Tip für mich oder hatte jemand schon ein ähnliches Problem?


Delphi-Quellcode:
procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;const ARect: TRect; var DefaultDraw: Boolean);
var
  Bitmap: TBitmap;
  x, y: integer;

begin
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile('*.bmp');
  x:=0;
  y:=0;
  ListView1.Canvas.Draw(x, y, Bitmap);
  Bitmap.Free;
end;
Gruß
Marcus

chris 3. Sep 2004 01:51

Re: ListView mit Hintergrundbild
 
hi,

du kannst das löschen des hintergrundes verhindern indem du auf die message WM_ERASEBKGND reagierst.

z.b.

Delphi-Quellcode:
//private
procedure wmerasebkgnd(var msg: tmessage); message wm_erasebkgnd;

procedure tform1.wmerasebkgnd;
begin
  listview1.canvas.draw(x,y,bitmap);
  msg.result := 0
end

Manne 3. Sep 2004 16:56

Re: ListView mit Hintergrundbild
 
Gebe zusätzlich zum Zeichnen des Hintergrunds folgenden Code in das OnCustamDraw Ereignis deiner Listview:
Code:
    SetBkMode(Canvas.Handle,TRANSPARENT);
    Perform(LVM_SETTEXTBKCOLOR,0,LongInt(CLR_NONE));
    ListView_SetBKColor(Handle,CLR_NONE);

marcus 7. Sep 2004 06:57

Re: ListView mit Hintergrundbild
 
Hi Chris,
sorry aber mit WM_ERASEBKGND ist quasi alles um die ListView herum durchsichtig, bloß nicht die ListView selber.

Hi Manne,
für deine Lösung benötige ich ja eine Variable vom Typ TLVBkImage. Welche Unit muss ich denn da einbinden, dass mir der Typ dann zur Verfügung steht?

Gruß Marcus

Manne 13. Sep 2004 15:37

Re: ListView mit Hintergrundbild
 
Ich muss nur
Code:
 Uses ...,CommCtrl,..
eingeben dann kann ich es ohne Probleme kompilieren

Akut-Programming 20. Sep 2004 11:55

Re: ListView mit Hintergrundbild
 
Kann ich das auch irgendwie realisieren, wenn die Anwendung gestartet wird, also ohne das ich erst Items in die ListView lade? Im OnCreate des Forms funzt es nicht.

Gruß,
Sascha

mirage228 20. Sep 2004 12:54

Re: ListView mit Hintergrundbild
 
Zitat:

Zitat von Akut-Programming
Kann ich das auch irgendwie realisieren, wenn die Anwendung gestartet wird, also ohne das ich erst Items in die ListView lade? Im OnCreate des Forms funzt es nicht.

Gruß,
Sascha

Hi,

versuch es mal im OnShow. (Edit: Aber pass auf - denn OnShow wird immer beim Anzeigen des Fensters aufgerufen!)

Ansonsten ist auch das TVirtualTreeView von www.delphi-gems.com empfehlenswert - es ist schneller und besser als die Borland Implementierung der ListView (aber leider auch etwas komplizierter).

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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