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 Tatsächliche Breite einer ListView mit ViewStyle vsReport? (https://www.delphipraxis.net/90594-tatsaechliche-breite-einer-listview-mit-viewstyle-vsreport.html)

robvs 20. Apr 2007 09:46


Tatsächliche Breite einer ListView mit ViewStyle vsReport?
 
Moin,

also ich hab da ne Listview mit ViewStyle vsReport und es kann vorkommen, dass ein User die Columns langzieht und dadruch ein horizontaler Scroll innerhalb der LV möglich wird. Jetzt muss ich aber die GESAMTE Breite des Client-Bereichs kennen und weiß nicht, wie das mit diesem Stil geht.

Für die Icon-Stile gibt es die Eigenschaft BoundingRect ["gibt die Koordinaten des Rechtecks zurück, das alle Elemente der Listenansicht umgibt. Mit dieser Eigenschaft können Sie in einer Anwendung die Größe des Steuerelements an die Elemente anpassen oder feststellen, ob sich der Mauszeiger über einem Listenelement befindet.

Hinweis:
BoundingRect kann nur verwendet werden, wenn die Eigenschaft ViewStyle der Listenansicht den Wert vsIcon oder vsSmallIcon hat."].


Aber was gäbe es da für meinen ReportStil?

Noch mal zur Verdeutlichung:

YYYXXXXXXXXXXXXXXXXXXXXXXXX

X = sichtbarer Bereich, ermittele ich über ClientWidth der LV
Y = unsichtbarer Bereich, wie komme ich an den ran??

Besten Gruß
Robert

bitsetter 20. Apr 2007 11:01

Re: Tatsächliche Breite einer ListView mit ViewStyle vsRepor
 
Hallo,

meist du diese Breite?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Breite, Spalte: integer;
begin
  Breite:= 0;
  for Spalte:= 0 to ListView1.Columns.Count- 1 do
  inc(Breite, ListView1.Columns.Items[Spalte].Width);

  Showmessage('Breite: '+ inttostr(Breite));
end;
Den unsichtbaren Bereich kannst du dann mit Hilfe von ClientWidth errechnen.

robvs 20. Apr 2007 11:13

Re: Tatsächliche Breite einer ListView mit ViewStyle vsRepor
 
Hm, ich merke, ich habe mein Problem etwas falsch beschrieben.

Also probier ich es noch mal anders auszudrücken: Wenn ein horizontaler Scroll möglich ist, wie ermittele ich dann, wie sich die Position eines Columns verändert? Wenn ich scrolle, verändert sich die Linksposition der Spalte im Fenster. Und genau diese bräuchte ich dann.

Hat noch jmd Ideen?

uwewo 20. Apr 2007 11:56

Re: Tatsächliche Breite einer ListView mit ViewStyle vsRepor
 
Hat dein ListView Columns?
Wenn Ja, summiere alle Listview.Columns[i].Width.
Wenn Nein, erstelle Columns.

robvs 20. Apr 2007 12:08

Re: Tatsächliche Breite einer ListView mit ViewStyle vsRepor
 
Das ist ja genau das Problem, dein Vorschlagt genügt leider nicht meinen Ansprüchen.

Wenn eine Column (vorne) durch den horizontalen Scroll nur noch halb sichtbar ist, wie ist dann der Linkswert meiner Column (weiter hinten)?

bitsetter 20. Apr 2007 13:04

Re: Tatsächliche Breite einer ListView mit ViewStyle vsRepor
 
Kannst du dann hiermit was anfangen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  vaScrollInfo: TScrollInfo;
begin
  FillChar(vaScrollInfo, SizeOf(vaScrollInfo), 0);
  vaScrollInfo.cbsize := SizeOf(vaScrollInfo);
  vaScrollInfo.fMask := SIF_ALL;
  GetScrollInfo(ListView1.Handle, SB_HORZ, vaScrollInfo);

  Caption:= inttostr(vaScrollInfo.nTrackPos);
end;

robvs 20. Apr 2007 14:03

Re: Tatsächliche Breite einer ListView mit ViewStyle vsRepor
 
Genau das war's. VIELEN DANK! :)


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