Einzelnen Beitrag anzeigen

ratloser

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

vst - ein leidiges Problem mit der Suche

  Alt 8. Jan 2006, 22:20
Hallo an Alle!

Bräuchte DRINGEND Eure Hilfe.

Die Suche im VST nervt mich jetzt schon drei Tage und ich schaffe es einfach nicht.

Habs mit der IncrementalSearch versucht - war nichts - hab es einfach nicht zum Laufen gebracht.

Ausgangspunkt ist:

Ich hab ein VST mit 2 Columns

Gesucht werden soll nur in der ersten Column.

Die erste Column hat Parent - Child - Grandchild
es sind jeweils unterschiedliche Felder aus unterschiedlichen Tabellen.

Soweit funzt das VST super - bis eben auf die Suche

Es soll möglich sein nach allen drei Feldern als Parent - Child und Grandchild zu suchen, kann auch über drei verschiedene Editfelder realisiert werden.

Hab jetzt zumindest mal einen Ansatz

Delphi-Quellcode:
procedure TKalk.naechsteneintragsuchenClick(Sender: TObject);
var
  f ,run : PVirtualNode;
begin
  if assigned(vst.FocusedNode) then begin
    run := vst.FocusedNode;
    run := run.NextSibling;
    while Assigned(run) do begin
      f := vst.IterateSubTree(run,ausfuehren,nil,[],true,false);
      if assigned(f) then begin
        vst.FocusedNode := f;
        vst.Selected[f] := true;
        break;
      end;
      run := run.NextSibling;
    end;
  end;
end;
Delphi-Quellcode:
procedure Tkalk.ausfuehren(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Data: Pointer; var Abort: Boolean);
begin
  Abort := vst.Text[Node,0] = objauswsucherechnungsnummer.Text;
end;
Dies funktioniert aber nur wenn ich den Suchbegriff in ein Editfeld eingebe, dann einen Node markiere und dann die Suche durch Buttonklick starte. --> ich muss also vor jedem Suchbegriff einen Node markieren. Sehr nervig - vor allem - wie sag ich es meinen Kunden?

Mir ist schon klar, dass ein Focus auf einem Node beim obigen Code gesetzt sein muss - aber wie kann man per Code einen Focus auf den ersten Node setzen.

Das nächste Problem wäre noch, dass das Grandchild ein zusammengesetzter String ist, kann man diesen mit LeftStr in der Suche abkürzen.

Danke für Eure Hilfe

Ratloser (kann man wohl nicht mehr sein)
Vielen Dank!

Konrad
  Mit Zitat antworten Zitat