AGB  ·  Datenschutz  ·  Impressum  







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

Listbox durchsuchen

Ein Thema von Shubit · begonnen am 13. Nov 2009 · letzter Beitrag vom 6. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#1

Listbox durchsuchen

  Alt 13. Nov 2009, 09:30
Ich würde gerne eine Listbox durchsuchen, allerdings ohne Items zu löschen oder ein extra Editfeld.
Der Nutzer soll einfach sein Suchwort eintippen und die Listbox springt dann automatisch zum ersten Item dessen String das Suchwort enthält.

Das funktioniert eigentlich auch ganz gut indem man einfach das Suchwort zwischenspeichert und bei jedem OnKeyPress den neuen char hinten anhängt und dann den ItemIndex auf das erste Item setzt dessen String das Suchwort enthält.
Allerdings funkt mir dann immer so ein doofer Automatismus der Listbox dazwischen: Wenn ein Itemstring mit dem gedrückten char beginnt setzt er den ItemIndex automatisch dahin und zwar total unabhängig davon was ich in OnKeyPress, OnKeyDown oder OnKeyUp mache. Kann man das irgendwie abschalten?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Listbox durchsuchen

  Alt 13. Nov 2009, 11:49
Ich bin nicht sicher, aber bringt es etwas, wenn Du es mit BeginUpdate und EndUpdate versuchst? Pseudocode:
Delphi-Quellcode:
procedure TDeinForm.ListBoxKeyPress(Sender: TObject; var Key: Char);
begin
  ListBox.Items.BeginUpdate;
  try
    StringVar := StringVar + Key;
    ...
  finally
    ListBox.Items.EndUpdate;
  end;
end;
Wie gesagt, nur eine ungetestete Idee.
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
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Listbox durchsuchen

  Alt 13. Nov 2009, 11:51
Delphi-Quellcode:
procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin
  Key := #0;
end;
Thomas
  Mit Zitat antworten Zitat
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#4

Re: Listbox durchsuchen

  Alt 13. Nov 2009, 14:55
Ok, eigentlich hatte ich das schon durchprobiert, aber wohl nur bei KeyDown und KeyUp weil dort funktioniert es nicht, aber bei OnKeyPress geht es. Danke.
  Mit Zitat antworten Zitat
Nelphin

Registriert seit: 2. Feb 2009
Ort: Kaiserslautern
71 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Listbox durchsuchen

  Alt 4. Dez 2009, 06:36
Hallo,

ich habe ein ähnliches Problem, deshalb hänge ich es mal hier mit dran.
Ich lade eine datei in eine Listbox mit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
listbox1.Items.LoadFromFile('G:\Datei.datei');
except
showmessage('laden ging schief');
end;
jetzt muss ich jede zeile der listbox nach einem bestimmten schlüsselwort durchsuchen und wenn dieses vorhanden ist, soll die zeile leben bleiben, wenn nicht kann sie gelöscht werden...

ich habe das so versucht:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
Zeilenzahl:Integer;
i:integer;
kandidat:integer;
begin
Zeilenzahl:=listbox1.items.count;
for i := 0 to Zeilenzahl - 1 do
   begin
     kandidat:= ListBox1.Items.IndexOf('schlüsselwort');
     if kandidat <0 then
      Listbox1.items.delete(i);
   end;
end;
dabei kommt aber nichts vernünftiges raus - vermutlich weil ich in der zeile mit dem indexof es nicht hinbekomme, das er auch nur in der zeile i sucht...

wie ihr merkt kenne ich mich nicht wirklich aus und das ist meine erste tlistbox überhaupt...
über anfängerfreundliche Antworten (leicht verständlich) freue ich mich wie immer sehr!

Gruß
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Listbox durchsuchen

  Alt 4. Dez 2009, 06:40
IndexOf durchsucht auch die komplette Liste und findet auch nur komplette Zeilen. Du musst also Zeile für Zeile suchen, z.B. mit Pos()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

Re: Listbox durchsuchen

  Alt 4. Dez 2009, 06:42
Statt mit IndexOf, würde ich hier mit der Funktion Delphi-Referenz durchsuchenPos oder Delphi-Referenz durchsuchenPosEx arbeiten.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Listbox durchsuchen

  Alt 4. Dez 2009, 06:50
Und tu dir selbst den Gefallen und durchlaufe die ListBox nicht von vorne nach hinten, sondern von hinten nach vorne. Sonst ist die Exception schon vorprogrammiert
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Listbox durchsuchen

  Alt 4. Dez 2009, 06:52
Da er eigentlich nicht löschen will (
Zitat:
allerdings ohne Items zu löschen
) sollte das egal sein
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Listbox durchsuchen

  Alt 4. Dez 2009, 06:53
Zitat von mkinzler:
Da er eigentlich nicht löschen will (
Zitat:
allerdings ohne Items zu löschen
) sollte das egal sein
Trink noch nen Kaffee und lies dir den Thread danach nochmal durch
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  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 16:41 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