![]() |
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Soeben raus...
|
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Delphi-Quellcode:
Das kann schonmal gar nicht funktionieren, da [i]Items einen String und keinen Integer erwartet. ;) Das darüber mit dem Vergleich auf -1 ebenfalls (wenn, dann müsste es if ListBoxText.ItemIndex > -1 then heißen), das geht so nicht.
if StrToInt(Edit2.Text) = ListBox1.Items[i] THEN ListBox1.Items[i] := 0;
Ich würde es so in der Art schreiben, falls der Code dazu dient, alle Einträge zu ändern, die den gleichen Inhalt wie Edit2 haben:
Delphi-Quellcode:
Das macht nun folgendes, kA, ob du das so möchtest, verstehe es nicht ganz :lol:
for i := 0 to ListBoxText.Items.Count - 1 do
if ListBox1.Items[i] = Edit2.text then ListBoxText.Items[i] := Edit10Aendern.Text In der ListBox werden die Einträge gesucht, die dem Inhalt von Edit2 entsprechen und diese werden ersetzt durch den Inhalt von Edit10Ändern. Falls du das nicht so haben wolltest, schreibe doch bitte nochmals, was genau du erreichen willst. :zwinker: |
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Habs bekommen und auch sofort deinen Denkfehler gefunden. Du speicherst in der ListBox nicht nur einen bestimmten String, den du suchen möchtest, sondern setzt jedes Item aus diversen Strings zusammen. Das hättest ruhig mal etwas früher sagen können. :zwinker:
Denn damit geht das dann nicht mehr so einfach mit IndexOf, da so jedes Item als ganzes überprüft wird. Du mußt daher doch wieder mit einer Schleife durch die ListBox marschieren und prüfen, ob dein Suchstring in dem Item enthalten ist. Das machst du am einfachsten über Pos. Das arbeitet ähnlich wie IndexOf und gibt dir die Position deines Suchstrings im zu durchsuchenden String zurück. Wird nichts gefunden, erhältst du 0 als Ergebnis. Deine Suchroutine könnte also so aussehen:
Delphi-Quellcode:
//Edit: Tag korrigiert
procedure TForm1.Button9SucheClick(Sender: TObject);
var i, subStrPos : Integer; begin i := 0; subStrPos := 0; while (i < ListBoxText.Items.Count) and (subStrPos = 0) do begin subStrPos := Pos(Edit9Suche.Text,ListBoxText.Items[i]); if suBstrPos > 0 then ListBoxText.ItemIndex := i; inc(i); end; end; |
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Was soll ich sagen,sprachlos!!!! Das 'Könnte' heißt es ist so umzusetzen und dann funktioniert der Button. Probiere es. D A N K E
|
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Zitat:
Wenn du dir in dieser Methode am Schluß noch den aktuellen Index speicherst, könntest du sogar so recht einfach ein "Weiter suchen" realisieren ;) |
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Bei mir funktioniert es nicht... seuft. Muss noch etwas wichtiges beachtet werden? :cry:
|
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Moment, ich hab es bisher nur in meinem Code getestet. Ich setz das mal in dein Projekt ein und debugge ;)
|
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Fehler gefunden und enttarnt :mrgreen:
Meine Methode funktioniert. Problem ist nur, daß du für deine ListBox MultiSelect aktiviert hast. Damit scheint dann das Setzen des ItemIndex nicht mehr zu funktionieren. Ist mir neu, scheint aber so zu sein. (Genau für solche Kleinigkeiten wollte ich übrigens das gesamte Projekt, das erkennt man aus Quelltext nämlich eher schlecht :lol:) Stattdessen mußt du dann um ein Item zu markieren
Delphi-Quellcode:
schreiben.
ListBoxText.Selected[i] := true;
Allerdings werden dabei bereits vorhandene Markierungen nicht gelöscht. Daher solltest du davor noch
Delphi-Quellcode:
ausführen.
ListBoxText.ClearSelection;
Brauchst du MultiSelect überhaupt? Falls nicht, könntest du auch meinen vorherigen Code benutzen. Generell würde ich dir aber raten, dir in Bezug auf dein Programm mal die ListView (mit ViewStyle vsReport) anzuschauen. Das könnte evtl besser für deine Bedürfnisse sein. |
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
ich rolle mich gerade vor Freude auf den Boden hin und her.... es klappt. Ich nehme lieber deine Version. Und ich weiß überhaupt nicht, wie ich dir danken kann. Wo liegt eigentlich Künzelsau? Weit weg? :thumb: Einfach Toll!!!!!!!!!!
|
Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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