Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hilfe mit einer ListBox und einem Edit programmieren (https://www.delphipraxis.net/61287-hilfe-mit-einer-listbox-und-einem-edit-programmieren.html)

Nils_13 19. Jan 2006 14:34


Hilfe mit einer ListBox und einem Edit programmieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich möchte eine Hilfe wie in Delphi programmieren (wie der Index). Ich habe bereits ein Edit und eine ListBox. Im OnChange habe ich folgenden Code:
Delphi-Quellcode:
procedure Thelpform.SearchEditChange(Sender: TObject);
begin
  Searchbox.ItemIndex := Searchbox.Items.IndexOf(SearchEdit.Text);
end;
1. funktioniert der Code nicht (ich weiß wirklich nicht warum)
2. mit der Select-Methode wird es wahrscheinlich nicht funktionieren, da ich ja im Edit feld, immer noch frei schreiben will.
3. Was könnte ich jetzt tun ? Wie könnte ich so etwas programmieren ? Ich will dazu aber keine Programme und Hilfe Dateien benutzen.

Was wäre noch dafür geiegnet ?

Falls euch meine Beschreibungen nicht reichen, hier ein Screenshot:

Nils_13 19. Jan 2006 17:43

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Ich regel das ganze jetzt mit der LMD-ListBox.
Aber dann habe ich immer noch ein Problem: Es wird nur etwas markiert, wenn ich das gesamte Wort eingegeben habe, wie kann ich das verhindern ?
Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
begin
  Searchbox.ItemIndex := Searchbox.Items.IndexOf(SearchEdit.Text);
end;
Sry, für doppelpost :duck:

arbu man 19. Jan 2006 17:52

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Ich würd die listbox mit einer Schleife durchlaufen und pos verwenden:
(so in etwa)
Delphi-Quellcode:
var i: integer;
begin
  for i:=0 to searchbox.items.count-1 do begin
     if pos(lowercase(searchedit.text),lowercase(searchbox.items[i]))<>0 then begin
       searchbox.ItemIndex:=i;
       break;
     end;
  end;
end;

Khabarakh 19. Jan 2006 18:45

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Zitat:

Zitat von arbu man
Ich würd die listbox mit einer Schleife durchlaufen und pos verwenden:
(so in etwa)
Delphi-Quellcode:
var i: integer;
begin
  for i:=0 to searchbox.items.count-1 do begin
     if pos(lowercase(searchedit.text),lowercase(searchbox.items[i]))<>0 then begin
       searchbox.ItemIndex:=i;
       break;
     end;
  end;
end;

Funktioniert so deine Delphi-Hilfe :gruebel: ?

@Nils: Benutze das letzte Item, bei dem CompareText größer -1 ist.

Nils_13 19. Jan 2006 18:49

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Danke Danke, jetzt läuft es :-D

Nachtrag: Aber wenn ich r eintippe springt das Programm dann zum w, das darf dann nicht sein, wie kann ich das beseitigen ?

A-M-X 19. Jan 2006 20:39

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
kanns sein dass es kein R gibt und er zum nächsten Buchstaben vom Alphabet in deiner Listbox springt?

Nils_13 20. Jan 2006 16:51

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Das ist mir klar, nur wie verhindere ich das ?

Cool der 1111 Beitrag.

Khabarakh 20. Jan 2006 17:10

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Welchen "Suchalgorithmus" benutzt du denn nun? Meiner sollte eigentlich funktionieren.

Nils_13 20. Jan 2006 19:09

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Ich benutze deinen.
Delphi-Quellcode:
for i:=0 to searchbox.items.count-1 do begin
     if pos(lowercase(searchedit.text),lowercase(searchbox.items[i]))<>0 then begin
       searchbox.ItemIndex:=i;
       break;
     end;
  end;

Mystic 20. Jan 2006 19:16

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Versuch mal = 1 statt <> 0

Khabarakh 20. Jan 2006 19:20

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
@Nils: Dann muss ich blind sein, denn für mich sieht das nach arbu mans Algorithmus (der sich wirklich nicht gerade wie die Delphi-Hilfe verhält) aus :stupid: .

@Mystic: Meiner ist der einzig richtige Algorithmus, basta :P :mrgreen: .

sniper_w 20. Jan 2006 20:34

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
@arbu mans: Dein Vorschlag wird funktionieren, aber es ist seeehr ineffizient. Ich würde hier einen BinarySearch-Verfahren bevorzügen. Ein "spartanisches" Beispiel gibt es auf meiner HP.

Khabarakh 20. Jan 2006 20:57

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Warum will mir denn niemand glauben :stupid: ? Pos ist in diesem Falle völlig nutzlos. Nehmen wir zum Bleistift an, in der Liste sind die Einträge "pa" und "pc" . Der Anwender gibt nun "pb" ein, Pos liefert 0. Meine Version würde zu "pa" springen. Ein anderer Fall wäre z.B. "paa".

sniper_w 20. Jan 2006 21:21

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
@ Khabarakh: :wall: Hast recht. Ich habe nur die Schleiffe gesehen. Davon war ich geblendet. :zwinker:

Chrissi91 21. Jan 2006 08:30

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt will ich meinen alten Code auch mal vorholen. Ist sehr simpel programmiert. Ich hoffe, du kannst damit etwas anfangen.

Da der Code etwas älter ist, weiß ich nicht, ob er tadellos funktioniert, aber eigentlich sollte er das. :zwinker:

sniper_w 21. Jan 2006 09:47

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
@ Chrissi91: Versuch mal etwa 10000 Einträge mit deinem Programm zu "verwalten". Ich schätze, es wird keinen Spass machen. :zwinker:

Chrissi91 21. Jan 2006 09:57

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Aha, und jetzt bitte auf deutsch. :lol:. Es ist ja kein Programm, es sortiert ja lediglich nach der Eingabe.

Mystic 21. Jan 2006 11:33

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Zitat:

Zitat von Khabarakh
@Nils: Dann muss ich blind sein, denn für mich sieht das nach arbu mans Algorithmus (der sich wirklich nicht gerade wie die Delphi-Hilfe verhält) aus :stupid: .

@Mystic: Meiner ist der einzig richtige Algorithmus, basta :P :mrgreen: .

Mit <> 0 werden auch Einträge gefunden, wo das Suchwort mittendrin vorkommt. IIRC schaut die Hilfe aber auch nur, ob das Suchwort am Anfang steht.

Die Muhkuh 21. Jan 2006 11:41

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Zitat:

Zitat von Chrissi91
Aha, und jetzt bitte auf deutsch. :lol:. Es ist ja kein Programm, es sortiert ja lediglich nach der Eingabe.

Er meint, wenn du tausende Einträge hast, wird das imho langsam und auch unübersichtlich ;)

Chrissi91 21. Jan 2006 13:23

Re: Hilfe mit einer ListBox und einem Edit programmieren
 
Man kann das ganze auch sortieren. sorted:=true . ^^

Dann geht das auch. Ist ja auch, wie schon geschrieben, mal ne kleine Übung gewesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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