AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Suche im VST - Suche nächster - Suche vorheriger
Thema durchsuchen
Ansicht
Themen-Optionen

Suche im VST - Suche nächster - Suche vorheriger

Offene Frage von "ratloser"
Ein Thema von ratloser · begonnen am 17. Jan 2006 · letzter Beitrag vom 26. Feb 2008
 
ratloser

Registriert seit: 4. Mai 2005
Ort: Linz
36 Beiträge
 
#1

Suche im VST - Suche nächster - Suche vorheriger

  Alt 17. Jan 2006, 22:04
Hallo an Alle!

Hab mal wieder ein kleines Problem

Hab im VirtualStringTree eine Suche eingebaut.
Es gibt dabei vier verschiedene Felder zur Eingabe von Suchbegriffen.

Diese vier Suchbegriffe werden über einen ONExit-Event in die Variable suchobjekttext eingelesen.

Button7 startet die Suche - VST findet dabei den ersten Suchbegriff.

Delphi-Quellcode:
procedure TKalk.Button7Click(Sender: TObject);
var
  f ,run : PVirtualNode;
  suchobjekt: String;
begin
   suchzaehler := 0;
   suchobjekt := suchobjekttext;
   vst.FocusedNode := vst.getfirst;
   vst.FullCollapse;
   vst.SetFocus;
  if assigned(vst.FocusedNode) then begin
    run := vst.FocusedNode;
    while Assigned(run) do begin
      f := vst.IterateSubTree(run,ausfuehren,Pointer(suchobjekt),[],true,false);
      if assigned(f) then begin
        vst.FocusedNode := f;
        vst.Selected[f] := true;
        break;
      end;
      run := run.NextSibling;
    end;
  end;
end;
Nachfolgender Code soll den vorherigen Eintrag suchen

Delphi-Quellcode:
procedure TKalk.vorherigeneintragsuchenClick(Sender: TObject);
var
  f ,run : PVirtualNode;
  suchobjekt: String;
  laufenderzaehler: integer;
begin
   if suchzaehler > 0 then suchzaehler := suchzaehler - 1;
   laufenderzaehler:= suchzaehler;
   suchobjekt := suchobjekttext;
   vst.FocusedNode := vst.getfirst;
   vst.SetFocus;
  if assigned(vst.FocusedNode) then begin
    run := vst.FocusedNode;
    while Assigned(run) do begin
      f := vst.IterateSubTree(run,ausfuehren,Pointer(suchobjekt),[],true,false);
      if assigned(f) then begin
        if laufenderzaehler = suchzaehler then
        begin
           vst.FocusedNode := f;
           vst.Selected[f] := true;
           break;
        end
        else
        laufenderzaehler := laufenderzaehler + 1;
      end;
      run := run.NextSibling;
    end;
  end;
end;
Nachfolgender Code soll den nächsten Eintrag finden:

Delphi-Quellcode:
procedure TKalk.naechsteneintragsuchenClick(Sender: TObject);
var
  f ,run : PVirtualNode;
  suchobjekt: String;
  laufenderzaehler: integer;
begin
   suchzaehler := suchzaehler + 1;
   laufenderzaehler:= 0;
   suchobjekt := suchobjekttext;
   vst.FocusedNode := vst.getfirst;
   vst.SetFocus;
  if assigned(vst.FocusedNode) then begin
    run := vst.FocusedNode;
    while Assigned(run) do begin
      f := vst.IterateSubTree(run,ausfuehren,Pointer(suchobjekt),[],true,false);
      if assigned(f) then begin
        if laufenderzaehler = suchzaehler then
        begin
           vst.FocusedNode := f;
           vst.Selected[f] := true;
           break;
        end
        else
        laufenderzaehler := laufenderzaehler + 1;
      end;
      run := run.NextSibling;
    end;
  end;
end;
Nun zu meinem Problem:

Die Suche funktioniert einwandfrei, die Suche nach dem nächsten oder vorherigen Eintrag funktioniert eigentlich auch - solange ich nicht den letzten Sucheintrag erreiche. Wenn ich den letzten Sucheintrag erreiche und dann nochmals auf NÄCHSTEN FINDEN klicke, dann weiss ich nicht, wie ich die Suche stoppen soll - eigentlich sollte er anzeigen - LETZTEN EINTRAG GEFUNDEN.

Macht er aber nicht, und wenn ich dann auf VORHERIGEN SUCHEN klicke, dann springt er völlig unmotiviert zu irgenwelchem Eintrag.

Hat jemand eine Idee.

LG Ratloser
Vielen Dank!

Konrad
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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