AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Verhinderung der Selektierung in ListView-Komponente

Verhinderung der Selektierung in ListView-Komponente

Ein Thema von devidespe · begonnen am 3. Jan 2015 · letzter Beitrag vom 20. Jan 2015
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Verhinderung der Selektierung in ListView-Komponente

  Alt 3. Jan 2015, 12:26
Hallo,

ich habe eine ListView-Komponente mit 3 Spalten und diversen Zeilen, wobei ich die Komponente ausschließlich zum Anzeigen von Inhalten verwenden möchte. Die ReadOnly-Eigenschaft ist deshalb aktiviert.

Trotzdem kann der Anwender einzelne Einträge in Spalten selektieren.

Gibt es eine Möglichkeit, die Selektierung zu unterbinden? In den Properties habe ich nichts vergleichbares dazu gefunden.

Danke für Eure Ideen...
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.497 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verhinderung der Selektierung in ListView-Komponente

  Alt 3. Jan 2015, 13:13
ReadOnly hat natürlich nichts mit der Selektierung zu tun.
Nur weil ich in einer Zeitung nichts ändern darf, kann ich dennoch eine Zeitung/Seite auswählen. (aus'm Regal holen)

Und so Events ala OnChange oder OnChanging haben dir nicht gefallen?



TEdit.ReadOnly und man darf dennoch den Focus darauf setzen, bzw. die Selection ändern.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Volker Z.

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

AW: Verhinderung der Selektierung in ListView-Komponente

  Alt 3. Jan 2015, 23:27
Hallo,

Zitat:
ich habe [...] Die ReadOnly-Eigenschaft ist deshalb aktiviert. Trotzdem kann der Anwender einzelne Einträge in Spalten selektieren
himitsu erwähnte schon, dass die ReadOnly -Property nun gar nichts mit der Selektion von Listeneinträgen zu tun hat; diese Property beeinflusst nur das Verhalten - änderbar oder eben nicht - der Property Caption eines Listeneintrags.

Zitat:
Gibt es eine Möglichkeit, die Selektierung zu unterbinden? [...]
Ich sag mal: himitsus Vorschlag OnChanging wird vermutlich Dein Freund sein. Ein:

Delphi-Quellcode:
procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
  AllowChange := False
end;
unterbindet jede Änderung am entsprechenden Listeneintrag; und, wenn das "Hovering" (ich glaube ab Windows Vista) der Listeneinträge stören sollte, dann mit:
Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
  r : TRect;
  c : TCanvas;
begin
  if (cdsHot in State) and (Stage = cdPostPaint) then
    begin
      r := Item.DisplayRect (drSelectBounds);
      c := ListView1.Canvas;
      c.FillRect (r);
      Inc (r.Left, 2);
      Inc (r.Top, 2);
      c.TextOut (r.Left, r.Top, Item.Caption)
    end
end;
"abschalten".

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Verhinderung der Selektierung in ListView-Komponente

  Alt 4. Jan 2015, 09:27
Was ist eigentlich so verwerflich daran, einzelne Einträge selektieren zu können? Wird mir das verwehrt, kann ich einzelne Einträge auch nicht kopieren.
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Verhinderung der Selektierung in ListView-Komponente

  Alt 16. Jan 2015, 15:38
@Volker:

dein ListView1AdvancedCustomDrawItem-Beispiel funktioniert soweit ganz gut und wenn ich mit der Maus über die Listview-Komponente gleite, wird auch nichts mehr selektiert (das scheint dieses Hovering zu sein).

Wenn ich jedoch einen Eintrag in der ersten Spalte markieren möchte und draufklicke, wird die Selektierung trotzdem durchgeführt. Dann äußert sich das Hovering jedoch, indem teilweise ein schwarzer Feld Hintergrund angezeigt wird.

Das Setzen von AllowChange:=False innerhalb ListView1Changing führt sogar dazu, dass in der ersten Spalte nur dann ein Eintrag angezeigt wird, wenn die Maus sich darüber befindet. Sonst ist Spalte 1 leer. Hast Du eine Idee, woran es liegen könnte?
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Volker Z.

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

AW: Verhinderung der Selektierung in ListView-Komponente

  Alt 17. Jan 2015, 21:06
Hallo,

Zitat:
Wenn ich jedoch einen Eintrag in der ersten Spalte markieren möchte und draufklicke, wird die Selektierung trotzdem durchgeführt. [...]
Wie ist den RowSelect gesetzt - schon False oder?

Zitat:
Das Setzen von [...] Hast Du eine Idee, woran es liegen könnte?
Nope. Kann ich nicht nachvollziehen. Häng doch a bisserl Sourcecode dran, dann kann man sich das mal ansehen.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Verhinderung der Selektierung in ListView-Komponente

  Alt 20. Jan 2015, 19:21
Ich hab inzwischen zur TMS AdvListView Komponente gewechselt und im nächsten Update soll es eine Eigenschaft geben, die eine Selektierung verhindert.

Danke trotzdem für deine Hilfe.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:09 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