Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wieso markiert es kein Text? (https://www.delphipraxis.net/79852-wieso-markiert-es-kein-text.html)

Newcomer411 29. Okt 2006 23:01


wieso markiert es kein Text?
 
hallo,
habe folgendes Problem:
will über eine Editfeld text eingeben und in einer listbox markiert anzeigen lassen (wenn vorhanden)
(so in der wie eine schnellsuche in einer listbox nach einem bestimmten eintrag)

allerdings sucht er bei mir nur zahlen...
ist mit dem code was falsch?

Delphi-Quellcode:
 entries.ItemIndex := entries.items.IndexOf(Edit_schnellzugriff.Text);

3_of_8 29. Okt 2006 23:10

Re: wieso markiert es kein Text?
 
Müsste so passen. Lass dir die Werte mal im Evaluator ausgeben.

Newcomer411 30. Okt 2006 18:19

Re: wieso markiert es kein Text?
 
Zitat:

Zitat von 3_of_8
Müsste so passen. Lass dir die Werte mal im Evaluator ausgeben.

wo und wie ausgeben? was ist ein Evaluator?

Newcomer411 30. Okt 2006 20:08

Re: wieso markiert es kein Text?
 
okay. hab jetzt was entdeckt...

wenn ich ins Edit-feld das GANZE Wort z. B. "Delphi 6" eintippe, dann markiert das Programm die Auswahl in der Listbox.

Ich will aber das er das Wort auch markiert, wenn ich nur das "D" eintippe... das Programm soll Buchstabe für Buchstabe suchen und markieren.


hoffe da gibt es eine lösung für.

mkinzler 30. Okt 2006 20:27

Re: wieso markiert es kein Text?
 
Dann wirst du mit .IndexOf nicht weiterkommen, weil hierbei der gesamte String gliech sein muß. Dir wird nichts anderes übrigbleiben als jeden Eintrag nach dem Teilstrimg zu durchsuchen.

Cöster 30. Okt 2006 20:42

Re: wieso markiert es kein Text?
 
Sind die Einträge in der ListBox denn sortiert?
Dann müsstest du im OnChange des Edits erst nach dem ersten Begriff suchen, der den gleichen Anfangsbuchstabenn hat, wenn dann der zweite Buchstabe eingegeben wird, musst du nur ab dieser Stelle weitersuchen. Das geht aber nur, wenn jeweils der letzte Buchstabe im Edit geändert wurde. Ansonsten müsstest du wohl nochmal alles durchsuchen.

Newcomer411 30. Okt 2006 21:46

Re: wieso markiert es kein Text?
 
steh ein bisschen auf dem schlauch...
ja die einträge in der listbox sind sortiert.

wie genau? check das grad überhaupt nicht.

anse 30. Okt 2006 22:44

Re: wieso markiert es kein Text?
 
Jo, du mußt alle Entries einzeln vergleichen, in etwa so:

Delphi-Quellcode:
entries.items.ItemIndex := -1;

for i:=0 to entries.items.count-1 do
begin
  // Länge prüfen
  if Length(entries.items[i]) < Length(Edit_schnellzugriff.Text)) then
    continue;
  // Textanfang vergleichen (todo: klappt das auch case-insensitive?)
  if Edit_schnellzugriff.Text = Copy( entries.items[i], 1, Length(Edit_schnellzugriff.Text) ) then
  begin
    entries.items.ItemIndex := i;
    break; // Nicht sinnlos weitersuchen
  end;
end;

marabu 31. Okt 2006 07:24

Re: wieso markiert es kein Text?
 
Hallo,

eine Präfixsuche geht auch so:

Delphi-Quellcode:
procedure TDemoForm.EditChange(Sender: TObject);
begin
  with Sender as TEdit do
    ListBox.ItemIndex := ListBox.Perform(LB_FINDSTRING, -1, Integer(PChar(Text)));
end;
Grüße vom marabu

Newcomer411 31. Okt 2006 12:49

Re: wieso markiert es kein Text?
 
danke @all!

@ marabu, genau das habe ich gesucht, danke!


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