Eintrag in Listbox markieren
-
Hallo
Kurze Frage und zwar, wie, mit welchem Code wird ein Eintrag in der Listbox markiert? In meinem Fall, der gefundene Eintrag.if (Suchergebnis(Sender, Edit1->Text)==true) { ListBox1->ItemIndex=Edit1->Text;//ändern bitte... }
-
Hallo
Das gehört ins Builder-Subforum.
if (Suchergebnis(Sender, Edit1->Text)==true) { ListBox1->ItemIndex = 1; // Zweites Item wird ausgewählt. Hier muß also das Ergebnis der Suche übergeben // Die Funktion Suchergebnis sollte also nicht nur true/false zurückgeben, sondern den Index wenn gefunden }
Das ganze läßt sich natürlich auch wesentlich vereinfachen
int index = ListBox1->Items->IndexOf(Edit1->Text); if (index >= 0) { ListBox1->ItemIndex = index; }
bis bald
akari
-
ja was soll ich statt dem 1er hinschreiben..
suchergebnis code:
boolean __fastcall TForm1::Suchergebnis(TObject *Sender, String Eingabe) { int i; boolean gefunden=false; for (i=0;i<ListBox1->Items->Count;i++) { if (ListBox1->Items->Strings[i]==Eingabe) { gefunden=true; } } return(gefunden); }
-
Hallo
Deine Suchfunktion hat den entscheidenden Nachteil das sie nur gefunden oder nicht gefunden zurückgibt, nicht aber an welcher Stelle gefunden wurde. Du must also zumindestens so umformen
int __fastcall TForm1::Suchergebnis(TObject *Sender, String Eingabe) { for (i=0;i<ListBox1->Items->Count;i++) { if (ListBox1->Items->Strings[i]==Eingabe) { return i; } } return -1; }
Jetzt kannst du diese Funktion so benutzen
int index = Suchergebnis(ListBox1, Edit1->Text); if (index >= 0) { ListBox1->ItemIndex = index; }
Wie aber schon gesagt brauchst du keine eigene Suchfunktion, dafür gibts IndexOf.
bis bald
akari
-
if (Auswahl==4) { if (Suchergebnis(Sender, Edit1->Text)==true) { int index = ListBox1->Items->IndexOf(Edit1->Text); if (index >= 0) ListBox1->ItemIndex = index; } else { Application->MessageBox("Es wurde kein Eintrag gefunden!","Achtung!",MB_OK); } Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; }
So tut sich aber nix, also so wird nix markiert
-
Hallo
Vergiß den ganzen Kram, alles was du brauchst ist dieser Code
int index = ListBox1->Items->IndexOf(Edit1->Text); if (index >= 0) { ListBox1->ItemIndex = index; } else { Application->MessageBox("Es wurde kein Eintrag gefunden!","Achtung!",MB_OK); }
Wenn dieser Code die MessageBox anzeigt, ist der Eintrag wirklich nicht in der List. Wenn der Eintrag vorhanden ist wird er auch markiert.
bis bald
akari
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
akari schrieb:
int index = ListBox1->Items->IndexOf(Edit1->Text);
if (index >= 0)ok danke
aber was genau bewirkt jetzt IndexOf ?
und wieso index größer gleich 0?
-
Sieh dir die Hilfe zu TListItem::IndexOf an, das beantwortet beide Fragen.
-
ihr könnts es aber besser erklären
-
akari schrieb:
Hallo
Vergiß den ganzen Kram, alles was du brauchst ist dieser Code
int index = ListBox1->Items->IndexOf(Edit1->Text); if (index >= 0) { ListBox1->ItemIndex = index; } else { Application->MessageBox("Es wurde kein Eintrag gefunden!","Achtung!",MB_OK); }
Wenn dieser Code die MessageBox anzeigt, ist der Eintrag wirklich nicht in der List. Wenn der Eintrag vorhanden ist wird er auch markiert.
bis bald
akariEr wird nicht markiert habs genauso wie du.
(sry dass ich mich erst jetzt meld)mein prog.:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int Auswahl=0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Ende1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { Action=caFree; } //--------------------------------------------------------------------------- void __fastcall TForm1::AllesLschen1Click(TObject *Sender) { if (Application->MessageBox("Wollen Sie wirklich alles löschen?","Warnung!",MB_YESNO|MB_ICONWARNING)==IDYES) { ListBox1->Clear(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Sortieren1Click(TObject *Sender) { if (ListBox1->Sorted==true) { ListBox1->Sorted=false; Sortieren1->Checked=false; } else { ListBox1->Sorted=true; Sortieren1->Checked=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Eintraglschen1Click(TObject *Sender) { Application->MessageBox("Wählen Sie einen Eintrag und drücken Sie ENTF!","Warnung!",MB_OK); } //--------------------------------------------------------------------------- void __fastcall TForm1::ListBox1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { int marke; if (Key==46) { marke=ListBox1->ItemIndex; ListBox1->Items->Delete(marke); Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; } if (Key==45) { Panel1->Visible=true; Label1->Caption="Einzufügender Eintrag"; Edit1->SetFocus(); Auswahl=2; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Eintraganhngen1Click(TObject *Sender) { Panel1->Visible=true; Edit1->Text=""; Edit1->SetFocus(); Auswahl=1; } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { int index = ListBox1->Items->IndexOf(Edit1->Text); if (Key==13) { if (Edit1->Text>"") { ListBox1->Sorted=false; Sortieren1->Checked=false; if (Auswahl==1) { if (Suchergebnis(Sender, Edit1->Text)==true) { if (Application->MessageBox("Es wurde bereits so ein Eintrag gefunden! Trotzdem anhängen???","Warnung!",MB_YESNO)==IDYES) { ListBox1->Items->Add(Edit1->Text); } } else { ListBox1->Items->Add(Edit1->Text); } Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; } if (Auswahl==2) { if (Suchergebnis(Sender, Edit1->Text)==true) { if (Application->MessageBox("Es wurde bereits so ein Eintrag gefunden! Trotzdem einfügen???","Warnung!",MB_YESNO)==IDYES) { ListBox1->Items->Insert(ListBox1->ItemIndex,Edit1->Text); } } else { ListBox1->Items->Insert(ListBox1->ItemIndex,Edit1->Text); } Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; } if (Auswahl==4) { if (index >= 0) { ListBox1->ItemIndex=index; } else { Application->MessageBox("Es wurde kein Eintrag gefunden!","Achtung!",MB_OK); } Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; } if (Auswahl==3) { ListBox1->Items->Strings[ListBox1->ItemIndex]=Edit1->Text; } Edit1->Text=""; } Panel1->Visible=false; Auswahl=0; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Listespeichern1Click(TObject *Sender) { if (SaveDialog1->Execute()==true) { ListBox1->Items->SaveToFile(SaveDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Listeladen1Click(TObject *Sender) { if(OpenDialog1->Execute()==true) { ListBox1->Items->LoadFromFile(OpenDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Eintrageinfgen1Click(TObject *Sender) { Application->MessageBox("Wählen Sie die Stelle und drücken Sie die Einfügetaste!","Warnung!",MB_OK); } //--------------------------------------------------------------------------- void __fastcall TForm1::Eintrageditieren1Click(TObject *Sender) { Auswahl=3; Application->MessageBox("Machen Sie einen Doppelklick auf den Eintrag!","Achtung!",MB_OK); } //--------------------------------------------------------------------------- void __fastcall TForm1::ListBox1DblClick(TObject *Sender) { Panel1->Visible=true; Label1->Caption="Der editierende Eintrag"; Edit1->Text=ListBox1->Items->Strings[ListBox1->ItemIndex]; Auswahl=3; } //--------------------------------------------------------------------------- boolean __fastcall TForm1::Suchergebnis(TObject *Sender, String Eingabe) { int i; boolean gefunden=false; for (i=0;i<ListBox1->Items->Count;i++) { if (ListBox1->Items->Strings[i]==Eingabe) { return i; } } return -1; } //--------------------------------------------------------------------------- void __fastcall TForm1::Ein1Click(TObject *Sender) { Application->MessageBox("Geben Sie den Namen des Eintrags ein, der gesucht werden soll!!","Achtung!",MB_OK); Panel1->Visible=true; Label1->Caption="Zu suchender Eintrag"; Edit1->SetFocus(); Auswahl=4; } //---------------------------------------------------------------------------
das wichtigste:
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { int index = ListBox1->Items->IndexOf(Edit1->Text); if (Key==13) { if (Edit1->Text>"") { if (Auswahl==4) { if (index >= 0) { ListBox1->ItemIndex=index; } else { Application->MessageBox("Es wurde kein Eintrag gefunden!","Achtung!",MB_OK); } Label2->Caption = "Es befinden sich " + IntToStr(ListBox1->Items->Count) + " Einträge in der Listbox"; }
-
LoSt schrieb:
Er wird nicht markiert habs genauso wie du.
Was ist mit HideSelection?