![]() |
Listview, CustomDrawSubItem, Text wird schwarz
Hallo,
ich habe mit dem folgenden Code das CustomDrwawSubItem-Event befüllt. Der Testrahmen wird auch prima gezeichnet, die normal darzustellenden Spalten jedoch erhalten einen schwarzen Kasten, wenn text enthalten ist, Das aber auch nur, wenn der Cursor/Maus nach unten bewegt wird. Die Richtung nach oben erfolgt korrekt.
Delphi-Quellcode:
ListView ist vom Typ vsReport
procedure TInfoAuftrDlg.PlanViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean); var r : TRect; i : Integer; begin if SubItem<5 then begin DefaultDraw:=true; exit; end; r := Item.DisplayRect(drBounds); for i := 0 to SubItem-1 do begin r.Left := r.Left + PlanView.Columns.Items[i].Width; r.Right := r.Left + PlanView.Columns.Items[i+1].Width; end; if SubItem=5 then PlanView.Canvas.Pen.Color := clRed else PlanView.Canvas.Pen.Color := clBlue; PlanView.Canvas.Rectangle(r.Left, r.Top, r.Right, r.Bottom); DefaultDraw := False; end; Jemand eine zündene Idee? Danke und ciao Frank |
AW: Listview, CustomDrawSubItem, Text wird schwarz
ich verwende Listview eigentlich nie, aber so bekomme ich das IMHO gewünschte Ergebnis:
(kann sicher noch optimiert werden)
Delphi-Quellcode:
var r : TRect;
i : Integer; s : String; begin PlanView.Canvas.Brush.Color := clWhite; PlanView.Canvas.Brush.Style := bsclear; if SubItem<1 then begin DefaultDraw:=true; exit; end; r := Item.DisplayRect(drbounds); for i := 0 to SubItem-1 do begin r.Left := r.Left + PlanView.Columns.Items[i].Width; r.Right := r.Left + PlanView.Columns.Items[i+1].Width; end; if SubItem=1 then PlanView.Canvas.Pen.Color := clRed else PlanView.Canvas.Pen.Color := clBlue; PlanView.Canvas.FillRect(r); PlanView.Canvas.Rectangle(r.Left, r.Top, r.Right, r.Bottom); r.Left := r.Left +1; r.Right := r.Right - 1; r.Top := r.Top + 1; r.Bottom := r.Bottom - 1; if item.SubItems.Count >= SubItem then s := item.SubItems[SubItem-1]; PlanView.Canvas.TextRect(r,s); DefaultDraw := false; end; |
AW: Listview, CustomDrawSubItem, Text wird schwarz
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Thomas,
danke für deinen Einsatz, ich habe mich nur etwas blöd ausgedrückt. Nicht der Text in dem selbstgemalten SubItem, sondern alle Anderen werden schwarz. Un das nur, wenn Cursor oder Maus auf dem Weg nach unten sind, nach oben ist alles sichtbar. siehe Bild Anhang 35420 Noch eine Idee? Ciao Frank |
AW: Listview, CustomDrawSubItem, Text wird schwarz
Genau das selbe Problem habe ich jetzt auch mit Delphi Tokyo: Wenn Items ausgewählt werden, wird der Text schwarz, wie auf dem Bildschirmfoto im letzten Post zu sehen. Hat da jemand in den letzten Jahren schon eine Lösung gefunden?
|
AW: Listview, CustomDrawSubItem, Text wird schwarz
Liste der Anhänge anzeigen (Anzahl: 1)
Habe das mit 10.2.3 als Minimalbeispiel umgesetzt und es funktioniert bei mir ohne schwarze Felder...
|
AW: Listview, CustomDrawSubItem, Text wird schwarz
![]() Zitat:
Gerade seh ich Rot und eine Whookie Lösung... ich schick die Info trotzdem ab:) |
AW: Listview, CustomDrawSubItem, Text wird schwarz
Danke, aber bei beiden Lösungen ist das Problem, dass der Text in der der Spalte, die rechts neben der Owner-Draw-Spalte liegt, pixelig und fett wird. Ein manuelles setzten der Font schafft keine Abhilfe. Die Schrift ist immer pixelig und fett...
|
AW: Listview, CustomDrawSubItem, Text wird schwarz
Poste noch mal Dein Projekt damit es nachvollziehen kann.
|
AW: Listview, CustomDrawSubItem, Text wird schwarz
Liste der Anhänge anzeigen (Anzahl: 2)
Hier das Projekt zum Testen und ein Screenshot mit dem Fehler (Text wird pixelig und fett)
|
AW: Listview, CustomDrawSubItem, Text wird schwarz
Das ist nicht pixelig und fett, das ist eine andere Schriftart.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 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