Autor Beitrag
Zaubär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: So 09.02.03 20:49 
Hallo,

gibt's eigentlich eine Möglichkeit die Text-Farbe eines einzelnen Eintrags in einer Listview zu ändern ? Wenn ja: Kann mir das jemand sagen wie's geht ?
_Fry_
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 09.02.03 21:07 
Titel: Leider nich
Soweit ich weiss, gibt es leider keine Möglichkeit mehr, die es erlaubt die Farbe eines einzelnen String in der ListBox zu ändern. :( Hab das mehrere Male ausprobiert.

MFG
_Fry_
Zaubär Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: So 09.02.03 21:19 
sorry wenn ich dich korrigieren muss, aber ListBox und Listview ist meiner Meinung nach nicht dasselbe.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 09.02.03 22:04 
Selber zeichnen heißt das Stichwort.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mo 10.02.03 08:56 
Hallo,

schau Dir einmal das Demo zur Virtuallistview im Verzeichnis "...\Programme\Borland\Delphi5\Demos\Virtual Listview" an.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 10.02.03 09:58 
Hallo Hansa,

die tListView verfügt über die Events OnCustomDraw, OnCustomDrawItem und OnCustomDrawSubItem. Mit hilfe dieser Events kannst Du selbst die Einträge zeichnen! Nicht vergessen die Eigenschaft OwnerDraw auf True zu setzen.

Gruß
TINO
marcme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mo 17.02.03 15:52 
Hallo zusammen!

Ich habe ein ähnliches Problem.
Ich würde gerne den Text in einer Spalte einer ListView farbig zeichnen.
Mein Problem ist nur, ich bekomme den String des Elementes das gezeichnet wird nicht ,um in "einzufärben" und dann wieder zu zeichnen.
In dem Ereignis OnCustomDrawSubItem gelange ich über den Parameter SubItem schon mal in die richtige Spalte. Es muß wohl irgendwie über den Parameter Item funktionieren, aber ich stecke da momentan etwas fest.

Gruß
Marcus
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mo 17.02.03 15:59 
Hallo,

die aktuelle Zeile wird in in Item übergeben. Den entsprechenden Text in der Spalte erhälst Du dann durch:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var s:String;

...
 if (Item=nil) then Exit;
 s:=Item.SubItems[SubItem];
...

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
iaby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 17.02.03 19:07 
vielleicht gibts bei torry.net ja eine komponente, die dies erlaubt.
wäre ne möglichkeit!
marcme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 18.02.03 07:35 
Hallo,

laut F1-Hilfe sollte

Item.SubItems[SubItem]

eigentlich auch möglich sein.
Aber ich bekomme immer eine Fehlermeldung beim compilieren.

[Fehler] Unit1.pas(556): Undefinierter Bezeichner: 'SubItems'

Hier die eigentlich simple und triviale Procedur:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TFrmShowData.LvOverviewCustomDrawSubItem(
  Sender: TCustomViewControl; Item: TCustomViewItem; SubItem: Integer;
  Canvas: TCanvas; const Rect: TRect; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);

var tmpstr : string;

begin

  tmpstr := Item.SubItems[SubItem];
 
  if (LvOverview.Columns[subitem].Caption = 'Status')
  then begin
    with canvas do
    begin
      Font.Color := clblue;
      FillRect(rect);
      TextOut(rect.Left,rect.Top,tmpstr);
    end;
  end;
end;


Nachtrag:
Mir ist aufgefallen, daß es die Eigenschaft SubItems zwar bei einer "normalen" Anwendug gibt, jedoch bei einer CLX-Anwendung gibt es diese Eigenschaft nicht mehr.
marcme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 18.02.03 14:22 
Sodala!!!

Nach mehrstündigem Knobeln bin ich zu folgender Zeile gekommen!


ausblenden Quelltext
1:
    tmpstr := Lvoverview.Items.Item[Lvoverview.Items.IndexOf(item)].SubItems.Strings[subitem-1];