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 Gauges in Listview: Problem beim Scrollen und Navigieren (https://www.delphipraxis.net/106819-gauges-listview-problem-beim-scrollen-und-navigieren.html)

Andreas H. 17. Jan 2008 09:49


Gauges in Listview: Problem beim Scrollen und Navigieren
 
Hallo,

mit folgendem Code füge ich in einer ListView eine Zeile mit einer Gauge ein.

Delphi-Quellcode:
  li:=LVMagazin.Items.add;
  li.Caption:=t.ID;
...
  r:=li.DisplayRect(drBounds);
  for i:=0 to 4 do
    r.Left:=r.Left+LVMagazin.columns[i].Width;
  r.Right:=r.Left+LVMagazin.columns[5].Width;
  g:=TGauge.Create(Self);
  g.BackColor:=clRed;
  g.ForeColor:=clLime;
  g.Parent:=LVMagazin;
  g.BoundsRect:=r;
  g.Progress:=100-li.Index;
  li.Data:=g;
Beim Scrollen, Navigieren in der ListView oder bei Refresh werden nicht die richtigen Gauges zum Item gezeichnet.
Es sieht so auf, als ob die Gauges nicht nach dem ItemIndex gezeichnet werden sondern nach der angezeigten Zeilennummer. In der ersten sichtbaren Zeile wird die Gauge des erten Items (Index 0) gezeichnet, egal wie der Vert.Scrollbalken steht!


Ich hoffe ich habe mich verständlich ausgedrückt.

Was kann man da machen?

Gruß Andreas

Andreas H. 17. Jan 2008 11:31

Re: Gauges in Listview: Problem beim Scrollen und Navigieren
 
Hallo,

habs selber rausgefunden!

Da fehlt noch das OnCustomDrawSubItem der ListView:
Delphi-Quellcode:
var
  g:TGauge;
  r:TRect;
begin
  case SubItem of
  5:
    begin
      DefaultDraw:=false;
      g:=TGauge(Item.Data);
      r:=g.BoundsRect;
      r.Top:=Item.DisplayRect(drBounds).Top;
      r.Bottom:=Item.DisplayRect(drBounds).Bottom;
      g.BoundsRect:=r;
    end;
  end;
Hier wird die vertikale Position der Gauges angepasst.

Gruß Andreas

s-off 17. Jan 2008 11:36

Re: Gauges in Listview: Problem beim Scrollen und Navigieren
 
Zitat:

Zitat von Andreas H.
Hier wird die vertikale Position der Gauges angepasst.

[OT]
Ich kenne Gauge nur in horizontaler Position :mrgreen:
[/OT]
Konnte ich mir jetzt nicht verkneifen :zwinker: - wer's nicht verstehtt, bitte nicht nachfragen 8)

Andreas H. 17. Jan 2008 11:54

Re: Gauges in Listview: Problem beim Scrollen und Navigieren
 
Ist Gauge blond? :wink:

Zur Sache:

leider funzt es immer noch nicht so richtig. Die Anzeige ist recht lam. Ist ja auch klar, weil die Gauges doppelt (vor und nach der Positionsänderung) gezeichnet werden. Und beim Raufscrollen wird ganz unten immer die Gauge des letzen Items angezeigt.

Kennt denn jemand eine andere Lösung als die Gauge selbt zu zeichenen mit 2 Rechtecken und nem Text auf dem Canvas?

Gruß Andreas

Andreas H. 18. Jan 2008 11:44

Re: Gauges in Listview: Problem beim Scrollen und Navigieren
 
Hallo,

hat denn niemand eine Idee?


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