AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView-Eintrag wird bei Windows 7 schwarz

Ein Thema von Deep-Sea · begonnen am 24. Jun 2010 · letzter Beitrag vom 28. Jun 2014
Antwort Antwort
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#1

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 29. Jun 2010, 07:17
mit Deinem ursprünglichen Code und Ownerdraw=true sieht es bai mir aber halbwegs brauchbar aus, auch ohne zusätzlicuen Code.
Sofern man keine SubItems nutzt, denn diese werden dann nicht mehr automatisch gezeichnet.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 5. Jul 2010, 08:10
So, noch mal ein kleiner push ...
Vielleicht hat ja heute jemand einen Geistesblitz?!
Denn der Fehler ist doof und alles selber Zeichnen ist auch net schön ...
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 5. Jul 2010, 09:19
Hallo,

versuch doch mal bitte folgendes:
Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
var
  lv: TListView;
  ACanvas: TCanvas;
begin
  if (Sender is TListView) and (Stage = cdPostPaint) then
  begin
    lv := Sender as TListView;
    ACanvas := TCanvas.Create;
    ACanvas.Handle := GetWindowDC(Item.Handle);
    try
      Button1.PaintTo(ACanvas, lv.Columns[0].Width, Item.DisplayRect(drBounds).Top);
    finally
      ReleaseDC(Item.Handle, ACanvas.Handle);
      ACanvas.Free;
    end;
  end;
end;
Funktioniert bei mir. Aber eben nur unter D2007 und Vista ohne Groups.

Greez, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#4

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 5. Jul 2010, 09:50
Wenn man einen TControlCanvas nimmt klappt es wunderbar (sonst gibt es Grafikfehler etc.). DoubleBuffered kann man dann zwar nicht mehr benutzen aber das ist erst mal egal.
Danke
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 27. Sep 2011, 10:45
Hallo,

ich hole diesen Thread nochmal hoch. Ich habe ganz konkret dieses Problem (also von diesem Thread) und brauch aber DoubleBuffered.

Das Problem ist: Reagiert man auf OnAdvancedDrawItem und OnAdvancedDrawSubItem (OwnerDraw = FALSE) um quasi noch etwas zu ergänzen, dann bekommt man diesen Schwarz-Effekt, sobald man auf die Canvas von Listview zeichnet. Zeichnet man auf eine ACanvas deren Handle man per GetWindowDC holt, wird die Zeichenaktion nicht / selten sichtbar.
Es muss irgendetwas mit dem DoubleBuffered-Mechanismus zu tun haben - aber da steig ich irgendwie nicht durch

Kennt jemand eine Lösung?

Gruß, Chris

P.S.: System Win 7 / Applikation mit Themes
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#6

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 27. Sep 2011, 10:51
Wenn ich jetzt sage, daß ich das Problem auch schon hatte, aber irgendwie gelöst habe, ohne mich daran erinnern zu können, hilft das auch nicht weiter, oder?

Also habe ich nochmal gesucht und den von mir gefundenen Workaround im Embarcadero-Forum gefunden

Auch wenn der Schwarz-Effekt dort nicht explizit steht, mit SetBkMode plus Font-Anpassung waren bei mir beide Probleme verschwunden.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 27. Sep 2011, 14:25
Hallo,

danke, das hat geklappt.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:58 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