AGB  ·  Datenschutz  ·  Impressum  







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

Einzelne ListView Einträge fett machen

Ein Thema von Gecko · begonnen am 30. Mai 2007 · letzter Beitrag vom 16. Jun 2007
Antwort Antwort
Gecko
(Gast)

n/a Beiträge
 
#1

Einzelne ListView Einträge fett machen

  Alt 30. Mai 2007, 03:10
Gibts da ne Möglichkeit? So wie bei Outlook und den ungelesenen Mails, die Fett sind.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Einzelne ListView Einträge fett machen

  Alt 30. Mai 2007, 06:50
Das erste sollte bei solchen Standardfragen eigentlich immer die Suche sein. Auf Anhieb nach 10 Sekunden habe ich z.B. diesen Thread gefunden.
  Mit Zitat antworten Zitat
Gecko
(Gast)

n/a Beiträge
 
#3

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 21:58
Hat mir leider nicht wirklich weitergeholfen.

Habe jetzt folgenden Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
listview1.Items.Add;
listview1.Items[0].Caption:='xx';
listview1.Items.Add;
listview1.Items[1].Caption:='xx';
listview1.Items.Add;
listview1.Items[2].Caption:='xx';

listview1.Repaint;
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
IF item.Index=2 THEN // färbe 3. Zeile
  begin
    Sender.Canvas.Font.Style:=[fsbold];
    DefaultDraw := True; // item normal zeichnen
  end;
end;
Ich möchte es aber eher so (das ganze sollte sich auch direkt nach dem Einfügen des Items färben):

Pseudocode:
Code:

procedure TForm1.Button1Click(Sender: TObject);
begin
listview1.Items.Add;
listview1.Items[0].Caption:='xx';
listview1.Items.Add;
listview1.Items[1].Caption:='xx';
listview1.Items.Add;
listview1.Items[2].Caption:='xx';
Listview1.Items[2].Font.Style:=[fsbold];
end;
Natürlich geht Listview1.Items[2].Font.Style:=[fsbold]; nicht, aber ist das irgendwie möglich?
Wäre ja sonst eine Wahnsinns arbeit, das alles mit CustomDrawItem zu synchronisieren,
garnicht denkbar bei einer Liste mit tausenden Einträgen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 22:08
Zitat:
Wäre ja sonst eine Wahnsinns arbeit, das alles mit CustomDrawItem zu synchronisieren,
Ist aber bei einem Standard-ListView nicht anders möglich
Markus Kinzler
  Mit Zitat antworten Zitat
Gecko
(Gast)

n/a Beiträge
 
#5

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 22:16
Zitat von mkinzler:
Zitat:
Wäre ja sonst eine Wahnsinns arbeit, das alles mit CustomDrawItem zu synchronisieren,
Ist aber bei einem Standard-ListView nicht anders möglich
Hm, was für Alternativen gibts?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 22:18
Virtual TreeView
Markus Kinzler
  Mit Zitat antworten Zitat
Gecko
(Gast)

n/a Beiträge
 
#7

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 22:20
Zitat von mkinzler:
Du weisst nicht zufällig ob der TreeView es von den JEDIS auch tut?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 22:22
Probier es doch aus
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Einzelne ListView Einträge fett machen

  Alt 16. Jun 2007, 22:44
Hi,

ansonsten könntest du item.Data zum Beispiel einen Record zuweisen, der dann beim Zeichnen des Items ausgelesen wird.
Delphi-Quellcode:
type
  PMyFont = ^TMyFont;
  TMyFont = Record
    Fett: boolean;
    FontSize: integer;
end;
...
  private
    pItemFont: PMyFont;

...
//zuweisen
  New(pItemFont);
  pItemFont^.Fett:= true;
  ListItem.Data:= pItemFont;
...

procedure TForm1.LvCustomDrawItem(Sender: TCustomListView; Item: TListItem;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
  ItemRect: TRect;
begin
  ItemRect:= item.DisplayRect(drBounds);
  with TCustomListView(Sender) do
  begin
  ...
    Canvas.FillRect(ItemRect);
    if not PMyFont(item.Data)^.Fett then
      Canvas.Font.Style:=[]
    else
      Canvas.Font.Style:=[fsbold];
    Canvas.TextOut(0,ItemRect.Top,Item.Caption);
  ...
  end;
end;

//wieder freigeben
procedure TForm1.FormDestroy(Sender: TObject);
var
  loop : integer;
begin
  for loop := 0 to pred(lv.Items.Count) do
  begin
    pItemFont:= lv.Items.Item[loop].Data;
    DisPose(pItemFont);
  end;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  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 22:19 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