AGB  ·  Datenschutz  ·  Impressum  







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

Combobox mit suche

Ein Thema von Tyrael Y. · begonnen am 25. Feb 2008 · letzter Beitrag vom 26. Feb 2008
Antwort Antwort
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#1

Combobox mit suche

  Alt 25. Feb 2008, 14:54
Hallo zusammen,

ich möchte gerne im Textfeld einer Combobox etwas eintippen und möchte erreichen,
daß die Liste der Einträge, die in der "Listbox" angezeigt werden, immer kleiner wird.

Delphi-Quellcode:
  procedure SelectByText(AComboBox: TComboBox);
  var i: Integer;
  begin
    for i := 0 to AComboBox.Items.Count - 1 do
    begin
      if Pos(AComboBox.SelText, AComboBox.Items[i]) > 0 then
      begin
        //hier müsste ich jetzt sagen, daß nur diese in der Liste angezeigt werden
      end;
    end;
  end;

Alle Einträge, die diesen eingegebenen Teilstring beinhalten sollen noch in der Auswahl sichtbar sein.
Gibt es da vielleicht eine Message für die Listbox über die ich nur passenden Einträge in der Listbox anzeigen kann?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Combobox mit suche

  Alt 26. Feb 2008, 08:11
Eine Lösung dafür wäre wohl, ich leite von TComboBox ab und implementiere eine zweite Referenzliste. Diese zweite Referenziste hölt die Daten in "Rohform".
Tippt der Benutzer etwas in den Editbereich, entferne ich alle Eintrgäge aus der Combobox und suche alle ähnlichen Einträge aus der Referenzliste. Diese weise ich dann der Combobox zu.

Das wäre eine Möglichkeit.

Noch jemand eine andere Idee?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Combobox mit suche

  Alt 26. Feb 2008, 08:29
Moin, Moin,
hatte spontan die gleiche Idee, als ich den ersten Beitrag gelesen habe. Eine andere Möglichkeit sehe ich nach kurzem Überlegen nicht.

// Kann es Probleme mit AutoComplete und AutoDropDown geben? Gib doch bitte mal 'ne Info, wenn du es gelöst hast.
Ralph
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Combobox mit suche

  Alt 26. Feb 2008, 08:42
AutoComplete oder AutoDropDown sollte kein Problem sein.
Das einzig aufwendige ist jetzt, daß ich alle möglichen Methdoden überschreiben muss.
Diese dürfen nicht mehr neue Einträge in die Originalliste einfügen, löschen, ersetzen, tauschen usw. sondern nur noch auf meiner Liste.

Ich überlege gerade, ob ich es richtig sauber machen sollte und all dies beachten sollte oder es mir super einfach mache und diese Funktionalitäten gar nicht erst unterstütze, da es für meine Controls nicht unbedingt notwendig wäre, im Moment jedenfalls.


Ich mach erst mal paar andere Aufgaben und denke darüber später nochmal nach.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Combobox mit suche

  Alt 26. Feb 2008, 09:05
Schau Dir doch mal TComboBoxIEStyle an
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Combobox mit suche

  Alt 26. Feb 2008, 10:26
Direkt konnte ich mit dieser Komponente nix anfangen.

Ich habe es leicht modifiziert und jetzt reagiert ist so, wie ich es wollte.
Bisschen umständlich ist die Handhabung, da man die zweite Liste von Hand füllen muss. Für jedes Item, das man einfügt muss man beachten, das der angezeigte string auch in die zweite Liste eingefügt werden muss. Dies findet nicht automatsich statt.

Hier mal die modifizierte Stelle, das auskommentierte ist der Originalcode

Delphi-Quellcode:
    //if InputLength > 0 then
    //begin
      // Add the items that should be in the dropdownlist to a temporary
      // stringlist, this way you know whether there actually are items
      // to appear in the dropdownlist before manipulating the combobox.
      TempList := TStringList.Create;
      try
        // FDropDownListCandidates is the list that contains all potential items
        // for the dropdownlist.
        for i := 0 to FDropDownListCandidates.Count - 1 do
        begin
          // Add the FDropDownListCandidates to the TempList that are
          // same as strInput:

          //if UpperCase(Copy(FDropDownListCandidates[i], 1, InputLength)) =
          // UpperCase(strInput) then
          if strInput = #0 then
          begin
            TempList.Add(FDropDownListCandidates[i]);
          end
          else
          if Pos(UpperCase(Trim(strInput)), UpperCase(FDropDownListCandidates[i])) > 0 then
          begin
            TempList.Add(FDropDownListCandidates[i]);
          end;
        end;
        if TempList.Count > 0 then
        begin
          // There are items to be displayed in the dropdownlist.
          // First add dummy items before making DroppedDown = True
          // because the DropDownCount can not be increased once it is
          // dropped down:
          for i := 1 to DropDownCount do
          begin
            Items.Add('');
          end;
          DroppedDown := True;
          // Remove dummy items:
          Items.Clear;
          // Copy TempList to Items:
          Items := TempList;
        end
        else // Templist.Count = 0, don't show the DropDownList:
          DroppedDown := False;
      finally
        TempList.Free;
      end;
    //end;
    //else // Length(strInput) = 0, no input, don't show the DropDownList:
    // DroppedDown := False;
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  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 05:37 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