Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView: Text einer Zelle in einer anderen Farbe (https://www.delphipraxis.net/35919-listview-text-einer-zelle-einer-anderen-farbe.html)

Helmi 13. Dez 2004 18:08


ListView: Text einer Zelle in einer anderen Farbe
 
Hallo,

wie kann ich einen Text einer Zelle in einer anderen Farbe darstellen?

mfg
Helmi

jensw_2000 14. Dez 2004 09:02

Re: ListView: Text einer Zelle in einer anderen Farbe
 
Hi,

das geht im Eventhandler "CustomDrawItem" des Listviews.


Code:
  IF item.Index=2 THEN // färbe 3. Zeile
  begin
    Sender.Canvas.Brush.Color := clYellow; // gelben "Pinsel" für den Hintergrund
    Sender.Canvas.Font.Color := clRed; // Schrift-Farbe rot
    DefaultDraw := True; // item normal zeichnen
  end;

Helmi 14. Dez 2004 14:24

Re: ListView: Text einer Zelle in einer anderen Farbe
 
Hallo,

danke für den Code.

Nur leider ist das nicht das was ich brauche.

Ich möchte nicht eine ganze Zeile markieren, sondern nur eine bestimmte Zelle

also z. B. die Zelle(Zeile 3, Spalte 3)

mfg
Helmi

jensw_2000 14. Dez 2004 15:06

Re: ListView: Text einer Zelle in einer anderen Farbe
 
Dann nimm anstatt CustomDrawItem CustomDrawSubItem ...

Habe dazu sogar einen Thread gefunden ...

[dp]Hintergrundfarbe Zeile ListView Inhalt-Abhängig[/dp]

:hi:

Helmi 14. Dez 2004 15:15

Re: ListView: Text einer Zelle in einer anderen Farbe
 
danke für den Link

leider wird dort auch immer nur die Zeile markiert - aber nicht eine Zelle

paresy 14. Dez 2004 15:46

Re: ListView: Text einer Zelle in einer anderen Farbe
 
irgendwie soetwas sollte funktionieren...

Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var R: TRect;
    Text: String;
begin

 if (Item.Index = 1) and (SubItem = 1) then
  begin
    //get subitems rect
    ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @R);

    Text := Item.SubItems[SubItem]; //data

    Sender.Canvas.Brush.Color := clSkyBlue;
    Sender.Canvas.Font.Color := clGreen;
    Sender.Canvas.FillRect(R);

    //paint text
    DrawText(Sender.Canvas.Handle,
             PCHAR(Text),
             Length(Text),
             R,
             DT_SINGLELINE or DT_END_ELLIPSIS);

    DefaultDraw := False;
  end

end;

Helmi 14. Dez 2004 15:56

Re: ListView: Text einer Zelle in einer anderen Farbe
 
danke - dieser Code funktioniert
mit einem kleinem Schönheitsfehler

der restliche Text ausser der in der Zelle, in der Zeile ist fett

padavan 26. Okt 2005 11:40

Re: ListView: Text einer Zelle in einer anderen Farbe
 
habe beobachtet, dass wenn man was in dem Event "CustomDrawItem" tut, und sei es nur eine linie ziehen mit draw, werden alle items genrell FETT geschrieben - warum?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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