Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TListView: Bei bestimmten Bedingungen Schriftart ändern


Metschu - So 15.08.10 15:06
Titel: TListView: Bei bestimmten Bedingungen Schriftart ändern
Hallo zusammen!

Ich würde gerne in einer TListView im ViewStyle "vsReport" bestimmte Einträge Fett oder Durchgestrichen zeichnen.

Folgender Quelltext Ausschnitt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure Tuebersicht.ListeCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
 if Bedingung=true
  then begin;
   ListView1.Canvas.Brush.Color := clMoneyGreen;
   ListView1.canvas.Font.Color  := clred;
   ListView1.canvas.Font.Style  := [fsbold]
  end
end;


Die Hintergrund-, sowie Schriftfarbe wird bei erfüllter Bedingung geändert. Der Text wird aber nicht Fett geschrieben.

Nehme ich statt

Delphi-Quelltext
1:
ListView1.canvas.Font.Style := [fsbold]                    


Delphi-Quelltext
1:
ListView1.Font.Style := [fsbold]                    

wird die Ganze Liste Fett geschrieben.
Bei diesem Versuch

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure Tuebersicht.ListeCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
 if Bedingung=true
  then begin;
   ListView1.Font.Style := [fsbold]
  end
  else begin;
   ListView1.Font.Style := []
  end
end;

flackert das Bild ständig und das Programm hängt.

"ParentFont" habe ich schon auf False gesetzt.

Hat noch jemand nen Tip für mich ? :?!?:

Gruß

Torsten


ALF - So 15.08.10 16:17

mh... war das nicht so :gruebel: z.B.

Delphi-Quelltext
1:
2:
3:
4:
5:
if item.Index = 1 then
  begin
      Sender.Canvas.Font.Style := [fsBold];
      Sender.Canvas.Brush.Color:= clgreen;
  end

zumindestens bei vsList
Gruss Alf


Metschu - So 15.08.10 22:12

:autsch:
Danke für den Tip.

Habs mal auf vsList umgestellt und da war der Text Fett.
Beim Zurückstellen auf vsReport ist mir aufgefallen, das ich ja die erste Spalte, als "Caption", ausgeblendet hatte (breite auf 0 gesetzt). Diese Spalte war nach dem hin und her stellen des Styles wieder aufgetaucht und hier waren die rchtigen Textstellen Fett geschrieben.

Jetzt läufts unter der Procedure "OnCustomDrawSubItem" wunderbar

Gruß

Torsten