Einzelnen Beitrag anzeigen

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