![]() |
Auf den canvas einer TListView zeichnen?
Ich muss etwas auf den canvas einer listview zeichnen (linien um genauer zu sein, vertikal von einem item zu einem bestimmten anderen item).
Leider hat das listview control ja keinen onPaint event, wie kann ich das also realisieren? |
AW: Auf den canvas einer TListView zeichnen?
Da bietet sich vielleicht
Delphi-Quellcode:
an, wobei das Zeichnen dann abhängig von
OnAdvancedCustomDraw
Delphi-Quellcode:
erfolgen sollte (vermutlich
Stage
Delphi-Quellcode:
).
cdPostPaint
|
AW: Auf den canvas einer TListView zeichnen?
Liste der Anhänge anzeigen (Anzahl: 1)
Habe ich schon versucht:
Delphi-Quellcode:
Da tut sich nichts. Und wenn ich folgendes mache:
if stage=tcustomdrawstage.cdPostPaint then
begin sender.Canvas.MoveTo(0,0); sender.Canvas.LineTo(400,400); end;
Delphi-Quellcode:
dann sieht es aus wie im Bild.
sender.Canvas.MoveTo(0,0);
sender.Canvas.LineTo(400,400); |
AW: Auf den canvas einer TListView zeichnen?
Ja, das ist etwas unvollständig implementiert. Um das OnAdvancedCustomDraw auszulösen muss auch ein OnAdvancedCustomDrawItem verdrahtet sein. Der Event muss aber nichts tun.
Kannst du mal ein Bild machen, wie es aussehen soll? |
AW: Auf den canvas einer TListView zeichnen?
Die listview soll einfach normal wie immer aussehen, und soll einfach nur eine Linie von 0,0 - 400,400 haben (das ist natürlich nur zum Testen).
ich kann auch kein transparentes Panel drüber legen und in dem zeichnen, dann kann ich die items nicht mehr selektieren. |
AW: Auf den canvas einer TListView zeichnen?
Dafür wäre die TVirtualTreeView bestens geeignet. Die einfache TListView verwendet ich so gut wie gar nicht mehr...
|
AW: Auf den canvas einer TListView zeichnen?
Zitat:
|
AW: Auf den canvas einer TListView zeichnen?
Liste der Anhänge anzeigen (Anzahl: 1)
Nein, eigentlich will ich dioe Linie rechts am Ende der letzten Spalte zeihcne, und zwar von item x nach item y.
So ungefähr wie im Bild. |
AW: Auf den canvas einer TListView zeichnen?
Liste der Anhänge anzeigen (Anzahl: 1)
Etwa so?
Der Code dazu im OnAdvancedCustomDraw:
Delphi-Quellcode:
if Stage = TCustomDrawStage.cdPostPaint then
begin var R1 := Sender.Items[2].DisplayRect(drBounds); var R2 := Sender.Items[8].DisplayRect(drBounds); var P1 := TPoint.Create(R1.Right, R1.CenterPoint.Y); var P2 := TPoint.Create(R2.Right, R2.CenterPoint.Y); P2.X := ARect.Right - 10; P1.X := P2.X - 10; Sender.Canvas.Pen.Color := clRed; Sender.Canvas.Pen.Width := 2; Sender.Canvas.MoveTo(P1.X, P1.Y); Sender.Canvas.LineTo(P2.X, P1.Y); Sender.Canvas.LineTo(P2.X, P2.Y); Sender.Canvas.LineTo(P1.X, P2.Y); end; |
AW: Auf den canvas einer TListView zeichnen?
Kommt leider keine Linie bei mir.
cdPostPaint kommt bei mir nicht, immer nur cdPrePaint. Edit: Jetzt gehts. Die 2 anderen customdraw events waren weg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr. |
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