AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nodes mit Daten (TTreeNodeEx) durchsuchen

Ein Thema von Opa Knack · begonnen am 19. Dez 2013 · letzter Beitrag vom 20. Dez 2013
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

Nodes mit Daten (TTreeNodeEx) durchsuchen

  Alt 19. Dez 2013, 02:09
Hallo,

ich habe ein Treeview, dessen Nodes ich mit Daten versehen habe (allgemein meist als TTreeNodeEx bezeichnet).

Nun stehe ich vor dem Problem, dass ich nach eben diesen Daten suchen möchte. Klar wäre es ganz einfach mit

Delphi-Quellcode:
for i := 0 to treeview.Items.Count-1 do
   if((treeview.Items[i]) as TTreeNodeEx.Eintrag1 = Auswahlkriterium) then {mach irgendwas}
umzusetzen, jedoch kann "Eintrag1" (was natürlich nur ein Platzhalter ist, im Code werde ich dann schon ein wenig spezifischer) variieren, so dass das Kriterium auch in Eintrag2, Eintrag3, ... gesucht werden könnte.

Je nach Gegebenheit möchte ich der Funktion also übergeben, in welchem Datenbereich (ist das eigentlich einer, oder ist das eine Subklasse?) sie nach was suchen soll (also z. B. "Suche xy in Eintrag1" oder "Suche xy in Eintrag2").

Die einfachste Lösung wäre natürlich, dafür eine Weiche zu schreiben und die obige Suche einfach x-mal für die verschiedenen Bereiche einzubinden. Das wäre aber ziemlich unelegant und sicherlich unnötig.

Meine Frage ist nun: Wie kann ich diese Bereiche direkt ansprechen (also nach dem Motto "Node.(Bereich)")?

Vielen Dank und gute Nacht
Opa
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Nodes mit Daten (TTreeNodeEx) durchsuchen

  Alt 19. Dez 2013, 07:39
Das geht entweder mit RTTI-Informationen. Aber eine Klasse, die es erlaubt, in ihren Daten zu suchen, sollte eine solche Methode bereitstellen. Wie das intern gelöst ist, ist dann ja zweitrangig. So wäre das imho am einfachsten umzusetzen.

Reflection geht natürlich auch (ach, in Delphi heißt das ja irgendwie RTTI o.ä.)

Delphi-Quellcode:
Procedure TMyTreeData.Search (aText : String; aNode : TNodeType) : Boolean;
Begin
  case aNode of
    Eintrag1 : result := Eintrag1=aText;
    Eintrag2 : result := Eintrag2=aText;
    ...
  end
end;
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Nodes mit Daten (TTreeNodeEx) durchsuchen

  Alt 19. Dez 2013, 09:24
spendiere deiner Klasse TTreeNodeEx doch eine Methode SearchAll():
Delphi-Quellcode:
function TTreeNodeEx.SearchAll(const s:string):Boolean;
begin
  Result := (Eintrag1=s) or (Eintrag2=s) or (IntToStr(Eintrag3)=s);
end;


for i := 0 to treeview.Items.Count-1 do
   if ((treeview.Items[i]) as TTreeNodeEx).SearchAll(Auswahlkriterium) then {mach irgendwas}
Falls du mehrere Klassen von TTreeNodeEx abgeleitet hast machst du die Suchfunktion eben virtuell.
fork me on Github
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#4

AW: Nodes mit Daten (TTreeNodeEx) durchsuchen

  Alt 20. Dez 2013, 01:28
Super, ich danke euch.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 04:58 Uhr.
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