Delphi-PRAXiS
Seite 4 von 7   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   In einer ListBox einen Eintrag suchen bzw. Eintrag ändern (https://www.delphipraxis.net/63563-einer-listbox-einen-eintrag-suchen-bzw-eintrag-aendern.html)

jeany06 20. Feb 2006 20:25

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Soeben raus...

Matze 20. Feb 2006 20:35

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Delphi-Quellcode:
if StrToInt(Edit2.Text) = ListBox1.Items[i] THEN ListBox1.Items[i] := 0;
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.

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:
for i := 0 to ListBoxText.Items.Count - 1 do
  if ListBox1.Items[i] = Edit2.text then
    ListBoxText.Items[i] := Edit10Aendern.Text
Das macht nun folgendes, kA, ob du das so möchtest, verstehe es nicht ganz :lol:
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:

leddl 20. Feb 2006 20:36

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:
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;
//Edit: Tag korrigiert

jeany06 20. Feb 2006 20:45

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

leddl 20. Feb 2006 20:48

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Zitat:

Zitat von jeany06
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

Das "könnte" heißt einfach nur, daß das eben eine Möglichkeit wäre, es zu implementieren. ;)
Wenn du dir in dieser Methode am Schluß noch den aktuellen Index speicherst, könntest du sogar so recht einfach ein "Weiter suchen" realisieren ;)

jeany06 20. Feb 2006 20:53

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Bei mir funktioniert es nicht... seuft. Muss noch etwas wichtiges beachtet werden? :cry:

leddl 20. Feb 2006 20:54

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 ;)

leddl 20. Feb 2006 21:08

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:
ListBoxText.Selected[i] := true;
schreiben.
Allerdings werden dabei bereits vorhandene Markierungen nicht gelöscht. Daher solltest du davor noch
Delphi-Quellcode:
ListBoxText.ClearSelection;
ausführen.
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.

jeany06 20. Feb 2006 21:14

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!!!!!!!!!!

leddl 20. Feb 2006 21:17

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Zitat:

Zitat von jeany06
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.

Kein Problem, mir wurde hier auch schon oft geholfen, ist doch selbstverständlich.
Zitat:

Zitat von jeany06
Wo liegt eigentlich Künzelsau? Weit weg?

Kommt drauf an, von wo :lol: Schau einfach auf die DP-Karte, dann weißte wo. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.
Seite 4 von 7   « Erste     234 56     Letzte »    

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