Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#28

AW: ListView-Eintrag wird bei Windows 7 schwarz

  Alt 28. Jun 2014, 11:13
Hallo,

ich habe bei einer Software das gleiche Problem.

Den Vorschlag mit Sender.Canvas.Brush.Style := bsClear; hab ich ausprobiert, nur leider ohne Erfolg.
Das dumme ist, dass das Problem auf meinem Win8-Rechner nicht mehr auftaucht - nur auf meinem (neuen)
Win7-Rechner in der Firma (und kann es somit nicht testen)

Hab ich das Sender.Canvas.Brush.Style := bsClear; an der falschen Stelle drin oder generell einen
Fehler diesbezüglich?

Bei XP hat es bislang ohne dieser Zeile funktioniert (danach anscheinend auch wieder)

Delphi-Quellcode:
procedure TMainForm.ListView_DateienCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var
  S_Text : String;
  Diff_Top : Integer;
  Rect : TRect;
  Textfarbe : TColor;

begin
  //Rect der Zelle erhalten
  ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @Rect);

  Sender.Canvas.Brush.Style := bsClear;

  //Hintergrundfarbe
  Sender.Canvas.Brush.Color := clWindow;

  //Farbe?
  If ListViewTextFarbe(Textfarbe, S_Text, Item.SubItems[SubItem - 1]) then
    begin
      //Schriftfarbe
      Sender.Canvas.Font.Color := Textfarbe;

      //Hintergrundfarbe und Textfarbe setzen, wenn die Zeile markiert ist
      If Item.Selected then
        begin
          Sender.Canvas.Font.Color := clHighlightText;
          Sender.Canvas.Brush.Color := clHighlight;
        end;

      //Differenz für Top berechnen, um Text mittig darzustellen
      Diff_Top := (Rect.Height - Sender.Canvas.TextHeight(S_Text)) div 2;

      //Text ausgeben
      Sender.Canvas.TextRect(Rect, Rect.Left + 5, Rect.Top + Diff_Top, S_Text);

      DefaultDraw := False;
    end;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat