Delphi-PRAXiS

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/)
-   -   TListbox - Focus - Highlight (https://www.delphipraxis.net/183962-tlistbox-focus-highlight.html)

mm1256 16. Feb 2015 13:04

TListbox - Focus - Highlight
 
Hallo,

eigentlich was ganz Primitives: Auf einer Form befinden sich u.A. zwei Komponenten: ein DBGrid und eine Listbox. Welche davon gerade den Focus hat, soll auch optisch sichtbar sein. Beim DBGrid ist das ja einfach mit den DBGridOptions, aber bei der Listbox hab ich ein bischen Verständnisprobleme. Wenn die Listbox einmal den Fokus erhalten hat, und danach wieder verliert, sollte nach meinem Verständnis durch
Code:
ListBox.ItemIndex := -1
die mit HighLightColor aktive Zeile wieder "normal" dargestellt werden. Ist aber nicht. Ist das ein VCL-Bug, oder WAD, oder sonstwas?

So lässt sich das Problem zwar lösen, aber elegant geht irgendwie anders.

Delphi-Quellcode:
procedure ResetPlayList;
var
  Items: TStrings;
  i: integer;
begin
  Items := TStringList.Create;
  try
    Items.AddStrings(PlayList.Items);
    PlayList.Items.Clear;
    for i := 0 to Pred(Items.Count) do PlayList.Items.Add(Items[i]);
    PlayList.ItemIndex := -1;
  finally
    Items.Free;
  end;
  Options := TitelGrid.Options + [dgAlwaysShowSelection];
  TitelGrid.Options := Options;
end;
PlayList ist die TListBox. Was noch seltsam oder zumindest nicht auf Anhieb logisch ist: Wenn
Code:
AutoComplete = True
dann funktioniert nicht mal das. AutoComplete muss also immer false sein.

BadenPower 16. Feb 2015 13:26

AW: TListbox - Focus - Highlight
 
Warum nimmst Du nicht die TListView-Komponente. Diese hat die Property HideSelection, welche auf true gesetzt ist, damit die Markierung verschwindet, wenn die ListView nicht den Fokus hat.

Das DBGrid setzt Du im Objektinspector unter Options auf dgAlwaysShowSelection auf false.

Dann brauchst Du keine eizige Zeile Code um das Verhalten zu erreichen, welches Du möchtest. Heisst auf Deutsch: Kein Fokus -> keine Selektion sichtbar.

mm1256 16. Feb 2015 14:01

AW: TListbox - Focus - Highlight
 
Zitat:

Zitat von BadenPower (Beitrag 1290061)
Das DBGrid setzt Du im Objektinspector unter Options auf dgAlwaysShowSelection auf false.

Genau das geht ja nicht...siehe Code. dgAlwaysShowSelection ändere ich ja zur Laufzeit. Darf nur included sein, wenn der DBGrid auch den Fokus hat. Das ist also kein Problem.

Zitat:

Zitat von BadenPower (Beitrag 1290061)
Warum nimmst Du nicht die TListView-Komponente.

Gute Frage. Weil ich keine Überschrift brauche + weil ich keine Spalten brauche. Aber, ich hab'S ja hin bekommen. Mich hätten nur die Hintergründe interessiert.


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