![]() |
Re: Node eindeutig identifizieren, JvPageListTreeView
Danke für Eure Antworten...
jedesmal bei Aufruf suchen... find ich nicht so prickelnd :( , obwohl das funktionieren würde. Ich werde mal eine Procedure mit einer case Anweisung probieren welche mir dann auf den entsprechenden Index "umleitet". Bei Änderungen am Tree muß ich dann nur die eine case Anweisung ergänzen / ändern. bis bald... :hi: |
Re: Node eindeutig identifizieren, JvPageListTreeView
Zitat:
|
Re: Node eindeutig identifizieren, JvPageListTreeView
Zitat:
|
Re: Node eindeutig identifizieren, JvPageListTreeView
Aus der Online-Hilfe zu GetNextSibling: Returns the next node in the tree view at the same level as the calling node. Ich gehe Anhand der Anzahl der Einträge jeden Eintrag durch. |
Re: Node eindeutig identifizieren, JvPageListTreeView
Zitat:
|
Re: Node eindeutig identifizieren, JvPageListTreeView
Ich habe das "Problemchen" zwar schon im Griff aber mich würde das trotzdem interressieren... :wink:
Zitat:
:?: was für ein Objekt würdest du dort hinterlegen ? :?: wie würdest du über das Objekt den entsprechenden Node per Quellcode selektieren ? :hi: |
Re: Node eindeutig identifizieren, JvPageListTreeView
Zitat:
Zitat:
|
Re: Node eindeutig identifizieren, JvPageListTreeView
...nun ja, wenn ich mal viel Zeit habe. :P
...ich habe das nun so gelöst:
Delphi-Quellcode:
- die Seite bleibt gleich
procedure TDMallgemein.AufrufEinstellungen(Seite: Integer);
var TempIndex: Integer; begin case Seite of 1: TempIndex:= 0; //Allgemein 2: TempIndex:= 1; //Anlagenschema 3: TempIndex:= 8; //Filterart 4: TempIndex:= 9; //Filtergröße 5: TempIndex:= 10; //Filterqualität 6: TempIndex:= 2; //Anschlüsse 7: TempIndex:= 3; //Bezeichnungen Technische Daten 8: TempIndex:= 17; //Terminplaner 9: TempIndex:= 7; //externe Formulare 10: TempIndex:= 5; //Drucken 11: TempIndex:= 18; //Vorlagen Tätigkeiten 12: TempIndex:= 15; //Nummernkreise 13: TempIndex:= 14; //Monteure 14: TempIndex:= 13; //Lieferanten 15: TempIndex:= 11; //Hersteller 16: TempIndex:= 6; //Einheiten 17: TempIndex:= 19; //Wartungsart 18: TempIndex:= 16; //Serviceart 19: TempIndex:= 12; //Kältemittel 20: TempIndex:= 4; //Brandklassen end; FEinstellungen.JvPageListTreeView1.Items[TempIndex].Selected:= True; end; - nach Hinzufügen einer Einstellung per Quellcode (grundsätzlich manuell) brauche ich nur einmal den TempIndex anzupassen, da alle Aufrufe die Seite wählen. - eigentlich eine einfache Lösung. Zwar nicht ganz automatisch, aber ich habe die Änderungen nur an einer Stelle und nicht quer Beet durch die Unit´s. Trotzdem Danke und noch einen schönen Tag... :P |
Re: Node eindeutig identifizieren, JvPageListTreeView
Du hast also einen Baum, deren Knotenreihenfolge nicht eindeutig ist. Und du willst die Knoten irgendwie eindeutig identifizieren. Die 'Data'-Eigenschaft wurde schon genannt. Dort kommt eine eindeutige ID rein, die Du einmalig vergibst. Über die ID kannst Du den Knoten nun eindeutig identifizieren. Das man danach suchen muss, ist doch vollkommen egal, denn die paar Mikrosekunden merkt man eh nicht.
Wenn Dir das nicht passt, dann pflege eine zweite unsortierte Liste, in die die Knoten stehen. Der Index in dieser Liste (oder Array) ist dann deine ID. Wenn nun ein Knoten hinzukommt, wird dieser ans Ende der Liste gepackt und bekommt dadurch wieder eine eindeutige ID (Index in die Liste). Zugriff über 'KnotenListe[IdxAllgemeineEinstellungen]'. |
Re: Node eindeutig identifizieren, JvPageListTreeView
hmmm... irgendwie habe ich das Gefühl daß wir uns mißverstehen.
Zitat:
Delphi-Quellcode:
- wenn ich mit der Maus oder mit der Tastatur durch den Tree navigiere habe ich zu jeder Zeit den NODE, dessen Index und andere Eigenschaften ( wie Data) verfügbar.
JvPageListTreeView.Items.Item[Index].Data
- da ich aber ohne Tastatur und Maus einen bestimmten Knoten selektieren muß und der Index "eigentlich" nicht bekannt bzw. durch die Sortierung nicht eindeutig ist suchte ich nach einer anderen Möglichkeit der Selektierung. Mehrere Varianten kommen wie genannt in Frage: - eine 2. Liste entsprechend mitführen - meine Variante mit der case Anweisung - jedesmal den gesamten Tree nach dem Text durchsuchen und den Node oder dessen Index auswerten. Fazit: - nach Text suchen fand ich auch zu unflexibel, wenn sich die Texte im Tree mal ändern sollten. - die case Anweisung fand ich nach meiner Überlegung am einfachsten zu pflegen bzw. anzupassen, da die Änderungen an einer Stelle im Quelltext erfolgen. ...alle Klarheiten beseitigt ? :P Danke für Eure Mithilfe. :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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