Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Listbox Items unselektierbar machen ohne Enabled property (https://www.delphipraxis.net/106820-listbox-items-unselektierbar-machen-ohne-enabled-property.html)

richard_boderich 17. Jan 2008 10:04


Listbox Items unselektierbar machen ohne Enabled property
 
Hallo zusammen,

ich wollt bloß mal fragen, ob es eine Möglichkeit gibt, bei einer Listbox die selection der einzelnen Items zu verhindern. Mit dem Enabled Property
geht das ja eigentlich schon, jedoch werden dabei die Listitem Einträge ausgegraut. Ich möchte aber die nomale Textfarbe haben.

mfG Richard

Aurelius 17. Jan 2008 10:05

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
Wäre es möglich die Selektion dann einfach um 1 zu verschieben bzw. die alte Selektion wiederherzustellen?

richard_boderich 17. Jan 2008 10:12

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
@xX0815Xx

Wie meinst du das? Welchen Bezug hat deine Frage zu meinem Problem?

mfG Richard

Aurelius 17. Jan 2008 10:21

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
Huch, ein Wort falsch gelesen und somit den Sinn falsch verstanden :wall:

API 17. Jan 2008 10:25

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
hALLO

2 Möglichkeiten, welche mir einfallen

1) Listbox auf einen Panel (mit Enabled = False) setzen
Haken dabei: Listbox ist nicht mehr scrollbar
2) Ownerdraw

chest3rs 17. Jan 2008 10:31

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
ListBox OwnerDraw, da dann Canvas.Brush.Color auf clWindow oder die Hintergrundfarbe setzten:

Delphi-Quellcode:
(Control as TListBox).Canvas.Brush.COlor := clWindow;
mfg

Bbommel 17. Jan 2008 10:41

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
Noch einen Vorschlag hab ich gerade mal getestet: Für die ListBox die Ereignisse OnClick und OnMouseDown defnieren und mit folgendem Code belegen:

Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if ListBox1.ItemIndex>=0 then
    ListBox1.Selected[ListBox1.ItemIndex]:=false;
end;

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ListBox1.ItemIndex>=0 then
    ListBox1.Selected[ListBox1.ItemIndex]:=false;
end;
Man braucht beide, damit sowohl bei Mausklicks wie auch bei der Steuerung in der ListBox bei Tastatur nix ausgewählt wird. Brachte hier den gewünschten Effekt und hat vielleicht noch den Vorteil, dass auch wirklich nichts ausgewählt wird. :)

Bis denn
Bbommel

API 17. Jan 2008 10:47

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
Zitat:

Zitat von Bbommel
Noch einen Vorschlag hab ich gerade mal getestet: Für die ListBox die Ereignisse OnClick und OnMouseDown defnieren und mit folgendem Code belegen:

Bei mir wird ein Item trotzdem noch kurz als selektioniert angezeigt.

Bbommel 17. Jan 2008 10:51

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
Zitat:

Zitat von API
Zitat:

Zitat von Bbommel
Noch einen Vorschlag hab ich gerade mal getestet: Für die ListBox die Ereignisse OnClick und OnMouseDown defnieren und mit folgendem Code belegen:

Bei mir wird ein Item trotzdem noch kurz als selektioniert angezeigt.

Hm, schade. Wurde es bei mir auch, als ich nur OnClick benutzt habe, aber mit OnMouseDown zusammen ging es dann. Naja, dann scheint das jedenfalls nicht allgemein so möglich zu sein. :-(

richard_boderich 17. Jan 2008 10:54

Re: Listbox Items unselektierbar machen ohne Enabled propert
 
@Bommel

Das funktioniert nicht sauber, er zeichnet immer den Framerahmen mit und manchmal flackert auch die selection mit.

@chest3rs

Diese Methode bringt mir mit jedem Ownerdraw Mode andere Ergebnisse. Ich habe Ownerdraw Fixes, Ownerdrwa Variable und Virtual getestet.
Entweder er zeichnet den Text nicht, oder er zeichnet den selectframe mit.

mfG Richard


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 1 von 2  1 2      

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