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 Einzelne ListView Einträge fett machen (https://www.delphipraxis.net/92998-einzelne-listview-eintraege-fett-machen.html)

Gecko 30. Mai 2007 03:10


Einzelne ListView Einträge fett machen
 
Gibts da ne Möglichkeit? So wie bei Outlook und den ungelesenen Mails, die Fett sind.

Jelly 30. Mai 2007 06:50

Re: Einzelne ListView Einträge fett machen
 
Das erste sollte bei solchen Standardfragen eigentlich immer die Suche sein. Auf Anhieb nach 10 Sekunden habe ich z.B. diesen Thread gefunden.

Gecko 16. Jun 2007 21:58

Re: Einzelne ListView Einträge fett machen
 
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.

mkinzler 16. Jun 2007 22:08

Re: Einzelne ListView Einträge fett machen
 
Zitat:

Wäre ja sonst eine Wahnsinns arbeit, das alles mit CustomDrawItem zu synchronisieren,
Ist aber bei einem Standard-ListView nicht anders möglich

Gecko 16. Jun 2007 22:16

Re: Einzelne ListView Einträge fett machen
 
Zitat:

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?

mkinzler 16. Jun 2007 22:18

Re: Einzelne ListView Einträge fett machen
 
Virtual TreeView

Gecko 16. Jun 2007 22:20

Re: Einzelne ListView Einträge fett machen
 
Zitat:

Zitat von mkinzler

Du weisst nicht zufällig ob der TreeView es von den JEDIS auch tut?

mkinzler 16. Jun 2007 22:22

Re: Einzelne ListView Einträge fett machen
 
Probier es doch aus

bitsetter 16. Jun 2007 22:44

Re: Einzelne ListView Einträge fett machen
 
Hi,

ansonsten könntest du
Delphi-Quellcode:
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;


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