AGB  ·  Datenschutz  ·  Impressum  







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

ListBox Suche ergänzen?

Ein Thema von AlexII · begonnen am 17. Apr 2010 · letzter Beitrag vom 18. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

ListBox Suche ergänzen?

  Alt 17. Apr 2010, 21:55
Hallo,

ich suche wie folgt eine ListBox durch. Bei mir wird allerdings nur ein Item selektiert und immer das letzte. Möchte es aber so habe, dass alle Item selektiert werden wo eine Suche erfolgreich war.

Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var Stationscount, i, Kandidat: Integer;
begin
Stationscount:=ListBox1.Items.Count;

for i:=0 to Stationscount-1 do
   begin
     Kandidat:=Pos(SearchEdit.Text, AnsiLowerCase(ListBox1.Items[i]));
     if Kandidat <> 0 then
     begin
     ListBox1.ItemIndex:=i;
     end;
   end;
end;
Die ListBox bei diesem Code auf MultiSelect:=True setzen hilft nicht. Und anstatt ListBox1.ItemIndex:=i; -> ListBox1.ItemSelect:=i; nehmen kann man nicht, so nen Befehl gibt es nicht.

Wer kann mir das weiter helfen? Danke!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ListBox Suche ergänzen?

  Alt 17. Apr 2010, 22:40
Hallo,

so geht's:

Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ListBox1.Count - 1 do
  begin
    ListBox1.Selected[i] := Pos(SearchEdit.Text, AnsiLowerCase(ListBox1.Items[i])) > 0;
  end;
end;
Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 10:35
Oder
Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var
  i: Integer;
begin
  ListBox1.Items.BeginUpdate;
  try
    for i := 0 to ListBox1.Count - 1 do
      ListBox1.Selected[i] := AnsiContainsText(ListBox1.Items[i],SearchEdit.Text);
  finally
    ListBox1.Items.EndUpdate;
  end;
end;
Das sollte dann wirklich case-insensitiv sein
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#4

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 12:36
Was heißt "case-insensitiv"?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 12:39
Ohne Berücksichtigung von Groß- und Kleinschreibung.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#6

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 13:07
Hab das jetzt so:

Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var i, u: Integer;
begin

for u:=0 to ListBox1.Items.Count-1 do //hier muss ich die Liste unselectiert machen
begin
ListBox1.Selected[u]:=False;
end;

for i:=0 to ListBox1.Items.Count-1 do
begin
  ListBox1.MultiSelect:=True;
  if Pos(SearchEdit.Text, AnsiLowerCase(ListBox1.Items[i])) <> 0 then ListBox1.Selected[i]:=True;
end;

SearchEdit.Hint:='';

end;

procedure TForm1.SearchEditMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
if ListBox1.SelCount>0 then
SearchEdit.Hint:=IntToStr(ListBox1.SelCount) + ' ' + _('hits') else SearchEdit.Hint:=_('Nothing found');
end;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 13:11
Das ist doch viel zu umständlich.
Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var
  i: Integer;
begin
  ListBox1.Multiselect := true;
  ListBox1.Items.BeginUpdate;
  try
    for i := 0 to ListBox1.Count - 1 do
      //Einträge werden dann selektiert, wenn der Suchstring enthalten ist, ansonsten deselektiert
      ListBox1.Selected[i] := AnsiContainsText(ListBox1.Items[i],SearchEdit.Text);
  finally
    ListBox1.Items.EndUpdate;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#8

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 13:12
"AnsiContainsText" ist bei mir undefiniert.

Geht das wenn ich "AnsiLowerCase" nehme?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 13:14
Dann musst Du aber auch beide Strings in Kleinschreibung wandeln. Oder eben StrUtils einbinden und doch AnsiContainsText verwenden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#10

Re: ListBox Suche ergänzen?

  Alt 18. Apr 2010, 13:19
Thx...
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:57 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