AGB  ·  Datenschutz  ·  Impressum  







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

TListbox - Focus - Highlight

Ein Thema von mm1256 · begonnen am 16. Feb 2015 · letzter Beitrag vom 16. Feb 2015
Antwort Antwort
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

TListbox - Focus - Highlight

  Alt 16. Feb 2015, 14:04
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.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#2

AW: TListbox - Focus - Highlight

  Alt 16. Feb 2015, 14:26
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.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: TListbox - Focus - Highlight

  Alt 16. Feb 2015, 15:01
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.

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.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS

Geändert von mm1256 (16. Feb 2015 um 15:03 Uhr)
  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 23:39 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