AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fokus in Liste der Combobox

Ein Thema von aschne1 · begonnen am 28. Nov 2016 · letzter Beitrag vom 30. Nov 2016
 
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#1

Fokus in Liste der Combobox

  Alt 28. Nov 2016, 13:06
Hallo

Irgendwie steh ich auf dem Schlauch und komme einfach nicht weiter. Vielleicht kann mir jemand helfen?

Ich möchte eine Combobox mit vielen Einträgen filtern und verwende dazu die untenstehende Prozedur welche bei Onchange aufgerufen wird. Das funktioniert eigentlich ganz gut, wenn alle Einträge mit dem Suchbegriff beginnen. Hat es aber Einträge in der Combobox welche anders beginnen, dann wird nicht das erste angezeigte Element fokusiert, sondern das welches mit dem Suchbegriff beginnt.


Beispiel
Suchbegriff 'Reis'
Combobox enthält dann Basmatireis, Reismix, Trockenreis, Wildreis
wenn nun die Liste den Fokus erhält ist nicht Basmatireis sondern Reismix markiert!

Wenn ich mit AnsiStartsText(Combo.Text, Origin[I]) filtere funktioniert es, da nur noch Elemente in der Combobox sind die mit dem Suchbegriff beginnen.

Wie bekomme ich es hin, dass das erste Item in der Liste markiert ist. Kann mir jemand weiterhelfen?


Delphi-Quellcode:
procedure FilterComboBox(Combo: TComboBox; DefaultItems: TStrings);

  function Origin: TStrings;
  begin
    if Combo.Tag = 0 then
    begin
      Result := TStringList.Create;
      Result.Assign(Combo.Items);
      Combo.Tag := Integer(Result);
    end
    else
      Result := TStrings(Combo.Tag);
  end;

var
  Filter: TStrings;
  I: Integer;
  iSelIni: Integer;
begin
  Combo.Items.BeginUpdate;

    if(Combo.Text <> EmptyStr) then
    begin
      iSelIni:= Length(Combo.Text);
      Filter := TStringList.Create;
      try
        for I := 0 to Origin.Count - 1 do
          if AnsiContainsText(Origin[I], Combo.Text) then
            Filter.AddObject(Origin[I], TObject(Origin.Objects[I]));
          Combo.Items.Assign(Filter);
          Combo.SelStart := iSelIni;
          Combo.SelLength := Length(Combo.Text);
      finally
        Filter.Free;
      end;
    end
    else
      Combo.Items.Assign(DefaultItems);
  Combo.Items.EndUpdate;
end;
Danke + Gruss

Armin
Armin
aschne1
  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 04:12 Uhr.
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-2025 by Thomas Breitkreuz