TListView background

Hy,

I need a TListView with a bitmap background. I write a code that use OnCustomDraw and show me the bitmaped background. But my problem appear when scroll. When scroll up or down the listview content the bitmaped is scroll too.

How can I have a ListView with bitmaped background but fixed? When scroll the items the background to stay fixed.

Code please!
LVL 9
ginsonicAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

DragonSlayerCommented:
I suppose you did something like this?

procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
var DestRect, SrcRect : TRect;
begin
  DestRect := Rect(0,0,ListView1.width, Listview1.Height);
  SrcRect := Rect(0,0,Image1.Width,Image1.Height);
  ListView1.Canvas.CopyRect(DestRect,image1.picture.Bitmap.Canvas, SrcRect);
end;
0
DragonSlayerCommented:
Or maybe you should just migrate to Virtual TreeView by Mike Lischke http://www.soft-gems.net/VirtualTreeview/VT.php
0
ginsonicAuthor Commented:
Don't wish to use 3th part. I need a ListView to create a combo for my own combobox vcl.
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

DragonSlayerCommented:
can you post some code on how you did your background painting?
0
Lee_NoverCommented:
when drawing just count in the Scrollbars position and offset the drawing rect
0
ginsonicAuthor Commented:
procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
begin
  Self.Canvas.Draw(0,0,MyImage);
....
end;
0
ginsonicAuthor Commented:
I will try to play with ARect. Maybe ... !?!?!
0
odissey1Commented:
Hi qinsonic,

I spent some time on this a while ago and even succeded to some extent, but  sorry to say that custom backgound in TListView is impossible without a flicker. You can use a component by Mike Lischke mentioned above or CoolBreeze by Jim Kueneman at mustangpeak.com (depending on what you need)

Regards,
odissey1
0
Mohammed NasmanSoftware DeveloperCommented:
Hello

  If you look at Delphi Demos you will see how to do that for TTreeView and it's the same with TListView

procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
var
  Bitmap : TBitmap;
begin
  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile('c:\pic.bmp');
  Listview1.Canvas.Brush.Bitmap := Bitmap;
  ListView1.Canvas.StretchDraw(ARect,Bitmap);
end;

Another way by sending LVM_SETBKIMAGE, it's the best one I found for putting the image as background for the TListView
http://edit.coders-corner.com/faq/f670.shtml

Regards,
Mohammed
0
ginsonicAuthor Commented:
I can draw a bitmap and I can do that without flickering. My problem is that when I scroll the items ( you can add enough items to get a HScrollBar and set it to vsReport ) the bitmap is scrolled too. I wish to have a fixed image as background and to scroll just the items.
0
ginsonicAuthor Commented:
Look like can't be done in ListView so I go to ListBox. Somebody can help me with:

http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_21211633.html

I offer these points for an answer, too.
0
odissey1Commented:
Hi qinsonic,

as I mentioned above, only solution I know is a freware CoolBreeze by J.Kueneman (mustangpeak.net). Basically, this is a TListview with all extended features you asked.

regards,
odissey1
0
Lee_NoverCommented:
it's actually a TVirtualTreeView with the stuff that a TListView has
0
ginsonicAuthor Commented:
Yap, still wish to use just TListView! I thinking to go to rewrite WM_Paint . I success to do this on DBGrid. (I intend to add a background to all my used VCL)
0
odissey1Commented:
To CetusMOD,

I don't see why to delete a post instead of PAQ. I think qinsonic received an exact unswer from the beginning: TListView by M$ and background are not going along well (Sorry to add that  WindowsExplorer doesn't uses same TListView which distributed by M$ to the outer world). Solution was provided also: CoolBreeze freware set by J. Kueneman which is a native VCL and probably the only way to add a bkgr to ListView.

I suggest to PAQ so other folks can see problem with TListView and possible solution too.

Regards,
odissey1
0
ginsonicAuthor Commented:
For odissey1: my answer then was that I can draw to Listview background with no flickering.
8<
I spent some time on this a while ago and even succeded to some extent, but  sorry to say that custom backgound in TListView is impossible without a flicker. You can use a component by Mike Lischke mentioned above or CoolBreeze by Jim Kueneman at mustangpeak.com (depending on what you need)
>8

And by the way I made big steps overriding WM_Paint.
0
ginsonicAuthor Commented:
And how a say already, don't wish to use 3th party licenses because I intend to use inside my own component.
0
ee_ai_constructCommented:
Question answered by asker or dialog valuable.
Closed, 500 points refunded.
ee_ai_construct (replacement part #xm34)
Community Support Admin
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.