AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Scroll

Ein Thema von epm5 · begonnen am 13. Feb 2013 · letzter Beitrag vom 14. Feb 2013
Antwort Antwort
epm5

Registriert seit: 8. Jan 2013
5 Beiträge
 
#1

ListView Scroll

  Alt 13. Feb 2013, 10:56
Delphi-Version: 5
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?
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: ListView Scroll

  Alt 13. Feb 2013, 11:44
Hallo,

evtl. HideSelection:=True oder wenn das nicht hilft, das Ereignis OnChanging überschreiben und AllowChange:=False setzen.
  Mit Zitat antworten Zitat
epm5

Registriert seit: 8. Jan 2013
5 Beiträge
 
#3

AW: ListView Scroll

  Alt 14. Feb 2013, 13:11
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?
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#4

AW: ListView Scroll

  Alt 14. Feb 2013, 13:45
Hallo,

versuch es mal mit
Delphi-Quellcode:
procedure TForm4.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
  AllowChange := Change <> ctState
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat
epm5

Registriert seit: 8. Jan 2013
5 Beiträge
 
#5

AW: ListView Scroll

  Alt 14. Feb 2013, 14:44
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: ListView Scroll

  Alt 14. Feb 2013, 14:48
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:
procedure TForm4.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
  AllowChange := (Change <> ctState) or FChangedByCode;
end;
Ungetestet, sollte aber funktionieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
epm5

Registriert seit: 8. Jan 2013
5 Beiträge
 
#7

AW: ListView Scroll

  Alt 14. Feb 2013, 16:25
Danke, damit geht es wie gewünscht
jetzt muss ich nur noch verstehen weshalb...
AllowChange := Change <> ctState ???
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#8

AW: ListView Scroll

  Alt 14. Feb 2013, 17:21
Hallo,

Zitat:
jetzt muss ich nur noch verstehen weshalb...
AllowChange := Change <> ctState ???
Wenn eine der Eigenschaften Cut, Focused oder Selected eines Listeneintrags geändert wird, dann wird - falls vorhanden - ein OnChanging-Event getriggert mit Change = ctState

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 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