AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Listview, CustomDrawSubItem, Text wird schwarz
Thema durchsuchen
Ansicht
Themen-Optionen

Listview, CustomDrawSubItem, Text wird schwarz

Ein Thema von FrankJ28 · begonnen am 23. Okt 2011 · letzter Beitrag vom 25. Mai 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 24. Mai 2018, 14:48
Ahh ok, ich nutze Windows Version 7. Ich schau mal im Code wegen Custom-Font setzen.

edit
Jetzt habe ich Deine .exe mal gestartet. Da erscheint der Fehler wie auf dem Bild.
Gruß vom KodeZwerg

Geändert von KodeZwerg (24. Mai 2018 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.201 Beiträge
 
Delphi 12 Athens
 
#2

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 24. Mai 2018, 15:10
Sender.Canvas.Font.Assign(Sender.Font); könntest du mal ausprobieren, ob es was ändert. (beim DefaultDraw=True)

Sowas wie SetBkMode an der VCL vorbei und nicht wieder zurücksetzen.
Das kann auch Probleme bereiten.

Sich nicht auf einwas zu einigen und dann abwechselnd Sender.Canvas oder PlanView.Canvas zu nutzen bereitet oftmals keine großen Probleme, aber ist dennoch keine gute Idee.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 24. Mai 2018, 15:16
Ich habe ein wenig gelesen und das hier soll wohl helfen, da ich Fehler nicht habe kann ichs nicht testen.
Delphi-Quellcode:
procedure TForm1.PlanViewCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
  r: TRect;
  i: Integer;
begin
  PlanView.Canvas.Font.Style := [fsItalic];
  PlanView.Canvas.Font.Style := [];
//ab hier wie im Original weiter
Ps: Zweimal damit eine Veränderung eintritt.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 24. Mai 2018, 17:25
Ich habe ein wenig gelesen und das hier soll wohl helfen, da ich Fehler nicht habe kann ichs nicht testen.
Delphi-Quellcode:
procedure TForm1.PlanViewCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
  r: TRect;
  i: Integer;
begin
  PlanView.Canvas.Font.Style := [fsItalic];
  PlanView.Canvas.Font.Style := [];
//ab hier wie im Original weiter
Ps: Zweimal damit eine Veränderung eintritt.
Das ist die Lösung auch wenn Ihr dagegen seid. Ich habe vom TE das Projekt auf Delphi2009 Niveau gebracht, lustiger Weise mit dem Fehler vom Bild, mit himitsus Methode streikt IDE oder ich wende es falsch an, IDE sagt E2362 Auf protected-Symbol TControl.Font kann nicht zugegriffen werden

Im Anhang ist das Projekt für viele Delphis verfügbar mit gleicher Font in allen Feldern.
Angehängte Dateien
Dateityp: 7z An_DCoderHH.7z (46,9 KB, 6x aufgerufen)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
DCoderHH

Registriert seit: 4. Feb 2015
Ort: Hamburg
84 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 25. Mai 2018, 07:12
Danke an alle! Insbesondere an KodeZwerg: Seine zuletzt gepostete Löung funktioniert eiwandfrei. Das Problem geistert ja seit mehreren Jahren durch diverse Foren und Newsgroups und wurde nie gelößt. Ich bin begeistert!

Edit: Die Lösung von himitsu funktioniert auch, wenn man sie leicht modifiziert:
Sender.Canvas.Font.Assign(TListView(Sender).Font);
Edit2: Die Lösung von himitsu funktioniert manchmal doch nicht. Beim nächsten Start ist der Text manchmal trotzdem fett. Ganz komisch. Die Lösung von KodeZwerg läuft immmer.

Geändert von DCoderHH (25. Mai 2018 um 07:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 25. Mai 2018, 09:15
Defaultdraw False dann True scheint die Font zu beeinflussen.
Ich habe ja nichts gegen himitsus Vorschlag, nur bringt der leider nichts.
Es muss effektiv einmal eine Fontveränderung eintreten sonst bleibts beim Fehler.
Wenn Du die selbstgemalte Spalte nach ganz rechts verlagerst ist Fehler auch behoben.
Freut mich das ich helfen konnte.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 25. Mai 2018, 14:08
Das ist übrigens die Standardschrift die Windows setzt, wenn man ohne VCL arbeitet und man keine Schrift setzt*, entweder in der Dialog-Ressource oder im Fenster per Code. Ich nehme das OwnerDraw arbeitet ähnlich: "Du willst selber zeichnen? Dann musst du aber auch alles selber zeichnen. Und mir sagen, was du für eine Schrift willst."

*) Siehe dazu meine Screenshots aus meinen nonVCL Tutorials von den ersten Demos.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.201 Beiträge
 
Delphi 12 Athens
 
#8

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 25. Mai 2018, 14:17
DevExpress-Grigs und auch teilweise die VCL-Grids/List-Komponenten setzen oft vor den CustomDrawEvents den Pen/Brush/Font.

Klar, "falls" man dann im CustomDraw was Anderes setzt, ist das dann doppelt (Zeitverschwendung), aber es gibt weniger Probleme, vor allem wenn man dann doch nicht alles selber zeichnet. (z.B. nur Hintergrund- oder Textfarbe ändern und den Rest wieder das DefaulDraw machen lassen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 25. Mai 2018, 18:26
Zitat:
"Du willst selber zeichnen? Dann musst du aber auch alles selber zeichnen.
Das sagte ich schon bereits in diesem Beitrag..

Dabei spielt es keine rolle ob man das über Win32 API mitteln macht oder in der VCL.
Das andere ist alles ein Workaround mag funktionieren die Lösung ist aber nicht das gelbe vom Ei. (Meine persönliche Meinung)
Wenn man schon OwnerDraw verwendet dann bitte richtig mit allen Konsequenzen.

Zitat:
Es muss effektiv einmal eine Fontveränderung eintreten sonst bleibts beim Fehler.
Nö.. Man muss nur OwnerDraw richtig verwenden entweder ganz oder gar nicht.

Ich möchte einen Porsche, Kohle fehlt also nehme ich einen Käfer und rüste ihn mit den Schlufen eines Porsche aus.
So in etwa geht das hier ab.

gruss

Geändert von EWeiss (25. Mai 2018 um 18:35 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Listview, CustomDrawSubItem, Text wird schwarz

  Alt 24. Mai 2018, 15:22
Zitat:
Ich habe ein wenig gelesen und das hier soll wohl helfen, da ich Fehler nicht habe kann ichs nicht testen.
Wenn man den Font Assigned muss man ihn nicht extra nochmal zuweisen.

siehe..@himitsu
Sender.Canvas.Font.Assign(Sender.Font);
Zitat:
Jetzt habe ich Deine .exe mal gestartet. Da erscheint der Fehler wie auf dem Bild.
Ja was denn nu ist er da oder nicht?
Zitat:
da ich Fehler nicht habe kann ichs nicht testen.

Aber verstehe nicht was du da machst.
Du möchtest selbst die Schrift zeichnen mit OwnerDraw?
Wenn dem so ist warum wurde OwnerDraw nicht aktiviert.

So.. Und wenn du es aktivierst dann bist du für das zeichnen der Schrift Font etc.. selbst verantwortlich.

Da scheint mir ein mismatch zwischen OwnerDraw und zeichnen der eigenen Komponente zu sein.

gruss

Geändert von EWeiss (24. Mai 2018 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 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