![]() |
Problem mit ListView, OwnerDraw und Font
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe gerade ein kleines Problem mit einem Listview. ViewStyle steht auf vsReport und OwnerDraw auf true. Nun zeichne ich jedes Item einzeln. Allerdings möchte ich auch den Font verändern. Leider funktioniert dies nicht. Die entsprechende Codestelle ist makiert.
Delphi-Quellcode:
Ich habe zur verdeutlichung mal einen Screenshot angehängt...
procedure TMainDlg.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var x,y,i:integer; s:string; begin with Sender as TListView do begin with Canvas do begin if Item.Index mod 2 = 1 then begin Brush.Color := rgb(240,240,255); end else begin Brush.Color := rgb(255,255,255); end; if Item.Selected then begin Brush.Color := rgb(220,220,255); Pen.Style := psDot; Pen.Color := clGray; end else begin Pen.Style := psSolid; Pen.Color := Brush.Color; end; Rectangle(Item.DisplayRect(drLabel).Left+2,Item.DisplayRect(drLabel).Top+2, Item.DisplayRect(drBounds).Right-2,Item.DisplayRect(drLabel).Bottom-2); SmallImages.Draw(Canvas,Item.DisplayRect(drIcon).Left, Item.DisplayRect(drIcon).Top,Item.ImageIndex,dsTransparent,itImage); x := Item.DisplayRect(drLabel).Left+4; y := Item.DisplayRect(drLabel).Top+4; Sender.Canvas.Font.Style := [fsBold]; // <---- Keine Reaktion!!!! for i := 0 to Item.SubItems.Count-1 do begin s := Item.SubItems[i]; TextOut(x,y,s); y := y + TextHeight(s); end; end; end; DefaultDraw := false; end; Schonmal danke im vorraus, Igel457 |
Re: Problem mit ListView, OwnerDraw und Font
Wenn du die entsprechende Zeile um 7 Zeilen höher setzt funktioniert es.
Delphi-Quellcode:
Sender.Canvas.Font.Style := [fsBold];// <---- hier geht es noch!!!!
SmallImages.Draw(sender.Canvas,Item.DisplayRect(drIcon).Left, Item.DisplayRect(drIcon).Top,Item.ImageIndex,dsTransparent,itImage); x := Item.DisplayRect(drLabel).Left+4; y := Item.DisplayRect(drLabel).Top+4; Sender.Canvas.Font.Style := [fsBold]; // <---- Keine Reaktion!!!! for i := 0 to Item.SubItems.Count-1 do |
Re: Problem mit ListView, OwnerDraw und Font
Du hast recht...
Danke! Kannst du mir jetzt nur noch erklären, warum das jetzt funktioniert? :gruebel: Wie kann ich jetzt aber die zweite Zeile nicht dick schreiben, also folgendes?
Delphi-Quellcode:
Das klappt nämlich nicht...
for i := 0 to Item.SubItems.Count-1 do
begin s := Item.SubItems[i]; TextOut(x,y,s); y := y + TextHeight(s); Font.Style := []; end; |
Re: Problem mit ListView, OwnerDraw und Font
Den Canvas neu zeichnen hilft.
Delphi-Quellcode:
Font.Style:= [];//oder [fsBold]
Sender.canvas.Refresh; |
Re: Problem mit ListView, OwnerDraw und Font
Danke!
Du warst mir wirklich eine große Hilfe! :bouncing4: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz