Hallo,
ich habe eine DBTreeView, deren Datensatz sich durch eine Suchoperation ändert. Wie kann ich den nun aktuellen Datensatz zur Anzeige bringen?
Ich habe schon alles Mögliche probiert, leider ohne Erfolg.
Hier die Suchroutine:
Delphi-Quellcode:
procedure TTagsChildForm.FindDialogFind(Sender: TObject);
var
s1,s2:string;
begin
try
DSTags.DataSet.DisableControls;
DSDocTags.DataSet.DisableControls;
DSFolderTags.DataSet.DisableControls;
repeat
if (frDown in FindDialog.Options) then
DSTags.DataSet.Next
else
DSTags.DataSet.Prior;
if frMatchCase in FindDialog.Options then
begin
// Vergleich mit MatchCase
s1:=DSTags.DataSet.FieldByName('Name').asString;
S2:=FindDialog.FindText;
end
else
begin
// Vergleich ohne MatchCase
s1:=AnsiUpperCase(DSTags.DataSet.FieldByName('Name').asString);
s2:=AnsiUpperCase(FindDialog.FindText);
end;
until (DSTags.DataSet.Bof AND NOT (frDown in FindDialog.Options))
OR (DSTags.DataSet.Eof AND (frDown in FindDialog.Options))
OR (AnsiPos(s2,s1)>0);
finally
DSTags.DataSet.EnableControls;
TVTags.Items[TVTags.SelectedIndex].expand(false);
DSDocTags.DataSet.EnableControls;
DSFolderTags.DataSet.EnableControls;
UpdateDocTabs(DSTags.DataSet);
end;
end;
Die Treeview hängt an DSTags.
Ich benutze die ZEOS-Tabellen und die TjvDBTreeView. Die Tabelle ist gefiltert (Filtered:=true, OnFilterRecord setzt entsprechend Accept). Die Treeview zeigt nur einen bestimmten Zweig an (eingestellt über StartMasterValue - dies entspricht der Filterbedingung).
Eine Idee wäre die Suche in den Items der TreeView, das hab ich aber auch nicht hinbekommen, da die Funktionen wie GetNextNode oder so nicht vorhanden sind.
Ich bin überrascht, dass ich dieses Thema über die Forensuche nicht gefunden habe. Kann jemand helfen?
Gruß Andreas