![]() |
ValueListEditor "Items" (durch-)suchen?
ok hab da mal eine Frage zum ValueListEditor.
Habe hier und auch schon auf google gesucht, aber nicht wirklich was gefunden, was mir weiterhilft. Also ich würde gern mithilfe eines Editfelds und einen Button den ValueListEditor nach Edit1.Text (Usereingabe) durchsuchen, also das der Benutzer den ValueListEditor nach egal was durchsuchen kann (also text). nur weis ich nicht wie ich das machen soll, hatte davor mit einer ListBox gearbeitet und kann da auch suchen, aber hier ist das für mich etwas schwieriger, weil ich hier auch nicht ValueListEditor1.Items eingeben kann. also wenn jemand weiß wie ich eine Suchfunktion einbauen kann dann bitte helfen ^^. ok falls das hilft, hier meine ListBox suchfunktion. (kommentiert)
Delphi-Quellcode:
thx im vorraus.
var i : Integer;
searchUp : String; ... //ListBox1 If Form2.ListBox1.Visible then begin // damit nur gesucht wird wenn sichtbar. If Edit2.Enabled then begin // Edit2 ist eine zusätzliche angabe (kann aktiviert werden und auch deaktiviert werden) Form2.listBox1.MultiSelect := True; //Multiselect, damit mehrere Items makiert werden können searchUp := AnsiUpperCase(Edit1.Text); //Edit1 = Nach was gesucht werden soll for i:=0 to StrToInt(Edit2.Text) do // Edit2 = Integer zb. 33 dann wird von zeile 0 nach 33 nach Edit1.Text gesucht. if Pos(searchUp, AnsiUpperCase(Form2.listBox1.Items[i])) > 0 then begin //wenn suchergebnis > 0 dann Form2.listBox1.Selected[i] := true; //Markieren, wenn gefunden application.ProcessMessages; end else Form2.listBox1.Selected[i] := false; //Damit nichts anderes markiert ist end; If not Edit2.Enabled then begin // Edit2 ist eine zusätzliche angabe (kann aktiviert werden und auch deaktiviert werden) Form2.listBox1.MultiSelect := True; //Multiselect, damit mehrere Items makiert werden können searchUp := AnsiUpperCase(Edit1.Text); //Edit1 = Nach was gesucht werden soll for i:=0 to Form2.listBox1.Items.Count-1 do //durchsuche alle Items von listbox. if Pos(searchUp, AnsiUpperCase(Form2.listBox1.Items[i])) > 0 then begin //wenn suchergebnis > 0 dann Form2.listBox1.Selected[i] := true; //Markieren, wenn gefunden application.ProcessMessages; end else Form2.listBox1.Selected[i] := false; //Damit nichts anderes markiert ist end; end; |
Re: ValueListEditor "Items" (durch-)suchen?
Die Eigenschaft die du dafür brauchst heißt Strings :) Die kannst du analog so behandeln wie bei einer Listbox items :)
|
Re: ValueListEditor "Items" (durch-)suchen?
Zitat:
also hier erstmal was ich bis jetzt draus gemacht hab.
Delphi-Quellcode:
habe das problem die ergebnisse "herauszusuchen".
procedure TForm1.Button3Click(Sender: TObject);
var search: String; i:Integer; begin If ValueListEditor1.Visible then begin search:=AnsiUpperCase(Edit3.Text); for i:=0 to ValueListEditor1.Strings.Count-1 do if AnsiPos(search, AnsiUpperCase(ValueLIstEditor1.Keys[i])) > 0 then begin // hier problem end; end; end; Wenn ich am schluss Edit4.Text:=i; eingebe wird im editfeld angezeigt wieviele zeilen den gesuchten wert enthalten. bzw. (wenn es nur 1mal gibt) dann wird angezeigt in welcher zeile. Aber ja ein bisschen logisch ich will nicht das es in einem editfeld angezeigt wird sondern, wäres es wirklich gut wenn die ergebnisse makiert werden oder noch besser das die ergebnisse im ValueListEditor1 angezeigt werden und der rest unsichtbar ist bzw. gelöscht wird oder so. mein versuch war:
Delphi-Quellcode:
das erzielte garkein ergebnis bzw. reaktion.
ValueListEditor1.Strings.Strings[i]
Delphi-Quellcode:
nicht sicha obs funktionieren würde, allerdings kommt hier auch ein error:
ValueListEditor1.Strings.Destroy;
ValueListEditor1.Strings.AddStrings(i); Inkompatible Typen: 'TStrings' und 'Integer'; bin ich auf dem richtigen weg, oda muss ich was anders machen, damit ich nicht die anzahl sondern den "ganzen text" rausbekommen krieg? |
Re: ValueListEditor "Items" (durch-)suchen?
sorry für doppelposting, pc hat gehangen.-_-
|
Re: ValueListEditor "Items" (durch-)suchen?
Wenn alles andere aus dem VLE gelöscht werden kann, so geht das ganz einfach:
Zuerst merkst du dir die gefundene Zeile. Die Variable i sagt dir welche das ist :):
Delphi-Quellcode:
Anschließend brauchen wir nur die liste zu löschen und den gemerkten Wert neu einfügen:
Merker = ValuelistEditor1.strings.string[i];
Delphi-Quellcode:
und schon steht nur noch das gefundene Wertepaar im Editor :)
ValuelistEditor1.strings.clear;
ValuelistEditor1.string.append(merker); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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