Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Suchfunktion <> Listbox ? (https://www.delphipraxis.net/52810-suchfunktion-listbox.html)

Vader 4. Sep 2005 19:05

Re: Suchfunktion <> Listbox ?
 
hallo marabu,

im leerproject funzt es mit ein paar eingaben, wenn ich aber in meinem prog was suche
da makiert er nichts !!!

mfg vader

marabu 4. Sep 2005 19:14

Re: Suchfunktion <> Listbox ?
 
Wie kann ich dir da weiter helfen?

marabu

Vader 4. Sep 2005 19:39

Re: Suchfunktion <> Listbox ?
 
hallo

hab die eine PN geschickt mit meinen project ich hoffe es ist angekommen !

mfg vader

marabu 4. Sep 2005 19:49

Re: Suchfunktion <> Listbox ?
 
Sagen wir mal so - du hast es probiert. Angekommen ist bei mir nichts.

marabu

Vader 4. Sep 2005 20:03

Re: Suchfunktion <> Listbox ?
 
hallo

jetzt muß es geklappt haben !


mfg vader

Sharky 4. Sep 2005 20:11

Re: Suchfunktion <> Listbox ?
 
Hai Vader,

noch eine kleine Idee für die Suche.
Wenn Du kein extra Feld für die Suche möchtest könntest Du auch mit einem Timer und einer extra Variablen arbeiten um in der Listbox zu suchen wenn diese den Focus besitzt.
Wenn also jemand ein "C" drückt wird zum ersten Eintrag gesprungen der mit "C" anfängt. Wenn er jetzt innerhalb einer bestimmten Zeitspanne (dafür der Timer) einen weiteren Buchstaben drückt wird dieser zu den vorhandenen hinzugefügt und es wird "weiter gesprungen"

marabu 4. Sep 2005 21:25

Re: Suchfunktion <> Listbox ?
 
Hi Vader,

deine ListBox ist unsortiert - die von mir verwendete Methode Find() funktioniert nur mit sortierten Strings. Das Vorgehen bei unsortierten Strings demonstriert Button2:

Delphi-Quellcode:
procedure MarkFirstLine(lb: TListBox; const prefix: string);
var
  i: integer;
  s: TStrings;
begin
  s := lb.Items;
  lb.ItemIndex := -1;
  for i := 0 to s.Count - 1 do
    if (AnsiUppercase(Copy(s[i], 1, Length(prefix))) = AnsiUppercase(prefix)) then
    begin
      lb.ItemIndex := i;
      if lb.MultiSelect then
        lb.Selected[i] := true;
      Exit;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  index: integer;
begin
  sl := TStringList.Create;
  sl.Sorted := ListBox1.Sorted;
  with ListBox1 do begin
    sl.Assign(Items);
    // funktioniert nur wenn sl.Sorted = true
    sl.Find(Edit1.Text, index);
    if (Edit1.Text <> '')
    and (index >= 0)
    and (index < sl.Count)
    and (AnsiUppercase(Copy(sl[index], 1, Length(Edit1.Text))) = AnsiUppercase(Edit1.Text))
      then ItemIndex := index
      else ItemIndex := -1;
  end;
  sl.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  MarkFirstLine(ListBox1, Edit1.Text);
end;
Grüße vom marabu

Vader 5. Sep 2005 13:16

Re: Suchfunktion <> Listbox ?
 
hallo,

herzlichendank es funzt !!!
mfg vader

Vader 6. Sep 2005 08:10

Re: Suchfunktion <> Listbox ?
 
hallo,

kann ich die suchfunktion auch auf eine neue form platzieren, so wie das
bei den meisten programmen ist, wo über den menüpunkt "bearbeiten-suchen "
ein neues fenster geöffnet wird und dort dann den suchbegriff eingibt ?
wie muß ich die beiden units oder forms verbinden ?


mfg vader

marabu 6. Sep 2005 09:51

Re: Suchfunktion <> Listbox ?
 
Hi vader,

klar kannst du.

Zitat:

Statt des Feldes PrefixEdit kannst du auch mit InputQuery() arbeiten.
Delphi-Quellcode:
var
  searchText: string;
begin
  searchText := '42'; // Initialisierung
  if InputQuery('Suchen nach', 'Suchtext', searchText) and (searchText <> '') then begin
    // dein Code für die Suche nach searchText
  end;
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr.
Seite 2 von 3     12 3      

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