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 [VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption (https://www.delphipraxis.net/168619-%5Bvcl%5D-listview-zeichnen-eines-zusaetzlichen-icons-zerstoert-caption.html)

Memnarch 31. Mai 2012 12:07

[VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption
 
Tag allerseits,
Wenn ich im OnCustomDraeItem der TListView in der stage csdPostPaint ein zusätzliches icon auf das Item Zeichne, scheint zuerst alles ok.
Sobald man aber mit der Maus drüber geht, und die Highlightbox gezeichnet wird, wird die caption zerstört. Es bleibt dort nur eine schwarze box übrig.

Zuerst wollte ich eigentlich die StateImages verwenden, aber mir gefällt es nicht, dass sie daneben und nicht darüber gezeichnet werden.

MFG
Memnarch

Blup 31. Mai 2012 16:27

AW: [VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption
 
Du meinst sicher "OnAdvancedCustomDrawItem", so in der Art:
Delphi-Quellcode:
case Stage of
  cdPrePaint:
    DefaultDraw := True;
  cdPostPaint:
    begin
      // drüber zeichnen
    end;
end;

Memnarch 6. Jun 2012 10:51

AW: [VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption
 
Ganz genau.
Hinterlässt dann leider nur ne schwarze box an der stelle wo der text steht. Irgendwo mal gelesen dass es bei Listview ein problem mit windows+canvas gibt. Habe aber nichts gefunden um das igrnedwie zu fixen.

jaenicke 6. Jun 2012 10:59

AW: [VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption
 
Wie wäre es denn mit der Virtual Tree View?

Die ist erstens schneller, zweitens einfacher was die Datenhaltung angeht und drittens lässt sich da alles problemlos selbst zeichnen was man nur möchte.

CCRDude 6. Jun 2012 11:51

AW: [VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption
 
Das Problem habe ich alle paar Monate mal wieder. Im Netz gibt es diverse Threads in Foren dazu, mit diversen Tipps.

Eine Methode, die bei mir funktioniert, ist im AdvancedCustomDrawSubItem am ende ein
Delphi-Quellcode:
SetBkMode(listviewobject.Canvas.Handle, TRANSPARENT);
Ich hatte dazu einen Link auf's Emba-Forum direkt im Code an der Stelle, der ist aber tot.

Memnarch 6. Jun 2012 14:08

AW: [VCL] Listview: zeichnen eines zusätzlichen icons zerstört caption
 
@CCRDude: Oha, funktioniert super. Danke


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