Einzelnen Beitrag anzeigen

Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#1

DBTreeView-Knoten nach Datensatzänderung anzeigen

  Alt 2. Feb 2007, 11:10
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
  Mit Zitat antworten Zitat