![]() |
Delphi-Version: 5
ListView Scroll
Hi,
zur Anzeige von Stringlisten verwende ich eine ListView. In dieser LV soll aber nichts markiert werden können (nur anzeigen). Ist LV.enable := true kann der User den Itemindex per Mausklick verändern. Das soll er aber nicht. Ist LV.enable := false kann der User den Itemindex per Mausklick nicht verändern, aber u.U. auch nicht mehr alles sehen, da Scrollen nicht mehr funktioniert. Der User soll in der LV nichts markiern aber trotzdem scrollen und idealerweise auch die Breite der Spalten verändern können. Gibt es dafür eine Lösung? |
AW: ListView Scroll
Hallo,
evtl. HideSelection:=True oder wenn das nicht hilft, das Ereignis OnChanging überschreiben und AllowChange:=False setzen. |
AW: ListView Scroll
dadurch ( OnChanging ) verschwindet bei mir der Inahlt der ersten Spalte ( Caption ) und ich kann auch nichts mehr per Programm an der LV ändern.
Das soll aber möglich sein - nur der User soll nichts selektieren können. Gibt es da noch einen Weg? |
AW: ListView Scroll
Hallo,
versuch es mal mit
Delphi-Quellcode:
Gruß
procedure TForm4.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin AllowChange := Change <> ctState end; |
AW: ListView Scroll
Hallo Volker,
danke, jetzt sehe ich wieder den Inhalt der ersten Spalte, aber leider wird immer noch jeder Versuch den ItemIndex per Programm zu verändern um durch die Liste zu wandern mit einer Exception der Klasse EAccessViolation quittiert. Sobald ich deinen Vorschlag if Change <> ctState then begin AllowChange := true; end else begin AllowChange := false; end; auskommentiere, kann ich den ItemIndex verändern aber der User leider auch wieder einen beliebigen Eintrag markieren. Bin dankbar für jeden weiteren Vorschlag.. Klaus |
AW: ListView Scroll
Definier Dir doch ein privates Boolean-Feld des Formulars, nennen wir es mal FChangedByCode oder so. Wenn Du also im Code den ItemIndex setzen willst, setzt Du dieses Feld auf true, machst Deine Änderungen und setzt es wieder auf false. Im EventHandler musst Du dann natürlich das Feld noch zusätzlich auswerten.
Delphi-Quellcode:
Ungetestet, sollte aber funktionieren.
procedure TForm4.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin AllowChange := (Change <> ctState) or FChangedByCode; end; |
AW: ListView Scroll
Danke, damit geht es wie gewünscht
jetzt muss ich nur noch verstehen weshalb... AllowChange := Change <> ctState ??? |
AW: ListView Scroll
Hallo,
Zitat:
Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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