Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Verhinderung der Selektierung in ListView-Komponente (https://www.delphipraxis.net/183340-verhinderung-der-selektierung-listview-komponente.html)

devidespe 3. Jan 2015 12:26

Verhinderung der Selektierung in ListView-Komponente
 
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...

himitsu 3. Jan 2015 13:13

AW: Verhinderung der Selektierung in ListView-Komponente
 
ReadOnly hat natürlich nichts mit der Selektierung zu tun. :zwinker:
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.

Volker Z. 3. Jan 2015 23:27

AW: Verhinderung der Selektierung in ListView-Komponente
 
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
Delphi-Quellcode:
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
Delphi-Quellcode:
Caption
eines Listeneintrags.

Zitat:

Gibt es eine Möglichkeit, die Selektierung zu unterbinden? [...]
Ich sag mal: himitsus Vorschlag
Delphi-Quellcode:
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ß

Dejan Vu 4. Jan 2015 09:27

AW: Verhinderung der Selektierung in ListView-Komponente
 
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.

devidespe 16. Jan 2015 15:38

AW: Verhinderung der Selektierung in ListView-Komponente
 
@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?

Volker Z. 17. Jan 2015 21:06

AW: Verhinderung der Selektierung in ListView-Komponente
 
Hallo,

Zitat:

Wenn ich jedoch einen Eintrag in der ersten Spalte markieren möchte und draufklicke, wird die Selektierung trotzdem durchgeführt. [...]
:shock: Wie ist den
Delphi-Quellcode:
RowSelect
gesetzt - schon
Delphi-Quellcode:
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ß

devidespe 20. Jan 2015 19:21

AW: Verhinderung der Selektierung in ListView-Komponente
 
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.


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