AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Node eindeutig identifizieren, JvPageListTreeView
Thema durchsuchen
Ansicht
Themen-Optionen

Node eindeutig identifizieren, JvPageListTreeView

Ein Thema von haentschman · begonnen am 24. Dez 2008 · letzter Beitrag vom 25. Dez 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#11

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 18:02
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...
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 18:22
Zitat von haentschman:
hatte ich auch schon im Sinn, aber nur der TreeView als gesamtes hat einen Tag. Die Nodes selbst haben keine Eigenschaften, welche ich mißbrauchen könnte.
Nutzt diese Komponente etwas anderes als ein TTreeNode für die Nodes? Jedes TTreeNode hat nämlich die Eigenschaft Data, die genau dafür da ist. Da kannst du auch problemlos ein Objekt direkt drin speichern, denn das ist ja eigentlich nichts anderes als ein Pointer.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 19:11
Zitat von RWarnecke:
Deine Funktion macht aber igrgendwie nicht das was meine macht.
ja? Meine Tests ergaben genau das selbe Verhalten. Wo ist denn dort ein Unterschied in der Funktionalität?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#14

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 19:22
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 19:44
Zitat von RWarnecke:
Ich gehe Anhand der Anzahl der Einträge jeden Eintrag durch.
Nichts anderes macht getNextSibling, siehe dazu auch GetFirstChild.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#16

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 20:16
Ich habe das "Problemchen" zwar schon im Griff aber mich würde das trotzdem interressieren...
Zitat:
Jedes TTreeNode hat nämlich die Eigenschaft Data, die genau dafür da ist. Da kannst du auch problemlos ein Objekt direkt drin speichern
ein paar Fragen dazu:
was für ein Objekt würdest du dort hinterlegen ?
wie würdest du über das Objekt den entsprechenden Node per Quellcode selektieren ?

  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#17

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 21:34
Zitat von haentschman:
ein paar Fragen dazu:
was für ein Objekt würdest du dort hinterlegen ?
Das hängt natürlich davon ab, was für eine Struktur du auf dem Baum abbildest. Speicher das Objekt ab, das in der Struktur dem Knoten entspricht.

Zitat:
wie würdest du über das Objekt den entsprechenden Node per Quellcode selektieren ?
Kommt darauf an, ob der Knoten nach der Umsortierung immer noch der gleiche ist, er also ncith zwischenzeitlich freigegeben wird o.ä. Wenn ja, würde ich einfach in dem Datenobjekt wiederum eine Referenz auf den Knoten abspeichern. Wenn nicht, bleibt wohl wirklich nichts anderes übrig, als den ganzen Baum per Schleife durchzugehen und den Knoten zu suchen.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#18

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 21:52
...nun ja, wenn ich mal viel Zeit habe.
...ich habe das nun so gelöst:
Delphi-Quellcode:
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;
- die Seite bleibt gleich
- 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...
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 22:00
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]'.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#20

Re: Node eindeutig identifizieren, JvPageListTreeView

  Alt 24. Dez 2008, 23:37
hmmm... irgendwie habe ich das Gefühl daß wir uns mißverstehen.
Zitat:
Die 'Data'-Eigenschaft wurde schon genannt. Dort kommt eine eindeutige ID rein, die Du einmalig vergibst.
...dümmlich ist nur, daß man an die Data Eigenschaft nur dran kommt, wenn man den Index des Knotens kennt.
JvPageListTreeView.Items.Item[Index].Data - 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.
- 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 ?

Danke für Eure Mithilfe.

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:45 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