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 Problem mit TListView.OnDrawItem (https://www.delphipraxis.net/9116-problem-mit-tlistview-ondrawitem.html)

alcaeus 18. Sep 2003 13:50


Problem mit TListView.OnDrawItem
 
Hi! Ich versuche in einer ListView einzelne Zeilen fett darzustellen. Dabei habe ich ein klitzekleines Problem: Beim Verändern der Spaltenbreite wird nicht das gesamte Element neu gezeichnet, sondern nur von der Spalte weg,deren Größe ich bearbeite. Das heißt, wenn ich Spalte 2 größer mache, werden nur Spalten 3, 4, etc. neu gezeichnet, und sobald Spalte 2 groß genug ist, sieht man wieder den alten Inhalt von Spalte 2. Das ist wirklich nervend, und auch sobald der Resize abgschlossen ist, muss ich immer noch das Element anklicken, ansonsten bleibt es einfach wie oben beschrieben. Falls ich eine Spalte kleiner mache, wird der zuerst unsichtbare Bereich nicht neu gezeichnet, d.h., dass Spalten die aufgrund eine kleineren Spalte am Anfang wieder Platz finden, werden nicht neu aufbereitet. Ok, nun genug der theorie, hier der Source:

Delphi-Quellcode:
procedure Tf_Addresses.lv_AddressesDrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
var
  CurrentLeft: Integer;
  i: Integer;
begin
//TODO:Custom draw the items
  with Sender as TListView do
  begin
    Canvas.FillRect(Rect);
    if Item.SubItems[5] = '1' then
      Canvas.Font.Style := [fsBold]
    else
      Canvas.Font.Style := [];
    Canvas.Font.Color := clBlack;
    CurrentLeft := Rect.Left+2;
    Canvas.TextOut(CurrentLeft, Rect.Top, Item.Caption);
    for i := 1 to Columns.Count-1 do
    begin
      Inc(CurrentLeft,Columns[i-1].Width);
      Canvas.TextOut(CurrentLeft, Rect.Top, Item.SubItems[i-1]);
      Canvas.FillRect(GetRect(CurrentLeft+Canvas.TextWidth(Item.SubItems[i-1]),Rect.Top,Rect.Right,Rect.Bottom));
    end;
  end;
end;
Kann mir vielleicht irgendjemand helfen???

alcaeus 18. Sep 2003 14:57

Re: Problem mit TListView.OnDrawItem
 
*nachobenrück*

Es ist wirklich wichtig, kann mir wirklich keiner helfen?


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