Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TListView.OnDrawItem (https://www.delphipraxis.net/155982-tlistview-ondrawitem.html)

Namenloser 17. Nov 2010 14:42

AW: TListView.OnDrawItem
 
One thing I immediately spotted:
Delphi-Quellcode:
procedure TForm20.FormCreate(Sender: TObject);
begin
  SetWindowTheme(lvRecentFiles.Handle, 'Explorer', nil);
  Theme := OpenThemeData(0, 'ListView');
end;
has to be
Delphi-Quellcode:
procedure TForm20.FormCreate(Sender: TObject);
begin
  SetWindowTheme(lvRecentFiles.Handle, 'Explorer', nil);
  Theme := OpenThemeData(lvRecentFiles.Handle, 'ListView');
end;
Because, as I said, you have to manually activate the "explorer style" for each window by calling SetWindowTheme. If you do this for a specific window, but then open the theme data of a different window handle (0), of course it won't work.

Not saying, that this is the only issue (might be, might not be), but at least it's one reason why it can't work. If it doesn't work after changing this, try to set
Delphi-Quellcode:
DefaultDraw
to
Delphi-Quellcode:
False
because it's possible that the default drawing routine overdraws the background again (I don't know about that and I'm too lazy to look it up in the VCL sources).

Also, I don't know what the difference between
Delphi-Quellcode:
OnDrawItem
and
Delphi-Quellcode:
OnCustomDrawItem
is, and in which order they are called. But I would suggest moving the
Delphi-Quellcode:
DrawThemedBackground
-code to the
Delphi-Quellcode:
OnDrawItem
routine.

WojTec 17. Nov 2010 18:07

Re: AW: TListView.OnDrawItem
 
Now working :D Thanks so much!

Delphi-Quellcode:
    Brush.Style := bsClear;
    FillRect(Rect);

    if odSelected in State then
    begin
      DrawThemeBackground(Theme, lvRecentFiles.Canvas.Handle,
        LVP_LISTITEM, LIS_SELECTED, Rect, nil
      );
    end;
Yes, OnCustom* are not required, just OnDrawItem is needed. This cod I putten between font color and text render. And now I have list liki in Delphi :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.
Seite 3 von 3     123   

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